diff options
Diffstat (limited to 'readline')
91 files changed, 4396 insertions, 57317 deletions
diff --git a/readline/CHANGELOG b/readline/CHANGELOG index b6499c3..350defa 100644 --- a/readline/CHANGELOG +++ b/readline/CHANGELOG @@ -697,224 +697,3 @@ doc/Makefile.in - new maybe-clean target that removes the generated documentation if the build directory differs from the source directory - distclean target now depends on maybe-clean - - 7/17 - ---- -[readline-4.3 released] - - 7/18 - ---- -shlib/Makefile.in - - fix bad dependency: text.so: terminal.c, make it depend on text.c - - 8/7 - --- -support/shlib-install - - break `linux' out into its own stanza: it seems that linux - distributions are all moving to the following scheme: - - libreadline.so.4.3 installed version - libreadline.so.4 -> libreadline.so.4.3 symlink - libreadline.so -> libreadline.so.4 symlink - - 10/29 - ----- -support/shlib-install - - change INSTALL_LINK[12] to use `&&' instead of `;' so it only - tries the link if the cd succeeds; put ${echo} in there, too - - use $LN instead of `ln -s' so it works on machines without symlinks - - change special linux stanza to use cd before ln also - - change to use $INSTALL_LINK1 and $INSTALL_LINK2 appropriately - instead of explicit commands in various stanzas - - 2/1 - --- -config.h.in - - add HAVE_MBRTOWC and HAVE_MBRLEN - - add NO_MULTIBYTE_SUPPORT for new configure argument - - add STDC_HEADERS - -configure.in - - new argument --enable-multibyte (enabled by default), allows - multibyte support to be turned off even on systems that support it - - add check for ansi stdc headers with call to AC_HEADER_STDC - - 2/3 - --- -configure.in - - add call to BASH_FUNC_CTYPE_NONASCII - -config.h.in - - add CTYPE_NON_ASCII - - 2/20 - ---- - -doc/manvers.texinfo - - renamed to version.texi to match other GNU software - - UPDATE-MONTH variable is now `UPDATED-MONTH' - -doc/{hist,rlman,rluserman}.texinfo - - include version.texi - -doc/{rltech,rluser,hstech,hsuser}.texi - - changed the suffix from `texinfo' to `texi' - -doc/Makefile.in - - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi - -doc/{rlman,rluserman}.texinfo - - changed the suffix from `texinfo' to `texi' - -doc/hist.texinfo - - renamed to history.texi to be more consistent - - 6/11 - ---- -shlib/Makefile.in - - have configure substitute value of `@LDFLAGS@' into the assignment - to SHLIB_XLDFLAGS - - 6/16 - ---- -configure.in - - readline and history libraries are now at version 5.0 - - 8/18 - ---- -support/shlib-install - - support for FreeBSD-gnu (from Robert Millan) - - 12/4 - ---- -Makefile.in - - add variables for localedir and the PACKAGE_* variables, auto-set - by configure - - 12/9 - ---- -Makefile.in - - use mkinstalldirs instead of mkdirs - - 4/22 - ---- -Makefile.in - - separate doc install/uninstall out into two new targets: - install-doc and uninstall-doc - - make install-doc and uninstall-doc prerequisites of appropriate - install and uninstall targets - -examples/rl-fgets.c - - new example from Harold Levy that wraps fgets replacement functions - that call readline in a shared library that can be interposed with - LD_PRELOAD - - 7/27 - ---- -[readline-5.0 released] - - 11/15 - ----- -examples/rlfe/{ChangeLog,Makefile.in,README,config.h.in,configure,configure.in,extern.h,os.h,pty.c,rlfe.c,screen.h} - - new version of rlfe, rlfe-0.4, from Per Bothner; now a standalone - application - - 11/16 - ----- -shlib/Makefile.in - - substitute TERMCAP_LIB in from configure - -configure.in - - if SHLIB_LIBS doesn't include a termcap library (curses, ncurses, - termcap, termlib), append the value of $TERMCAP_LIB to it - - 11/30 - ----- -configure.in - - take out change from 11/16; it doesn't work for some systems (e.g., - SunOS 4.x and Solaris 2.6) - - add support for --enable-purify configure argument - - pass TERMCAP_LIB in environment when calling shobj-conf - -examples/Makefile.in - - add support for building examples with purify - - 1/23/2005 - --------- -configure.in - - set BUILD_DIR to contain backslashes to escape any spaces in the - directory name -- this is what make will accept in targets and - prerequisites, so it's better than trying to use double quotes - - 2/25 - ---- -configure.in - - change check for sys/ptem.h to include sys/stream.h if present, to - avoid the `present but cannot be compiled' messages on Solaris and - SVR4.2 (does anyone still use SVR4.2?) - - 5/7 - --- -configure.in - - add cross-compiling support from the bash configure.in, which cygwin - and mingw have apparently adopted - - add check for pwd.h, fcntl.h - - add checks for fcntl, kill system calls - - add checks for getpw{ent,nam,uid} C library functions - - pass a compile-time option through to Makefiles if cross-compiling - -config.h.in - - add HAVE_PWD_H for <pwd.h>, HAVE_FCNTL_H for <fcntl.h> - - add HAVE_FCNTL, HAVE_KILL for respective system calls - - add HAVE_GETPW{ENT,NAM,UID} for passwd functions - -Makefile.in,shlib/Makefile.in - - @CROSS_COMPILE@ is substituted into DEFS (equal to -DCROSS_COMPILING - if bash is being cross-compiled) - - 8/2 - --- -examples/Makefile.in - - use $(READLINE_LIB) instead of -lreadline to get around MacOS X 10.4's - preference for (incompatible) shared libraries over static libraries - in the load path - - 8/11 - ---- -support/shobj-conf - - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults - to `lib' - - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library - version number - - new variable: SHLIB_DOT, separator character between library name and - suffix and version information (defaults to `.') - - new stanza for cygwin to generate windows-compatible dll - -support/shlib-install - - add new option `-b bindir' for systems like cygwin/windows that - require it - - new stanza for cygwin that installs a dll into $bindir and an implied - link library into $libdir - -configure.in - - substitute new variables from shobj-conf - -shlib/Makefile.in - - substitute bindir, SHLIB_DOT, SHLIB_LIBPREF, SHLIB_DLLVERSION from - configure - - pass `-b $(bindir)' to shlib-install for install and uninstall targets - - library names now use $SHLIB_LIBPREF and $SHLIB_DOT - -INSTALL,README - - document new SHLIB_DOT, SHLIB_LIBPREF, and SHLIB_DLLVERSION variables - - 10/4 - ---- -[readline-5.1-beta1 frozen] - - 12/1 - ---- -configure.in - - changed release status to `release' - -[readline-5.1 frozen] diff --git a/readline/CHANGES b/readline/CHANGES index 1ba0c12..bc9fe94 100644 --- a/readline/CHANGES +++ b/readline/CHANGES @@ -1,312 +1,3 @@ -This document details the changes between this version, readline-5.1, -and the previous version, readline-5.0. - -1. Changes to Readline - -a. Fixed a bug that caused multiliine prompts to be wrapped and displayed - incorrectly. - -b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current - line correctly. - -c. Fixed a problem in computing the number of invisible characters on the first - line of a prompt whose length exceeds the screen width. - -d. Fixed vi-mode searching so that failure preserves the current line rather - than the last line in the history list. - -e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at - end-of-line when manipulating multibyte characters. - -f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at - end-of-line when manipulating multibyte characters. - -g. Fixed multiple bugs in the redisplay of multibyte characters: displaying - prompts longer than the screen width containing multibyte characters, - -h. Fix the calculation of the number of physical characters in the prompt - string when it contains multibyte characters. - -i. A non-zero value for the `rl_complete_suppress_append' variable now causes - no `/' to be appended to a directory name. - -j. Fixed forward-word and backward-word to work when words contained - multibyte characters. - -k. Fixed a bug in finding the delimiter of a `?' substring when performing - history expansion in a locale that supports multibyte characters. - -l. Fixed a memory leak caused by not freeing the timestamp in a history entry. - -m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting - of the `convert-meta' variable. - -n. Fixed saving and restoring primary prompt when prompting for incremental - and non-incremental searches; search prompts now display multibyte - characters correctly. - -o. Fixed a bug that caused keys originally bound to self-insert but shadowed - by a multi-character key sequence to not be inserted. - -p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't - dereferenced if NULL (matching the documentation). - -q. Extensive changes to readline to add enough state so that commands - requiring additional characters (searches, multi-key sequences, numeric - arguments, commands requiring an additional specifier character like - vi-mode change-char, etc.) work without synchronously waiting for - additional input. - -r. Lots of changes so readline builds and runs on MinGW. - -s. Readline no longer tries to modify the terminal settings when running in - callback mode. - -t. The Readline display code no longer sets the location of the last invisible - character in the prompt if the \[\] sequence is empty. - -u. The `change-case' command now correctly changes the case of multibyte - characters. - -v. Changes to the shared library construction scripts to deal with Windows - DLL naming conventions for Cygwin. - -w. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed - SIGWINCH. - -x. Fixed the non-incremental search code in vi mode to dispose of any current - undo list when copying a line from the history into the current editing - buffer. - -y. Fixed a bug that caused reversing the incremental search direction to - not work correctly. - -z. Fixed the vi-mode `U' command to only undo up to the first time insert mode - was entered, as Posix specifies. - -aa. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong - place. - -bb. Fixed a redisplay bug caused by moving the cursor vertically to a line - with invisible characters in the prompt in a multibyte locale. - -cc. Fixed a bug that could cause the terminal special chars to be bound in the - wrong keymap in vi mode. - -2. New Features in Readline - -a. The key sequence sent by the keypad `delete' key is now automatically - bound to delete-char. - -b. A negative argument to menu-complete now cycles backward through the - completion list. - -c. A new bindable readline variable: bind-tty-special-chars. If non-zero, - readline will bind the terminal special characters to their readline - equivalents when it's called (on by default). - -d. New bindable command: vi-rubout. Saves deleted text for possible - reinsertion, as with any vi-mode `text modification' command; `X' is bound - to this in vi command mode. - -e. If the rl_completion_query_items is set to a value < 0, readline never - asks the user whether or not to view the possible completions. - -f. The `C-w' binding in incremental search now understands multibyte - characters. - -g. New application-callable auxiliary function, rl_variable_value, returns - a string corresponding to a readline variable's value. - -h. When parsing inputrc files and variable binding commands, the parser - strips trailing whitespace from values assigned to boolean variables - before checking them. - -i. A new external application-controllable variable that allows the LINES - and COLUMNS environment variables to set the window size regardless of - what the kernel returns. - -------------------------------------------------------------------------------- -This document details the changes between this version, readline-5.0, -and the previous version, readline-4.3. - -1. Changes to Readline - -a. Fixes to avoid core dumps because of null pointer references in the - multibyte character code. - -b. Fix to avoid infinite recursion caused by certain key combinations. - -c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly. - -d. Readline no longer tries to read ahead more than one line of input, even - when more is available. - -e. Fixed the code that adjusts the point to not mishandle null wide - characters. - -f. Fixed a bug in the history expansion `g' modifier that caused it to skip - every other match. - -g. Fixed a bug that caused the prompt to overwrite previous output when the - output doesn't contain a newline and the locale supports multibyte - characters. This same change fixes the problem of readline redisplay - slowing down dramatically as the line gets longer in multibyte locales. - -h. History traversal with arrow keys in vi insertion mode causes the cursor - to be placed at the end of the new line, like in emacs mode. - -i. The locale initialization code does a better job of using the right - precedence and defaulting when checking the appropriate environment - variables. - -j. Fixed the history word tokenizer to handle <( and >( better when used as - part of bash. - -k. The overwrite mode code received several bug fixes to improve undo. - -l. Many speedups to the multibyte character redisplay code. - -m. The callback character reading interface should not hang waiting to read - keyboard input. - -n. Fixed a bug with redoing vi-mode `s' command. - -o. The code that initializes the terminal tracks changes made to the terminal - special characters with stty(1) (or equivalent), so that these changes - are reflected in the readline bindings. New application-callable function - to make it work: rl_tty_unset_default_bindings(). - -p. Fixed a bug that could cause garbage to be inserted in the buffer when - changing character case in vi mode when using a multibyte locale. - -q. Fixed a bug in the redisplay code that caused problems on systems - supporting multibyte characters when moving between history lines when the - new line has more glyphs but fewer bytes. - -r. Undo and redo now work better after exiting vi insertion mode. - -s. Make sure system calls are restarted after a SIGWINCH is received using - SA_RESTART. - -t. Improvements to the code that displays possible completions when using - multibyte characters. - -u. Fixed a problem when parsing nested if statements in inputrc files. - -v. The completer now takes multibyte characters into account when looking for - quoted substrings on which to perform completion. - -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. - -y. Some changes to the display code to improve display and redisplay of - multibyte characters. - -z. Changes to speed up the multibyte character redisplay code. - -aa. Fixed a bug in the vi-mode `E' command that caused it to skip over the - last character of a word if invoked while point was on the word's - next-to-last character. - -bb. Fixed a bug that could cause incorrect filename quoting when - case-insensitive completion was enabled and the word being completed - contained backslashes quoting word break characters. - -cc. Fixed a bug in redisplay triggered when the prompt string contains - invisible characters. - -dd. Fixed some display (and other) bugs encountered in multibyte locales - when a non-ascii character was the last character on a line. - -ee. Fixed some display bugs caused by multibyte characters in prompt strings. - -ff. Fixed a problem with history expansion caused by non-whitespace characters - used as history word delimiters. - -gg. Fixed a problem that could cause readline to refer to freed memory when - moving between history lines while doing searches. - -hh. Improvements to the code that expands and displays prompt strings - containing multibyte characters. - -ii. Fixed a problem with vi-mode not correctly remembering the numeric argument - to the last `c'hange command for later use with `.'. - -jj. Fixed a bug in vi-mode that caused multi-digit count arguments to work - incorrectly. - -kk. Fixed a problem in vi-mode that caused the last text modification command - to not be remembered across different command lines. - -ll. Fixed problems with changing characters and changing case at the end of - the line. - -mm. Fixed a problem with readline saving the contents of the current line - before beginning a non-interactive search. - -nn. Fixed a problem with EOF detection when using rl_event_hook. - -oo. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric - arguments. - -2. New Features in Readline - -a. History expansion has a new `a' modifier equivalent to the `g' modifier - for compatibility with the BSD csh. - -b. History expansion has a new `G' modifier equivalent to the BSD csh `g' - modifier, which performs a substitution once per word. - -c. All non-incremental search operations may now undo the operation of - replacing the current line with the history line. - -d. The text inserted by an `a' command in vi mode can be reinserted with - `.'. - -e. New bindable variable, `show-all-if-unmodified'. If set, the readline - completer will list possible completions immediately if there is more - than one completion and partial completion cannot be performed. - -f. There is a new application-callable `free_history_entry()' function. - -g. History list entries now contain timestamp information; the history file - functions know how to read and write timestamp information associated - with each entry. - -h. Four new key binding functions have been added: - - rl_bind_key_if_unbound() - rl_bind_key_if_unbound_in_map() - rl_bind_keyseq_if_unbound() - rl_bind_keyseq_if_unbound_in_map() - -i. New application variable, rl_completion_quote_character, set to any - quote character readline finds before it calls the application completion - function. - -j. New application variable, rl_completion_suppress_quote, settable by an - application completion function. If set to non-zero, readline does not - attempt to append a closing quote to a completed word. - -k. New application variable, rl_completion_found_quote, set to a non-zero - value if readline determines that the word to be completed is quoted. - Set before readline calls any application completion function. - -l. New function hook, rl_completion_word_break_hook, called when readline - needs to break a line into words when completion is attempted. Allows - the word break characters to vary based on position in the line. - -m. New bindable command: unix-filename-rubout. Does the same thing as - unix-word-rubout, but adds `/' to the set of word delimiters. - -n. When listing completions, directories have a `/' appended if the - `mark-directories' option has been enabled. - -------------------------------------------------------------------------------- This document details the changes between this version, readline-4.3, and the previous version, readline-4.2a. diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb new file mode 100644 index 0000000..863beca --- /dev/null +++ b/readline/ChangeLog.gdb @@ -0,0 +1,1331 @@ +2006-03-21 Denis Pilat <denis.pilat@st.com> + + * histfile.c (read_history_range): Remove '\r' character from + history lines. + +2005-02-10 Denis Pilat <denis.pilat@st.com> + + * readline/terminal.c (_rl_get_screen_size): Get console size from + the Windows API when compiling with MinGW. + +2005-07-25 Mark Mitchell <mark@codesourcery.com> + + * input.c (rl_getc): Use getch to read console input on + Windows. + * readline.c (bind_arrow_keys_internal): Translate + Windows keysequences into ANSI key sequences. + * rldefs.h (NO_TTY_DRIVER): Define on MinGW. + * rltty.c: Conditionalize on NO_TTY_DRIVER throughout. + +2005-07-03 Mark Kettenis <kettenis@gnu.org> + + From Martin Simmons: + * configure.in: Check for getpwnam instead of getpwname. + * configure: Regenerate. + +2005-05-09 Mark Mitchell <mark@codesourcery.com> + + * aclocal.m4: Use AC_TRY_LINK to check for mbstate_t. + * complete.c (pwd.h): Guard with HAVE_PWD_H. + (getpwent): Guard with HAVE_GETPWENT. + (rl_username_completion_function): Guard use of getpwent. + (endpwent): Likewise. + * config.h.in (HAVE_FCNTL): New macro. + (HAVE_GETPWENT): Likewise. + (HAVE_GETPWNAM): Likewise. + (HAVE_GETPWUID): Likewise. + (HAVE_KILL): Likewise. + (HAVE_PWD_H): Likewise. + * configure: Regenerated. + * configure.in: Handle MinGW when cross compiling. Check for + getpwnam, getpwent, getpwuid, kill, and pwd.h. + * display.c (rl_clear_screen): Treat Windows like DOS. + (insert_some_chars): Likewise. + (delete_chars): Likewise. + * shell.c (pwd.h): Guard with HAVE_PWD_H. + (getpwuid): Guard with HAVE_GETPWUID. + (sh_unset_nodelay_mode): Guard use of fnctl with HAVE_FNCTL_H. + * signals.c (rl_signal_handler): Don't use SIGALRM or + SIGQUIT if not defined. Use "raise" if "kill" is not available. + (rl_set_signals): Don't set handlers for SIGQUIT or SIGALRM if + they are not defined. + (rl_clear_signals): Likewise. + * tilde.c (pwd.h): Guard with HAVE_PWD_H. + (getpwuid): Guard declaration with HAVE_GETPWUID. + (getpwnam): Guard declaration with HAVE_GETPWNAM. + (tilde_expand_word): Guard use of getpwnam with HAVE_GETPWNAM. + +2004-02-19 Andrew Cagney <cagney@redhat.com> + + * config.guess: Update from version 2003-06-12 to 2004-02-16. + * config.sub: Update from version 2003-06-13 to 2004-02-16. + +2004-01-27 Elena Zannoni <ezannoni@redhat.com> + + Merge in official patches to readline-4.3 from + ftp://ftp.cwru.edu/pub/bash/readline-4.3-patches: + NOTE: Patch-ID readline-43-004 was already applied (see below). + + * bind.c (rl_generic_bind): Pressing certain key sequences + causes an infinite loop in _rl_dispatch_subseq with the `key' argument + set to 256. This eventually causes bash to exceed the stack size + limit and crash with a segmentation violation. + Patch-ID: readline43-001. + + * readline.c (_rl_dispatch_subseq): Repeating an edit in + vi-mode with `.' does not work. + Patch-ID: readline43-002. + + * mbutil.c (_rl_get_char_len, _rl_compare_chars, + _rl_adjust_point): When in a locale with multibyte characters, the + readline display updater will occasionally cause a + segmentation fault when attempting to compute the length of the first + multibyte character on the line. + Patch-ID: readline43-003. + + * vi_mode.c (_rl_vi_change_mbchar_case): Using the vi editing + mode's case-changing commands in a locale with multibyte characters + will cause garbage characters to be inserted into the editing buffer. + Patch-ID: readline43-005. + +2003-12-28 Eli Zaretskii <eliz@elta.co.il> + + * readline.c (rl_save_state, rl_restore_state): Support systems + that don't define SIGWINCH. + +2003-12-25 Eli Zaretskii <eliz@elta.co.il> + + * terminal.c (_rl_get_screen_size) [__DJGPP__]: Compute the + screen width and height using console I/O. + (_rl_init_terminal_io) [__MSDOS__]: Zero out all the _rl_term_* + variables. Convert to _rl_* naming scheme. + (_rl_set_cursor) [__MSDOS__]: Ifdef away this function. + +2003-12-23 Eli Zaretskii <eliz@elta.co.il> + + * display.c (_rl_move_vert) [__MSDOS__]: Don't use undeclared + variable `l'. Use `delta' instead recomputing its value anew. + Assign -delta to i instead of the other way around. + +2003-12-11 Michael Chastain <mec.gnu@mindspring.com> + + * rlmbutil.h: Require HAVE_MBSTATE_T for HANDLE_MULTIBYTE. + Revert requirement of HAVE_MBRTOWC. Delete macro definitions + that attempted to fake mbstate_t if HAVE_MBSRTOCWS is defined + and HAVE_MBSTATE_T is not defined. + +2003-06-14 H.J. Lu <hongjiu.lu@intel.com> + + * support/config.guess: Update to 2003-06-12 version. + * support/config.sub: Update to 2003-06-13 version. + +2003-05-25 Mark Kettenis <kettenis@gnu.org> + + * aclocal.m4: Don't add wcwidth.o if we don't have wchar.h. + * configure: Regenerate. + +2003-05-13 Andreas Jaeger <aj@suse.de> + + * support/config.guess: Update to 2003-05-09 version. + * support/config.sub: Update to 2003-05-09 version. + +2003-03-03 Joel Brobecker <brobecker@gnat.com> + + * aclocal.m4: Add check for mbrtowc. + * config.h.in: Regenerate. + * configure: Regenerate. + * rlmbutil.h: Disable multi-byte if mbrtowc is not defined. + +2003-03-03 Kris Warkentin <kewarken@qnx.com> + + * aclocal.m4: Cause wcwidth check to substitute + HAVE_WCWIDTH for building. + * Makefile.in: Add wcwidth object to lib if required. + * shlib/Makefile.in: Likewise. + * configure: Regenerate. + +2003-01-09 Michael Chastain <mec@shout.net> + + From Chet Ramey, <chet@po.cwru.edu>, the readline maintainer: + ftp://ftp.cwru.edu/pub/bash/readline-4.3-patches/readline43-004 + + * display.c: Fix perverse screen refresh with UTF-8. + When running in a locale with multibyte characters, the + readline display updater will use carriage returns when + drawing the line, overwriting any partial output already on + the screen and not terminated by a newline. + Patch-ID: readline43-004 + +2003-01-08 Chris Demetriou <cgd@broadcom.com> + + * config.guess: Update to 2003-01-03 version. + * config.sub: Update to 2003-01-03 version. + +2002-12-16 Christopher Faylor <cgf@redhat.com> + + * configure.in: Remove --enable-shared option. It shouldn't be used + for gdb. + * configure: Regenerate. + +2002-12-16 Christopher Faylor <cgf@redhat.com> + + * config/cygwin.cache: Prime mbstate_t. + +2002-12-06 Elena Zannoni <ezannoni@redhat.com> + + Import of readline 4.3. NB: This import includes those gdb + local changes that aren't in the official readline sources. + + * compat.c, mbutil.c, misc.c, rlmbutil.h, rltypedefs.h, + text.c, doc/history.0, doc/history.3, support/wcwidth.c, + examples/readlinebuf.h, examples/rlcat.c: New files. + + * CHANGELOG, CHANGES, INSTALL, MANIFEST, Makefile.in, README, + aclocal.m4, ansi_stdlib.h, bind.c, callback.c, chardefs.h, + complete.c, config.h.in, configure, configure.in, display.c, + emacs_keymap.c, funmap.c, histexpand.c, histfile.c, histlib.h, + history.c, history.h, histsearch.c, input.c, isearch.c, + keymaps.c, keymaps.h, kill.c, macro.c, nls.c, parens.c, + posixdir.h, readline.c, readline.h, rlconf.h, rldefs.h, + rlprivate.h, rlshell.h, rlstdc.h, rltty.c, savestring.c, + search.c, shell.c, signals.c, terminal.c, tilde.c, tilde.h, + undo.c, util.c, vi_keymap.c, vi_mode.c, xmalloc.c, xmalloc.h, + doc/Makefile.in, doc/hist.texinfo, doc/hstech.texinfo, + doc/hsuser.texinfo, doc/manvers.texinfo, doc/readline.3, + doc/rlman.texinfo, doc/rltech.texinfo, doc/rluser.texinfo + doc/rluserman.texinfo, doc/texi2dvi, doc/texi2html, + shlib/Makefile.in, support/install.sh, support/mkdirs, + support/mkdist, support/shlib-install, support/shobj-conf, + examples/Inputrc, examples/Makefile.in, examples/fileman.c, + examples/histexamp.c, examples/manexamp.c, examples/rl.c, + examples/rlfe.c, examples/rltest.c, examples/rlversion.c: + Modified files. + +2002-08-23 Andrew Cagney <ac131313@redhat.com> + + * support/config.guess: Import version 2002-08-23. + * support/config.sub: Import version 2002-08-22. + +2002-07-19 Chris Demetriou <cgd@broadcom.com> + + * support/config.guess: Update from ../config.guess. + * support/config.sub: Update from ../config.sub. + +2002-02-24 Elena Zannoni <ezannoni@redhat.com> + + * ChangeLog.gdb: Renamed from ChangeLog.Cygnus. + +2002-02-24 Daniel Jacobowitz <drow@mvista.com> + + * support/config.guess: Import from master sources, rev 1.232. + * support/config.sub: Import from master sources, rev 1.246. + +2002-02-01 Ben Elliston <bje@redhat.com> + + * config.guess: Import from master sources, rev 1.229. + * config.sub: Import from master sources, rev 1.240. + +2002-01-17 H.J. Lu (hjl@gnu.org) + + * support/config.guess: Import from master sources, rev 1.225. + * support/config.sub: Import from master sources, rev 1.238. + +2001-07-20 Andrew Cagney <ac131313@redhat.com> + + * support/config.guess: Update using ../config.sub. + +2001-07-16 Andrew Cagney <ac131313@redhat.com> + + * support/config.sub: Update using ../config.sub. + +2001-06-15 Elena Zannoni <ezannoni@redhat.com> + + * configure.in: Add -fsigned-char to LOCAL_CFLAGS for Linux + running on the IBM S/390. + * configure: Ditto. + +2001-01-07 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * rltty.c (save_tty_chars): Fix compilation-stopping typo. + +2000-07-10 Eli Zaretskii <eliz@is.elta.co.il> + + * terminal.c (_rl_get_screen_size) [__DJGPP__]: Determine screen + size via DJGPP-specific calls. + (_rl_init_terminal_io) [__MSDOS__]: DJGPP-specific terminal + initialization. + (_rl_backspace) [__MSDOS__]: Don't call tputs. + (ding) [__MSDOS__]: Use DJGPP-specific calls to support visible + bell. + + * display.c (_rl_move_vert) [__MSDOS__]: Support cursor movement + upwards with DJGPP-specific calls. + (_rl_clear_to_eol) [__MSDOS__]: Don't call tputs. + (_rl_clear_screen) [__MSDOS__]: Support clear-screen with + DJGPP-specific calls. + (insert_some_chars) [__MSDOS__]: Don't call tputs. + (delete_chars) [__MSDOS__]: Don't call tputs. + +2000-07-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * Import of readline 4.1. + + Locally modified files: Makefile.in, configure.in, configure + (regenerated), config.h.in (regenerated), readline.h, rltty.c, + shell.c signals.c. + + Locally added files: acconfig.h, config/*, config.h.bot, + cross-build/*, doc/inc-hit.texinfo. + + New files: USAGE, rlprivate.h, rlshell.h, xmalloc.h. + +2000-03-16 Eli Zaretskii <eliz@is.elta.co.il> + + * support/shobj-conf: Shared libs are unsupported on MSDOS. + + * bind.c (_rl_read_file): Open files in binary mode. Strip CR + characters after reading the file. + (rl_re_read_init_file, rl_read_init_file): Allow for _inputrc on + DOS. + + * complete.c (username_completion_function): Don't bypass getpw* + function calls for DJGPP. + (Filename_completion_function): Handle d:foo/bar file names. + + * display.c (_rl_move_vert) [__GO32__]: fflush the stream, to make + sure cursor position is up to date. + (_rl_clear_screen) [__GO32__]: Clear screen and home the cursor. + (insert_some_characters, delete_characters) [__DJGPP__]: Don't use + memcpy. + + * histfile.c (read_history_range, history_truncate_file) + (history_do_write) [__MSDOS__]: Allow for underscore instead of + the leading dot in file names. + + * input.c: Don't use GO32-specific workarounds if HAVE_SELECT or + HAVE_TERMIOS_H are defined. + + * readline.c: Don't disable signals if __DJGPP__ is defined. + + * rltty.c: Don't disable signals and don't bypass termios code for + DJGPP (if HAVE_TERMIOS_H is defined). + + * signals.c: Don't disable signals for DJGPP. + + * terminal.c (_rl_get_screen_size) [__DJGPP__]: Initialize screen + dimensions. + (ding) [__DJGPP__]: Support visual bell. + +1999-08-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + From Philippe De Muyter <phdm@macqel.be> + * shell.c (stdio.h): File included, for definition of NULL. + * readline/rltty.c (get_tty_settings): Conditionalize + call to set_winsize on TIOGWINSZ. + +1999-07-30 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * Imported Readline 4.0. Integrated all the Cygnus + local changes since last import. + + New files: rlstdc.h, savestring.c, shlib directory, + doc/manvers.texinfo, examples/rlversion.c, + support/install-shlib, support/shobj-conf. + + Removed files: MANIFEST.doc, doc/inc-hist.texi. + +1999-07-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * acconfig.h: Fix typo: it's GWINSZ_IN_SYS_IOCTL, not + TIOCGWINSZ_IN_SYS_IOCTL. + + * config.h.in: Regenerate with autoheader. + +1999-04-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * ChangeLog.Cygnus: new file. It is the old Changelog. + * ChangeLog: removed. It was conflicting with CHANGELOG + on Windows. + +1999-04-22 Jason Molenda (jsm@bugshack.cygnus.com) + + * Makefile.in (install): Make comment about this change more explicit. + +1999-04-22 Jason Molenda (jsm@bugshack.cygnus.com) + + * Makefile.in (install): Don't install the final libreadline.a + or .h files. + +Tue Mar 23 10:56:08 1999 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + Patches from Robert Hoehne <robert.hoehne@gmx.net>: + + * display.c: Change some terminal calls to work on DJGPP. + * terminal.c: Likewise. + * Makefile.in: Remove . from the VPATH directive. + +Tue Mar 9 14:58:13 1999 Geoffrey Noer <noer@cygnus.com> + + * support/config.sub: Recognize cygwin*, not just cygwin32. + +Tue Feb 9 10:38:57 1999 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * configure.in: Do not use the ./support directory. + * configure: Regenerate. + +Wed Jan 6 12:24:19 1999 Christopher Faylor <cgf@cygnus.com> + + * configure.in: Use LOCAL_CFLAGS rather than CFLAGS for + searching libtermcap directory. + * configure: Regenerate. + +Thu Dec 31 12:07:01 1998 Christopher Faylor <cgf@cygnus.com> + + * configure.in: Search devo libtermcap directory for termcap.h + when compiling for cygwin. + * configure: Regenerated. + +1998-12-30 Michael Meissner <meissner@cygnus.com> + + * Makefile.in (install): Only try to copy libreadline.a and + libhistory.a if they exist. + +Tue Dec 29 23:49:20 1998 Christopher Faylor <cgf@cygnus.com> + + * cross-build/cygwin.cache: Add a couple more known settings. + * configure.in: Fix typo. + * configure: Regenerated. + +Tue Dec 29 18:11:28 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * cross-build: new directory. + + * cross-build/cygwin.cache: new file. Used for Cygwin cross builds. + + * configure.in: added tests for cross-build for Cygwin. + +1998-12-24 Jason Molenda (jsm@bugshack.cygnus.com) + + * Makefile.in: Add CYGNUS LOCAL comment. + * acconfig.h: Add missing defines. + * config.h.bot: Add missing content. + * configure, config.h.in: Regenerated. + +Wed Dec 23 16:21:41 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * Makefile.in: comment out the rule to rebuild configure by + running autoconf. + +Tue Dec 22 10:00:30 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * shell.c (savestring): ifdef'd it out. + + * Imported new version of Readline 2.2.1. Removed all the Cygnus + local changes. + + New files: acconfig.h, aclocal.m4, ansi_stdlib.h, callback.c, + config.h.in, configure, histexpand.c, histfile.c, histlib.h, + histsearch.c, input.c, kill.c, macro.c, nls.c, posixdir.h, + posixjmp.h, posixstat.h, rlconf.h, rltty.h, rlwinsize.h, shell.c, + tcap.h, terminal.c, undo.c, util.c, support directory. + + Removed files: sysdep*, config directory. + + +Fri Dec 4 15:25:41 1998 David Taylor <taylor@texas.cygnus.com> + + The following changes were made by Jim Blandy + <jimb@zwingli.cygnus.com> and David Taylor + <taylor@texas.cygnus.com> as part of a project to merge in changes + made by HP; HP did not create ChangeLog entries. + + * config/mp-enable-tui: New file. + (TUI_CFLAGS): Search devo's include directory, as long as we're + totally ruining modularity. + (INCLUDE_SRCDIR): New var. + (GDB_TUI_SRCDIR): Fix syntax error. + + * configure.in: Check the --enable-tui flag; if it's set, include + a makefile fragment that #defines TUI and adds the needed #include + directories. + (*-*-hpux*): New host; use sysdep-hpux.h. + + * Makefile.in (.c.o): Check the variable set in the makefile + fragment above. + + * display.c (term_goto): declare it. + (insert_some_chars): set it. + (delete_chars): set it. + + * readline.c: add tui include files surrounded by TUI. + (rl_reset): new function, move some of rl_abort functionality to + here. + (rl_abort): call rl_reset. + (rl_getc): tui changes. + (init_terminal_io): tui changes. + + * readline.h (tui_version, fputc_unfiltered, fputs_unfiltered, + tui_tputs): declare if TUI is defined. + + * rltty.c (prepare_terminal_settings): additional comment. + + * signals.c: add tui include files surrounded by TUI. move #if + and #endif to column 1 so HP's compiler will accept them. Remove + declaration of tuiDoAndReturnToTop since it's declared in tui.h. + (rl_handle_sigwinch): call tuiDoAndReturnToTop if TUI defined. + (rl_handle_sigwinch_on_clear): define if TUI defined. + (rl_set_signals): if TUI, avoid infinite recursion. + (rl_clear_signals): install rl_handle_sigwinch_on_clear. + + * sysdep-hpux.h: New file. + +Mon Nov 2 15:26:33 1998 Geoffrey Noer <noer@cygnus.com> + + * configure.in: Check cygwin* instead of cygwin32*. + +Tue Jul 28 09:43:27 1998 Jeffrey A Law (law@cygnus.com) + + * sysdep-hpux11.h: New file. + * configure.in (*-*-*-hpux11*): Use sysdep-hpux11.h. + +Thu Jul 23 17:48:21 1998 Ian Lance Taylor <ian@cygnus.com> + + * configure.bat: Remove obsolete file. + * examples/configure.bat: Remove obsolete file. + +Wed May 13 13:41:53 1998 Ian Lance Taylor <ian@cygnus.com> + + * sysdep-6irix.h: New file. + * configure.in (*-*-irix6*): New host; use sysdep-6irix.h. + + * Makefile.in (isearch.o, search.o): Depend upon sysdep.h. + (Makefile): Depend upon $(srcdir)/configure.in. + +Thu Apr 9 11:59:38 1998 Ian Dall (<Ian.Dall@dsto.defence.gov.au> + + * configure.in (host==netbsd): Include config/mh-bsd44. + * config/mh-bsd44: New file. + +Wed Dec 3 16:48:20 1997 Michael Snyder (msnyder@cleaver.cygnus.com) + + * rltty.c: fix typos. + +Tue Oct 8 08:59:24 1996 Stu Grossman (grossman@critters.cygnus.com) + + * tilde.c (tilde_word_expand): __MSDOS___ -> __MSDOS__ + +Sat Oct 05 11:24:34 1996 Mark Alexander <marka@cygnus.com> + + * rldefs.h: On Linux, include <termios.h> to fix compile error + in <termcap.h>. + +Wed Sep 4 18:06:51 1996 Stu Grossman (grossman@critters.cygnus.com) + + * rldefs.h: Enable HANDLE_SIGNALS for cygwin32. + +Thu Aug 29 16:59:45 1996 Michael Meissner <meissner@tiktok.cygnus.com> + + * configure.in (i[345]86-*-*): Recognize i686 for pentium pro. + +Fri Aug 16 17:49:57 1996 Stu Grossman (grossman@critters.cygnus.com) + + * complete.c: Include <pwd.h> if not DOS, and if cygwin32 or not + win32. + * configure.in: Add test for *-*-cygwin32* to use config/mh-posix. + * readline.c: Move decl of tgetstr to rldefs.h. + * (_rl_set_screen_size): Remove redundant ifdef MINIMALs. + * rldefs.h: Don't do MINIMAL for cygwin32. Cygwin32 now uses + full-blown readline, except for termcap. + +Sun Aug 11 21:06:26 1996 Stu Grossman (grossman@critters.cygnus.com) + + * rldefs.c: Get rid of define of SIGALRM if _WIN32 or __MSDOS__. + * Don't define ScreenCols/ScreenRows/... if cygwin32. + * sysdep-norm.h: Don't include <malloc.h> if cygwin32. + +Sun Aug 11 14:59:09 1996 Fred Fish <fnf@cygnus.com> + + * rldefs.h: If __osf__is defined, include <termio.h> instead of + <sgtty.h>. + +Fri Aug 9 08:54:26 1996 Stu Grossman (grossman@critters.cygnus.com) + + * bind.c complete.c history.c readline.c: Don't include sys/file.h. + * complete.c display.c parens.c readline.c rldefs.h rltty.c + signals.c tilde.c: Change refs to _MSC_VER and __WIN32__ to _WIN32. + * signals.c (rl_signal_handler): Ifdef out kill if _WIN32. + * sysdep-norm.h: Ifdef out include of dirent.h if _WIN32. + Include malloc.h if _WIN32. + +Thu Jul 18 15:59:35 1996 Michael Meissner <meissner@tiktok.cygnus.com> + + * rldefs.h (sys/uio.h) Before sys/stream.h is included under AIX, + include sys/uio.h, which prevents an undefined structure used in a + prototype message from being generated. + +Tue Jun 25 23:05:55 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) + + * Makefile.in (datadir): Set to $(prefix)/share. + (docdir): Removed. + +Sun May 26 15:14:42 1996 Fred Fish <fnf@cygnus.com> + + From: David Mosberger-Tang <davidm@azstarnet.com> + + * sysdep-linux.h: New file. + * display.c: Add include of "sysdep.h" to get HAVE_VARARGS_H. + * configure.in: Change pattern i[345]86-*-linux* into *-*-linux* to + support non-x86 based Linux platforms. + +Sun Apr 7 22:06:11 1996 Fred Fish <fnf@cygnus.com> + + From: Miles Bader <miles@gnu.ai.mit.edu> + * config/mh-gnu: New file. + * configure.in (*-*-gnu*): New host. + +Sun Apr 7 13:21:51 1996 Fred Fish <fnf@cygnus.com> + + From: Robert Lipe <robertl@dgii.com> + * configure.in: SCO OpenServer 5 (a.k.a 3.2v5*) is more like + SCO 3.2v4 than 3.2v2. + +Wed Jan 3 18:22:10 1996 steve chamberlain <sac@slash.cygnus.com> + + * readline.c, display.c, complete.c: Add _MSC_VER to list of + things which can't do most things. + +Thu Nov 16 15:39:05 1995 Geoffrey Noer <noer@cygnus.com> + + * complete.c: Change WIN32 to __WIN32__, added #else return NULL + to end of that define. + +Tue Oct 31 10:38:58 1995 steve chamberlain <sac@slash.cygnus.com> + + * display.c, parens.c, readline.c, rldefs.h: Change use of + WIN32 to __WIN32__. + +Tue Oct 10 11:07:23 1995 Fred Fish <fnf@cygnus.com> + + * Makefile.in (BISON): Remove macro. + +Tue Oct 10 08:49:00 1995 steve chamberlain <sac@slash.cygnus.com> + + * complete.c (filename_completion_function): Enable for + win32 when not MSC. + +Sun Oct 8 04:17:19 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * configure.in: Handle powerpc-ibm-aix* like rs6000-ibm-aix*. + +Sat Oct 7 20:36:16 1995 Michael Meissner <meissner@cygnus.com> + + * rltty.c (outchar): Return an int, like tputs expects. + * signals.c (_rl_output_character_function): Ditto. + +Fri Sep 29 15:19:23 1995 steve chamberlain <sac@slash.cygnus.com> + + Fixes for when the host WIN32, but not MSC. + * complete.c: Sometimes have pwd.h + * parens.c: WIN32 has similar restrictions to __GO32__. + * readline.c (__GO32__): Some of this moved into rldefs.h + * signals.c (__GO32__): Likewise. + * rldefs.h (MSDOS||WIN32) becomes MSDOS||MSC. + (WIN32&&!WIN32): New definitions. + +Wed Sep 20 12:57:17 1995 Ian Lance Taylor <ian@cygnus.com> + + * Makefile.in (maintainer-clean): New synonym for realclean. + +Wed Mar 1 13:33:43 1995 Michael Meissner <meissner@tiktok.cygnus.com> + + * rltty.c (outchar): Provide prototype for outchar, to silence + type warnings in passing outchar to tputs on systems like Linux + that have full prototypes. + + * signals.c (_rl_output_character_function): Provide prototype to + silence type warnings. + +Sun Jan 15 14:10:37 1995 Steve Chamberlain <sac@splat> + + * rldefs.h: Define MINIMAL for __GO32__ and WIN32. + * complete.c, display.c, readline.c, rltty.c: Test MINIMAL + instead of __GO32__. + +Wed Aug 24 13:04:47 1994 Ian Lance Taylor (ian@sanguine.cygnus.com) + + * configure.in: Change i[34]86 to i[345]86. + +Sat Jul 16 13:26:31 1994 Stan Shebs (shebs@andros.cygnus.com) + + * configure.in (m88*-harris-cxux7*): Recognize. + * sysdep-cxux7.h: New file. + +Fri Jul 8 13:18:33 1994 Steve Chamberlain (sac@jonny.cygnus.com) + + * rttty.c (control_meta_key_on): Remove superfluous testing of + __GO32__. + +Thu Jun 30 15:21:54 1994 Steve Chamberlain (sac@jonny.cygnus.com) + + * rltty.c (control_meta_key_on): Don't compile if __GO32__ is + defined. + (rltty_set_default_bindings): Likewise. + * display.c (insert_some_chars, delete_chars): row_start should be + a short. + * parens.c (rl_insert_close): No FD_SET if using __GO32__. + * readline.c (rl_gather_tyi): Strip off spurious high bits. + +Sun Jun 12 03:51:52 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * history.c: Swap inclusion of rldefs.h and chardefs.h to avoid + CTRL macro redefinition. + +Mon May 9 18:29:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * readline.c (readline_default_bindings): Don't compile if + __GO32__ is defined. + (_rl_set_screen_size): Likewise. + * rltty.c (rltty_set_default_bindings): Likewise. + (control_meta_key): Likewise. + * display.c: If __GO32__ is defined, include <sys/pc.h>. + * parens.c: If __GO32__ is defined, undefine FD_SET. + * signals.c: Include SIGWINCH handling in the set of things which + is not done if HANDLE_SIGNALS is not set. + +Fri May 6 13:38:39 1994 Steve Chamberlain (sac@cygnus.com) + + * config/mh-go32: New fragment. + * configure.in (host==go32): Use go32 fragment. + +Wed May 4 14:36:53 1994 Stu Grossman (grossman@cygnus.com) + + * chardefs.h, rldefs.h: Move decls of string funcs from chardefs.h + to rldefs.h so that they don't pollute apps that include + readline.h. + * history.c: include rldefs.h to get decls of string funcs. + +Wed May 4 12:15:11 1994 Stan Shebs (shebs@andros.cygnus.com) + + * configure.in (rs6000-bull-bosx*): New configuration, RS/6000 + variant. + +Wed Apr 20 10:43:52 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * configure.in: Use mh-posix for sunos4.1*. + +Wed Apr 13 21:28:44 1994 Jim Kingdon (kingdon@deneb.cygnus.com) + + * rltty.c (set_tty_settings): Don't set readline_echoing_p. + (rl_deprep_terminal) [NEW_TTY_DRIVER]: Set readline_echoing_p. + +Sun Mar 13 09:13:12 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * Makefile.in: Add TAGS target. + +Wed Mar 9 18:01:31 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * isearch.c, search.c: Include sysdep.h. + +Thu Mar 3 17:40:03 1994 Jim Kingdon (kingdon@deneb.cygnus.com) + + * configure.in: For ISC, use mh-sysv, not mh-isc. + +Thu Feb 24 04:13:53 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * Merge in changes from bash-1.13.5. Merge changes from glob/tilde.c + into tilde.c and use it. Add system function declarations where + necessary. Check for __GO32__, not _GO32_ consistently. + * Makefile.in: Update dependencies. + * rltty.c: Include <sys/file.h> to match include file setup + in readline.c for rldefs.h. Otherwise we get inconsistent + TTY_DRIVER definitions in readline.c and rltty.c. + * bind.c, complete.c: Do not include <sys/types.h>, it is already + included via sysdep.h, which causes problems if <sys/types.h> has + no multiple inclusion protection. + * readline.c (_rl_set_screen_size): Reestablish test for + TIOCGWINSZ_BROKEN. + * rldefs.h: Define S_ISREG if necessary. + +Fri Feb 18 08:56:35 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * Makefile.in: Add search.o rule for Sun make. + +Wed Feb 16 16:35:49 1994 Per Bothner (bothner@kalessin.cygnus.com) + + * rltty.c: #if out some code if __GO32__. + +Tue Feb 15 14:07:08 1994 Per Bothner (bothner@kalessin.cygnus.com) + + * readline.c (_rl_output_character_function), display.c: + Return int, not void, to conform with the expected arg of tputs. + * readline.c (init_terminal_io): tgetflag only takes 1 arg. + * readline.c (_rl_savestring): New function. + * chardefs.h: To avoid conflicts and/or warnings, define + savestring as a macro wrapper for _rl_savestring. + * display.c (extern term_xn): It's an int flag, not a string. + * charsdefs.h, rldefs.h: Remove HAVE_STRING_H-related junk. + +Sat Feb 5 08:32:30 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * Makefile.in: Remove obsolete rules for history.info and + readline.info. + +Thu Jan 27 17:04:01 1994 Jim Kingdon (kingdon@deneb.cygnus.com) + + * chardefs.h: Only declare strrchr if it is not #define'd. + +Tue Jan 25 11:30:06 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * rldefs.h: Accept __hpux as well as hpux for HP compiler in ANSI mode. + +Fri Jan 21 17:31:26 1994 Jim Kingdon (kingdon@lisa.cygnus.com) + + * chardefs.h, tilde.c: Just declare strrchr rather than trying to + include a system header. + +Fri Jan 21 14:40:43 1994 Fred Fish (fnf@cygnus.com) + + * Makefile.in (distclean, realclean): Expand local-distclean + inline after doing recursion. You can't recurse after removing + Makefile. Make them depend on local-clean. + * Makefile.in (local-distclean): Remove now superfluous target. + +Mon Jan 17 12:42:07 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + * readline.c (doing_an_undo): Delete second declaration, since it + confuses the alpha-osf1 native compiler. + +Sun Jan 16 12:33:11 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * complete.c, bind.c: Include <sys/stat.h>. + * complete.c: Define X_OK if not defined by a system header. + + * chardefs.h: Don't declare xmalloc. + + * keymaps.h: Include "chardefs.h" not <readline/chardefs.h>. + + * Makefile.in (clean mostlyclean distclean realclean): Recurse + into subdirectories as well as doing this directory. Add clean-dvi + target. + +Sat Jan 15 19:36:12 1994 Per Bothner (bothner@kalessin.cygnus.com) + + * readline.c, display.c: Patches to allow use of all 80 + columns on most terminals (those with am and xn). + + Merge in changes from bash-1.13. The most obvious one is + that the file readline.c has been split into multiple files. + * bind.c, complete.c, dispay.c, isearch.c, parens.c, rldefs.h, + rltty.c, search.c signals.c, tilde.c, tilde.h, xmalloc.c: New files. + +Sat Dec 11 16:29:17 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * readline.c (rl_getc): If GO32, trim high bit from getkey, + otherwise fancy PC keys cause grief. + +Fri Nov 5 11:49:47 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * configure.in: Add doc to configdirs. + * Makefile.in (info dvi install-info clean-info): Recurse into doc. + +Fri Oct 22 07:55:08 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * configure.in: Add * to end of all OS names. + +Tue Oct 5 12:33:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * readline.c: Add stuff for HIUX to place where we detect termio + vs. sgtty (ugh, but I don't see a simple better way). + +Wed Sep 29 11:02:58 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * readline.c (parser_if): Free tname when done with it (change + imported from from bash 1.12 readline). + +Tue Sep 7 17:15:37 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * configure.in (m88k-*-sysvr4*): Comment out previous change. + +Fri Jul 2 11:05:34 1993 Ian Lance Taylor (ian@cygnus.com) + + * configure.in (*-*-riscos*): New entry; use mh-sysv. + +Wed Jun 23 13:00:12 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * configure.in: Add comment. + +Mon Jun 14 14:28:55 1993 Jim Kingdon (kingdon@eric) + + * configure.in (m88k-*-sysvr4*): Use sysdep-norm.h. + +Sun Jun 13 13:04:09 1993 Jim Kingdon (kingdon@cygnus.com) + + * Makefile.in ({real,dist}clean): Remove sysdep.h. + +Thu Jun 10 11:22:41 1993 Jim Kingdon (kingdon@cygnus.com) + + * Makefile.in: Add mostlyclean, distclean, and realclean targets. + +Fri May 21 17:09:28 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + + * config/mh-isc: New file. + * configure.in: Use it. + +Sat Apr 17 00:40:12 1993 Jim Kingdon (kingdon at calvin) + + * readline.c, history.c: Don't include sys/types.h; sysdep.h does. + + * config/mh-sysv: Define TIOCGWINSZ_BROKEN. + readline.c: Check it. + +Wed Mar 24 02:06:15 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com) + + * Makefile.in: add installcheck & dvi targets + +Fri Mar 12 18:36:53 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure.in: recognize *-*-solaris2* instead of *-*-solaris* (a + number of people want to call SunOS 4.1.2 "solaris1.0" + and get it right) + +Tue Mar 2 21:25:36 1993 Fred Fish (fnf@cygnus.com) + + * sysdep-sysv4.h: New file for SVR4. + * configure.in (*-*-sysv4*): Use sysdep-sysv4.h. + + * configure.in (*-*-ultrix2): Add triplet from Michael Rendell + (michael@mercury.cs.mun.ca) + +Tue Dec 15 12:38:16 1992 Ian Lance Taylor (ian@cygnus.com) + + * configure.in (i[34]86-*-sco3.2v4*): use mh-sco4. + * config/mh-sco4: New file, like mh-sco but without defining + _POSIX_SOURCE. + +Wed Nov 11 21:20:14 1992 John Gilmore (gnu@cygnus.com) + + * configure.in: Reformat to one-case-per-line. + Handle SunOS 3.5, as per Karl Berry, <karl@claude.cs.umb.edu>. + +Wed Nov 4 15:32:31 1992 Stu Grossman (grossman at cygnus.com) + + * sysdep-norm.h: Remove some crud, install dire warning. + +Thu Oct 22 01:08:13 1992 Stu Grossman (grossman at cygnus.com) + + * configure.in: Make SCO work again... + +Mon Oct 12 15:04:07 1992 Ian Lance Taylor (ian@cygnus.com) + + * readline.c (init_terminal_io): if tgetent returns 0, the + terminal type is unknown. + +Thu Oct 1 23:44:14 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure.in: use cpu-vendor-os triple instead of nested cases + +Wed Sep 30 12:58:57 1992 Stu Grossman (grossman at cygnus.com) + + * readline.c (rl_complete_internal): Cast alloca to (char *) to + avoid warning. + +Fri Sep 25 12:45:05 1992 Stu Grossman (grossman at cygnus.com) + + * readline.c (clear_to_eol, rl_generic_bind): Make static. + (rl_digit_loop): Add arg to call to rl_message(). + * vi_mode.c (rl_vi_first_print): Add arg to call to + rl_back_to_indent(). + +Wed Aug 19 14:59:07 1992 Ian Lance Taylor (ian@cygnus.com) + + * Makefile.in: always create installation directories, use full + file name for install target. + +Wed Aug 12 15:50:57 1992 John Gilmore (gnu@cygnus.com) + + * readline.c (last_readline_init_file): Fix typo made by Steve + Chamberlain/DJ Delorie. Proper control file name is ~/.inputrc, + not ~/inputrc. + +Thu Jun 25 16:15:27 1992 Stu Grossman (grossman at cygnus.com) + + * configure.in: Make bsd based systems use sysdep-obsd.h. + +Tue Jun 23 23:22:53 1992 Per Bothner (bothner@cygnus.com) + + * config/mh-posix: New file, for Posix-compliant systems. + * configure.in: Use mh-posix for Linux (free Unix clone). + +Tue Jun 23 21:59:20 1992 Fred Fish (fnf@cygnus.com) + + * sysdep-norm.h (alloca): Protect against previous definition as + a macro with arguments. + +Fri Jun 19 15:48:54 1992 Stu Grossman (grossman at cygnus.com) + + * sysdep-obsd.h: #include <sys/types.h> to make this more Kosher. + +Fri Jun 19 12:53:28 1992 John Gilmore (gnu at cygnus.com) + + * config/mh-apollo68v, mh-sco, mh-sysv, mh-sysv4}: RANLIB=true. + +Mon Jun 15 13:50:34 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * configure.in: use mh-sysv4 on solaris2 + +Mon Jun 15 12:28:24 1992 Fred Fish (fnf@cygnus.com) + + * config/mh-ncr3000 (INSTALL): Don't use /usr/ucb/install, + it is broken on ncr 3000's. + * config/mh-ncr3000 (RANLIB): Use RANLIB=true. + +Mon Jun 15 01:35:55 1992 John Gilmore (gnu at cygnus.com) + + * readline.c: Make new SIGNALS_* macros to parameterize the + ugly changes in signal blocking. Use them throughout, + reducing #ifdef HAVE_POSIX_SIGNALS and HAVE_BSD_SIGNALS clutter + significantly. Make all such places use POSIX if available, + to avoid losing with poor `sigsetmask' emulation from libiberty. + +Sun Jun 14 15:19:51 1992 Stu Grossman (grossman at cygnus.com) + + * readline.c (insert_some_chars): Return void. + +Thu Jun 11 01:27:45 1992 John Gilmore (gnu at cygnus.com) + + * readline.c: #undef PC, which Solaris2 defines in sys/types.h, + clobbering the termcap global variable PC. + +Tue Jun 9 17:30:23 1992 Fred Fish (fnf@cygnus.com) + + * config/{mh-ncr3000, mh-sysv4}: Change INSTALL to use + /usr/ucb/install. + +Mon Jun 8 23:10:07 1992 Fred Fish (fnf@cygnus.com) + + * readline.h (rl_completer_quote_characters): Add declaration. + * readline.c (rl_completer_quote_characters): Add global var. + * readline.c (strpbrk): Add prototype and function. + * readline.c (rl_complete_internal): Add code to handle + expansion of quoted strings. + +Mon May 11 12:39:30 1992 John Gilmore (gnu at cygnus.com) + + * readline.c: Can't initialize FILE *'s with stdin and stdout, + because they might not be constant. Patch from Tom Quinn, + trq@dinoysos.thphys.ox.ac.uk. + +Tue Apr 28 21:52:34 1992 John Gilmore (gnu at cygnus.com) + + * readline.h: Declare rl_event_hook (which already existed). + Suggested by Christoph Tietz <tietz@zi.gmd.dbp.de>. + +Wed Apr 22 18:08:01 1992 K. Richard Pixley (rich@rtl.cygnus.com) + + * configure.in: remove subdirs declaration. The obsolete semantic + for subdirs has been usurped by per's new meaning. + +Tue Apr 21 11:54:23 1992 K. Richard Pixley (rich@cygnus.com) + + * Makefile.in: rework CFLAGS so that they can be set on the + command line to make. Remove MINUS_G. Default CFLAGS to -g. + +Fri Apr 10 23:02:27 1992 Fred Fish (fnf@cygnus.com) + + * configure.in: Recognize new ncr3000 config. + * config/mh-ncr3000: New NCR 3000 config file. + +Wed Mar 25 10:46:30 1992 John Gilmore (gnu at cygnus.com) + + * history.c (stifle_history): Negative arg treated as zero. + +Tue Mar 24 23:46:20 1992 K. Richard Pixley (rich@cygnus.com) + + * config/mh-sysv: INSTALL_PROG -> INSTALL. + +Mon Feb 10 01:41:35 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * history.c (history_do_write) Build a buffer of all of the lines + to write and write them in one fell swoop (lower overhead than + calling write () for each line). Suggested by Peter Ho. + + * vi_mode.c (rl_vi_subst) Don't forget to end the undo group. + +Sat Mar 7 00:15:36 1992 K. Richard Pixley (rich@rtl.cygnus.com) + + * Makefile.in: remove FIXME's on info and install-info targets. + +Fri Mar 6 22:02:04 1992 K. Richard Pixley (rich@cygnus.com) + + * Makefile.in: added check target. + +Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com) + + * Makefile.in, configure.in: removed traces of namesubdir, + -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced + copyrights to '92, changed some from Cygnus to FSF. + +Fri Feb 21 14:37:32 1992 Steve Chamberlain (sac at rtl.cygnus.com) + + * readline.c, examples/fileman.c: patches from DJ to support DOS + +Thu Feb 20 23:23:16 1992 Stu Grossman (grossman at cygnus.com) + + * readline.c (rl_read_init_file): Make sure that null filename is + not passed to open() or else we end up opening the directory, and + read a bunch of garbage into keymap[]. + +Mon Feb 17 17:15:09 1992 Fred Fish (fnf at cygnus.com) + + * readline.c (readline_default_bindings): Only make use of VLNEXT + when both VLNEXT and TERMIOS_TTY_DRIVER is defined. On SVR4 + <termio.h> includes <termios.h>, so VLNEXT is always defined. + + * sysdep-norm.h (_POSIX_VERSION): Define this for all SVR4 + systems so that <termios.h> gets used, instead of <termio.h>. + +Fri Dec 20 12:04:31 1991 Fred Fish (fnf at cygnus.com) + + * configure.in: Change svr4 references to sysv4. + +Tue Dec 10 04:07:20 1991 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: infodir belongs in datadir. + +Fri Dec 6 23:23:14 1991 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: remove spaces following hyphens, bsd make can't + cope. added clean-info. added standards.text support. Don't + know how to make info anymore. + + * configure.in: commontargets is no longer a recognized hook, so + remove it. new subdir called doc. + +Thu Dec 5 22:46:10 1991 K. Richard Pixley (rich at rtl.cygnus.com) + + * Makefile.in: idestdir and ddestdir go away. Added copyrights + and shift gpl to v2. Added ChangeLog if it didn't exist. docdir + and mandir now keyed off datadir by default. + +Fri Nov 22 09:02:32 1991 John Gilmore (gnu at cygnus.com) + + * sysdep-obsd.h: Rename from sysdep-newsos.h. + * configure.in: Use sysdep-obsd for Mach as well as NEWs. + + * sysdep-norm.h, sysdep-aix.h: Add <sys/types.h>, which POSIX + requires to make <dirent.h> work. Improve Sun alloca decl. + +Thu Nov 21 18:48:08 1991 John Gilmore (gnu at cygnus.com) + + * Makefile.in: Clean up ../glob/tilde.c -> tilde.o path. + Clean up makefile a bit in general. + +Thu Nov 21 14:40:29 1991 Stu Grossman (grossman at cygnus.com) + + * configure.in, config/mh-svr4: Make SVR4 work. + + * readline.c: Move config stuff to sysdep.h, use typedef dirent + consistently, remove refs to d_namlen (& D_NAMLEN) to improve + portability. Also, update copyright notice. + readline.h: remove config stuff that I added erroneously in the + first place. + + * emacs_keymap.c, funmap.c, history.c, keymaps.c, vi_keymap.c, + vi_mode.c: move config stuff to sysdep.h, update copyright notices. + +Tue Nov 19 15:02:13 1991 Stu Grossman (grossman at cygnus.com) + + * history.c: #include "sysdep.h". + +Tue Nov 19 10:49:17 1991 Fred Fish (fnf at cygnus.com) + + * Makefile.in, config/hm-sysv, config/hm-sco: Change SYSV to + USG to match current usage. + + * readline.c: Add USGr4 to list of defined things to check for + to use <dirent.h> style directory access. + + * config/hm-svr4: New file for System V Release 4 (USGr4). + +Mon Nov 18 23:59:52 1991 Stu Grossman (grossman at cygnus.com) + + * readline.c (filename_completion_function): use struct dirent + instead of struct direct. + +Fri Nov 1 07:02:13 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_translate_keyseq) Make C-? translate to RUBOUT + unconditionally. + +Mon Oct 28 11:34:52 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c; Use Posix directory routines and macros. + + * funmap.c; Add entry for call-last-kbd-macro. + + * readline.c (rl_prep_term); Use system EOF character on POSIX + systems also. + +Thu Oct 3 16:19:53 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c; Make a distinction between having a TERMIOS tty + driver, and having POSIX signal handling. You might one without + the other. New defines used HAVE_POSIX_SIGNALS, and + TERMIOS_TTY_DRIVER. + +Tue Jul 30 22:37:26 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_getc () If a call to read () returns without an + error, but with zero characters, the file is empty, so return EOF. + +Thu Jul 11 20:58:38 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: (rl_get_next_history, rl_get_previous_history) + Reallocate the buffer space if the line being moved to is longer + the the current space allocated. Amazing that no one has found + this bug until now. + +Sun Jul 7 02:37:05 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c:(rl_parse_and_bind) Allow leading whitespace. + Make sure TERMIO and TERMIOS systems treat CR and NL + disctinctly. + +Tue Jun 25 04:09:27 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: Rework parsing conditionals to pay attention to the + prior states of the conditional stack. This makes $if statements + work correctly. + +Mon Jun 24 20:45:59 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: support for displaying key binding information + includes the functions rl_list_funmap_names (), + invoking_keyseqs_in_map (), rl_invoking_keyseqs (), + rl_dump_functions (), and rl_function_dumper (). + + funmap.c: support for same includes rl_funmap_names (). + + readline.c, funmap.c: no longer define STATIC_MALLOC. However, + update both version of xrealloc () to handle a null pointer. + +Thu Apr 25 12:03:49 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * vi_mode.c (rl_vi_fword, fWord, etc. All functions use + the macro `isident()'. Fixed movement bug which prevents + continious movement through the text. + +Fri Jul 27 16:47:01 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (parser_if) Allow "$if term=foo" construct. + +Wed May 23 16:10:33 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_dispatch) Correctly remember the last command + executed. Fixed typo in username_completion_function (). + +Mon Apr 9 19:55:48 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: username_completion_function (); For text passed in + with a leading `~', remember that this could be a filename (after + it is completed). + +Thu Apr 5 13:44:24 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_search_history (): Correctly handle case of an + unfound search string, but a graceful exit (as with ESC). + + * readline.c: rl_restart_output (); The Apollo passes the address + of the file descriptor to TIOCSTART, not the descriptor itself. + +Tue Mar 20 05:38:55 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_complete (); second call in a row causes possible + completions to be listed. + + * readline.c: rl_redisplay (), added prompt_this_line variable + which is the first character character following \n in prompt. + +Sun Mar 11 04:32:03 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * Signals are now supposedly handled inside of SYSV compilation. + +Wed Jan 17 19:24:09 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * history.c: history_expand (); fixed overwriting memory error, + added needed argument to call to get_history_event (). + +Thu Jan 11 10:54:04 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * readline.c: added mark_modified_lines to control the + display of an asterisk on modified history lines. Also + added a user variable called mark-modified-lines to the + `set' command. + +Thu Jan 4 10:38:05 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * readline.c: start_insert (). Only use IC if we don't have an im + capability. + +Fri Sep 8 09:00:45 1989 Brian Fox (bfox at aurel) + + * readline.c: rl_prep_terminal (). Only turn on 8th bit + as meta-bit iff the terminal is not using parity. + +Sun Sep 3 08:57:40 1989 Brian Fox (bfox at aurel) + + * readline.c: start_insert (). Uses multiple + insertion call in cases where that makes sense. + + rl_insert (). Read type-ahead buffer for additional + keys that are bound to rl_insert, and insert them + all at once. Make insertion of single keys given + with an argument much more efficient. + +Tue Aug 8 18:13:57 1989 Brian Fox (bfox at aurel) + + * readline.c: Changed handling of EOF. readline () returns + (char *)EOF or consed string. The EOF character is read from the + tty, or if the tty doesn't have one, defaults to C-d. + + * readline.c: Added support for event driven programs. + rl_event_hook is the address of a function you want called + while Readline is waiting for input. + + * readline.c: Cleanup time. Functions without type declarations + do not use return with a value. + + * history.c: history_expand () has new variable which is the + characters to ignore immediately following history_expansion_char. + +Sun Jul 16 08:14:00 1989 Brian Fox (bfox at aurel) + + * rl_prep_terminal () + BSD version turns off C-s, C-q, C-y, C-v. + + * readline.c -- rl_prep_terminal () + SYSV version hacks readline_echoing_p. + BSD version turns on passing of the 8th bit for the duration + of reading the line. + +Tue Jul 11 06:25:01 1989 Brian Fox (bfox at aurel) + + * readline.c: new variable rl_tilde_expander. + If non-null, this contains the address of a function to call if + the standard meaning for expanding a tilde fails. The function is + called with the text sans tilde (as in "foo"), and returns a + malloc()'ed string which is the expansion, or a NULL pointer if + there is no expansion. + + * readline.h - new file chardefs.h + Separates things that only readline.c needs from the standard + header file publishing interesting things about readline. + + * readline.c: + readline_default_bindings () now looks at terminal chararacters + and binds those as well. + +Wed Jun 28 20:20:51 1989 Brian Fox (bfox at aurel) + + * Made readline and history into independent libraries. + diff --git a/readline/INSTALL b/readline/INSTALL index 1a73c77..adb27a9 100644 --- a/readline/INSTALL +++ b/readline/INSTALL @@ -1,7 +1,7 @@ Basic Installation ================== -These are installation instructions for Readline-5.1. +These are installation instructions for Readline-4.3. The simplest way to compile readline is: @@ -238,9 +238,6 @@ SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library SHLIB_LIBS Any additional libraries that shared libraries should be linked against when they are created. -SHLIB_LIBPREF The prefix to use when generating the filename of the shared - library. The default is `lib'; Cygwin uses `cyg'. - SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when generating the filename of the shared library. Many systems use `so'; HP-UX uses `sl'. @@ -257,17 +254,6 @@ SHLIB_LIBVERSION The string to append to the filename to indicate the version numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems. Other Unix versions use different schemes. -SHLIB_DLLVERSION The version number for shared libraries that determines API - compatibility between readline versions and the underlying - system. Used only on Cygwin. Defaults to $SHLIB_MAJOR, but - can be overridden at configuration time by defining DLLVERSION - in the environment. - -SHLIB_DOT The character used to separate the name of the shared library - from the suffix and version information. The default is `.'; - systems like Cygwin which don't separate version information - from the library name should set this to the empty string. - SHLIB_STATUS Set this to `supported' when you have defined the other necessary variables. Make uses this to determine whether or not shared library creation should be attempted. If diff --git a/readline/MANIFEST b/readline/MANIFEST index b288fb6..1507eda 100644 --- a/readline/MANIFEST +++ b/readline/MANIFEST @@ -3,7 +3,6 @@ # doc d examples d -examples/rlfe d support d shlib d COPYING f @@ -12,7 +11,6 @@ MANIFEST f INSTALL f CHANGELOG f CHANGES f -NEWS f USAGE f aclocal.m4 f config.h.in f @@ -76,26 +74,23 @@ histfile.c f histsearch.c f shlib/Makefile.in f support/config.guess f -support/config.rpath f support/config.sub f support/install.sh f support/mkdirs f support/mkdist f -support/mkinstalldirs f support/shobj-conf f support/shlib-install f support/wcwidth.c f doc/Makefile.in f doc/texinfo.tex f -doc/version.texi f -doc/fdl.texi f -doc/rlman.texi f -doc/rltech.texi f -doc/rluser.texi f -doc/rluserman.texi f -doc/history.texi f -doc/hstech.texi f -doc/hsuser.texi f +doc/manvers.texinfo f +doc/rlman.texinfo f +doc/rltech.texinfo f +doc/rluser.texinfo f +doc/rluserman.texinfo f +doc/hist.texinfo f +doc/hstech.texinfo f +doc/hsuser.texinfo f doc/readline.3 f doc/history.3 f doc/texi2dvi f @@ -105,25 +100,13 @@ examples/excallback.c f examples/fileman.c f examples/manexamp.c f examples/readlinebuf.h f -examples/rl-fgets.c f examples/rlcat.c f +examples/rlfe.c f examples/rltest.c f examples/rl.c f -examples/rlptytest.c f examples/rlversion.c f examples/histexamp.c f examples/Inputrc f -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.in f -examples/rlfe/extern.h f -examples/rlfe/os.h f -examples/rlfe/pty.c f -examples/rlfe/rlfe.c f -examples/rlfe/screen.h f # formatted documentation, from MANIFEST.doc doc/readline.ps f doc/history.ps f @@ -141,6 +124,3 @@ doc/readline.0 f doc/history.0 f doc/readline_3.ps f doc/history_3.ps f -doc/history.pdf f -doc/readline.pdf f -doc/rluserman.pdf f diff --git a/readline/Makefile.in b/readline/Makefile.in index 87df428..f039ec6 100644 --- a/readline/Makefile.in +++ b/readline/Makefile.in @@ -1,6 +1,6 @@ ## -*- text -*- ## # Master Makefile for the GNU readline library. -# Copyright (C) 1994-2004 Free Software Foundation, Inc. +# Copyright (C) 1994, 1998 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 @@ -18,16 +18,8 @@ RL_LIBRARY_VERSION = @LIBVERSION@ RL_LIBRARY_NAME = readline -PACKAGE = @PACKAGE_NAME@ -VERSION = @PACKAGE_VERSION@ - -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_VERSION = @PACKAGE_VERSION@ - srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ top_srcdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ @@ -43,8 +35,6 @@ RM = rm -f CP = cp MV = mv -PURIFY = @PURIFY@ - @SET_MAKE@ SHELL = @MAKE_SHELL@ @@ -55,8 +45,6 @@ bindir = @bindir@ libdir = @libdir@ mandir = @mandir@ includedir = @includedir@ -datadir = @datadir@ -localedir = $(datadir)/locale infodir = @infodir@ @@ -73,7 +61,7 @@ CFLAGS = @CFLAGS@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' CPPFLAGS = @CPPFLAGS@ -DEFS = @DEFS@ @CROSS_COMPILE@ +DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ TERMCAP_LIB = @TERMCAP_LIB@ @@ -98,6 +86,8 @@ GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@ LIBRARY_NAME = libreadline.a STATIC_LIBS = libreadline.a libhistory.a +WCWIDTH_OBJ = @WCWIDTH_OBJ@ + # The C code source files for this library. CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \ @@ -110,7 +100,7 @@ CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \ $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \ - $(srcdir)/mbutil.c + $(srcdir)/mbutil.c $(srcdir)/support/wcwidth.c # The header files for this library. HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ @@ -123,7 +113,8 @@ TILDEOBJ = tilde.o OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ rltty.o complete.o bind.o isearch.o display.o signals.o \ util.o kill.o undo.o macro.o input.o callback.o terminal.o \ - text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) + text.o nls.o misc.o compat.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) \ + $(WCWIDTH_OBJ) # The texinfo files which document this library. DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo @@ -159,6 +150,10 @@ libhistory.a: $(HISTOBJ) xmalloc.o $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o -test -n "$(RANLIB)" && $(RANLIB) $@ +wcwidth.o: $(srcdir)/support/wcwidth.c + $(RM) $@ + $(CC) $(CCFLAGS) -c $(srcdir)/support/wcwidth.c + # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.o: tilde.c @@ -191,7 +186,6 @@ stamp-h: config.status $(srcdir)/config.h.in #$(srcdir)/configure: $(srcdir)/configure.in ## Comment-me-out in distribution # cd $(srcdir) && autoconf ## Comment-me-out in distribution - shared: force -test -d shlib || mkdir shlib -( cd shlib ; ${MAKE} ${MFLAGS} all ) @@ -217,44 +211,50 @@ uninstall-headers: maybe-uninstall-headers: uninstall-headers -install: $(INSTALL_TARGETS) +## CYGNUS LOCAL +## Don't mess with people's installed readline's. +## This tries to install this version of readline over whatever +## version is already installed on the system (which could be a +## newer version). There is no real reason for us to install +## readline along with GDB. GDB links statically against readline, +## so it doesn't depend on us installing it on the system. -install-static: installdirs $(STATIC_LIBS) install-headers install-doc +install: + +#install: $(INSTALL_TARGETS) + +install-static: installdirs $(STATIC_LIBS) install-headers -$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old $(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a -$(MV) $(DESTDIR)$(libdir)/libhistory.a $(DESTDIR)$(libdir)/libhistory.old $(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a -test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a + -( if test -d doc ; then \ + cd doc && \ + ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ + fi ) -installdirs: $(srcdir)/support/mkinstalldirs - -$(SHELL) $(srcdir)/support/mkinstalldirs $(DESTDIR)$(includedir) \ +installdirs: $(srcdir)/support/mkdirs + -$(SHELL) $(srcdir)/support/mkdirs $(DESTDIR)$(includedir) \ $(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \ $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) -uninstall: uninstall-headers uninstall-doc +uninstall: uninstall-headers -test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \ ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS) + -( if test -d doc ; then \ + cd doc && \ + ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} $@; \ + fi ) -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) -install-shared: installdirs install-headers shared install-doc +install-shared: installdirs install-headers shared -( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install ) - + uninstall-shared: maybe-uninstall-headers -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall ) -install-doc: installdirs - -( if test -d doc ; then \ - cd doc && \ - ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \ - fi ) - -uninstall-doc: - -( if test -d doc ; then \ - cd doc && \ - ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} uninstall; \ - fi ) - TAGS: force $(ETAGS) $(CSOURCES) $(HSOURCES) diff --git a/readline/README b/readline/README index 8dd09cc..7aa9394 100644 --- a/readline/README +++ b/readline/README @@ -1,7 +1,7 @@ Introduction ============ -This is the Gnu Readline library, version 5.1. +This is the Gnu Readline library, version 4.3. 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 @@ -102,9 +102,6 @@ SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library SHLIB_LIBS Any additional libraries that shared libraries should be linked against when they are created. -SHLIB_LIBPREF The prefix to use when generating the filename of the shared - library. The default is `lib'; Cygwin uses `cyg'. - SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when generating the filename of the shared library. Many systems use `so'; HP-UX uses `sl'. @@ -121,17 +118,6 @@ SHLIB_LIBVERSION The string to append to the filename to indicate the version numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems. Other Unix versions use different schemes. -SHLIB_DLLVERSION The version number for shared libraries that determines API - compatibility between readline versions and the underlying - system. Used only on Cygwin. Defaults to $SHLIB_MAJOR, but - can be overridden at configuration time by defining DLLVERSION - in the environment. - -SHLIB_DOT The character used to separate the name of the shared library - from the suffix and version information. The default is `.'; - systems like Cygwin which don't separate version information - from the library name should set this to the empty string. - SHLIB_STATUS Set this to `supported' when you have defined the other necessary variables. Make uses this to determine whether or not shared library creation should be attempted. diff --git a/readline/acconfig.h b/readline/acconfig.h index 4f42238..577cf9c 100644 --- a/readline/acconfig.h +++ b/readline/acconfig.h @@ -17,12 +17,38 @@ /* Definitions pulled in from aclocal.m4. */ #undef VOID_SIGHANDLER -#undef TIOCGWINSZ_IN_SYS_IOCTL +#undef GWINSZ_IN_SYS_IOCTL #undef TIOCSTAT_IN_SYS_IOCTL #undef HAVE_GETPW_DECLS +#undef FIONREAD_IN_SYS_IOCTL + +#undef HAVE_BSD_SIGNALS + +#undef HAVE_LSTAT + +#undef HAVE_POSIX_SIGNALS + +#undef HAVE_POSIX_SIGSETJMP + +#undef HAVE_USG_SIGHOLD + +#undef MUST_REINSTALL_SIGHANDLERS + +#undef SPEED_T_IN_SYS_TYPES + +#undef STRCOLL_BROKEN + +#undef STRUCT_DIRENT_HAS_D_FILENO + +#undef STRUCT_DIRENT_HAS_D_INO + +#undef STRUCT_WINSIZE_IN_SYS_IOCTL + +#undef STRUCT_WINSIZE_IN_TERMIOS + /* Leave that blank line there!! Autoheader needs it. If you're adding to this file, keep in mind: diff --git a/readline/aclocal.m4 b/readline/aclocal.m4 index 8a70084..35613c2 100644 --- a/readline/aclocal.m4 +++ b/readline/aclocal.m4 @@ -685,26 +685,65 @@ fi ]) AC_DEFUN(BASH_FUNC_GETCWD, -[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory]) -AC_CACHE_VAL(bash_cv_getcwd_malloc, +[AC_MSG_CHECKING([if getcwd() calls popen()]) +AC_CACHE_VAL(bash_cv_getcwd_calls_popen, [AC_TRY_RUN([ #include <stdio.h> #ifdef HAVE_UNISTD_H #include <unistd.h> #endif +#ifndef __STDC__ +#ifndef const +#define const +#endif +#endif + +int popen_called; + +FILE * +popen(command, type) + const char *command; + const char *type; +{ + popen_called = 1; + return (FILE *)NULL; +} + +FILE *_popen(command, type) + const char *command; + const char *type; +{ + return (popen (command, type)); +} + +int +pclose(stream) +FILE *stream; +{ + return 0; +} + +int +_pclose(stream) +FILE *stream; +{ + return 0; +} + main() { - char *xpwd; - xpwd = getcwd(0, 0); - exit (xpwd == 0); + char lbuf[32]; + popen_called = 0; + getcwd(lbuf, 32); + exit (popen_called); } -], 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] +], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, + [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) + bash_cv_getcwd_calls_popen=no] )]) -AC_MSG_RESULT($bash_cv_getcwd_malloc) -if test $bash_cv_getcwd_malloc = no; then +AC_MSG_RESULT($bash_cv_getcwd_calls_popen) +if test $bash_cv_getcwd_calls_popen = yes; then AC_DEFINE(GETCWD_BROKEN) AC_LIBOBJ(getcwd) fi @@ -942,12 +981,11 @@ AC_MSG_CHECKING(which library has the termcap functions) _bash_needmsg= fi AC_CACHE_VAL(bash_cv_termcap_lib, -[AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc, - [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, +[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])])])]) + bash_cv_termcap_lib=gnutermcap)])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi @@ -965,9 +1003,6 @@ TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= -elif test $bash_cv_termcap_lib = libc; then -TERMCAP_LIB= -TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= @@ -1026,7 +1061,7 @@ fi AC_DEFUN(BASH_STRUCT_DIRENT_D_INO, [AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(for struct dirent.d_ino) +AC_MSG_CHECKING(if struct dirent has a d_ino member) AC_CACHE_VAL(bash_cv_dirent_has_dino, [AC_TRY_COMPILE([ #include <stdio.h> @@ -1053,13 +1088,13 @@ 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_DEFINE(HAVE_STRUCT_DIRENT_D_INO) +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) fi ]) AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO, [AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(for struct dirent.d_fileno) +AC_MSG_CHECKING(if struct dirent has a d_fileno member) AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [AC_TRY_COMPILE([ #include <stdio.h> @@ -1086,40 +1121,7 @@ struct dirent d; int z; z = d.d_fileno; ], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) 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) -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 <stdio.h> -#include <sys/types.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include <dirent.h> -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include <ndir.h> -# 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_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) +AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) fi ]) @@ -1139,22 +1141,6 @@ if test $bash_cv_struct_timeval = yes; then fi ]) -AC_DEFUN(BASH_STRUCT_TIMEZONE, -[AC_MSG_CHECKING(for struct timezone in sys/time.h and time.h) -AC_CACHE_VAL(bash_cv_struct_timezone, -[ -AC_EGREP_HEADER(struct timezone, sys/time.h, - bash_cv_struct_timezone=yes, - AC_EGREP_HEADER(struct timezone, time.h, - bash_cv_struct_timezone=yes, - bash_cv_struct_timezone=no)) -]) -AC_MSG_RESULT($bash_cv_struct_timezone) -if test $bash_cv_struct_timezone = yes; then - AC_DEFINE(HAVE_STRUCT_TIMEZONE) -fi -]) - AC_DEFUN(BASH_STRUCT_WINSIZE, [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) AC_CACHE_VAL(bash_cv_struct_winsize_header, @@ -1540,16 +1526,9 @@ fi AC_DEFUN(BASH_CHECK_DEV_FD, [AC_MSG_CHECKING(whether /dev/fd is available) AC_CACHE_VAL(bash_cv_dev_fd, -[if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then -# check for systems like FreeBSD 5 that only provide /dev/fd/[012] - exec 3<&0 - if test -r /dev/fd/3; then - bash_cv_dev_fd=standard - else - bash_cv_dev_fd=absent - fi - exec 3<&- - elif test -d /proc/self/fd && test -r /proc/self/fd/0 < /dev/null; then +[if test -d /dev/fd && test -r /dev/fd/0; then + bash_cv_dev_fd=standard + elif test -d /proc/self/fd && test -r /proc/self/fd/0; then bash_cv_dev_fd=whacky else bash_cv_dev_fd=absent @@ -1568,9 +1547,9 @@ fi AC_DEFUN(BASH_CHECK_DEV_STDIN, [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) AC_CACHE_VAL(bash_cv_dev_stdin, -[if test -d /dev/fd && test -r /dev/stdin < /dev/null; then +[if test -d /dev/fd && test -r /dev/stdin; then bash_cv_dev_stdin=present - elif test -d /proc/self/fd && test -r /dev/stdin < /dev/null; then + elif test -d /proc/self/fd && test -r /dev/stdin; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -1673,20 +1652,25 @@ AC_CHECK_HEADERS(wctype.h) AC_CHECK_HEADERS(wchar.h) AC_CHECK_HEADERS(langinfo.h) -AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) AC_CHECK_FUNC(mbrtowc, AC_DEFINE(HAVE_MBRTOWC)) -AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN)) -AC_CHECK_FUNC(wctomb, AC_DEFINE(HAVE_WCTOMB)) +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) -AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP)) +if test "$ac_cv_func_wcwidth" = no && test "$ac_cv_header_wchar_h" = yes; then + WCWIDTH_OBJ=wcwidth.o +else + WCWIDTH_OBJ= +fi +AC_SUBST(WCWIDTH_OBJ) AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, -[AC_TRY_COMPILE([ -#include <wchar.h>], [ +[AC_TRY_LINK( +[#include <wchar.h>], +[int +main () +{ mbstate_t ps; - mbstate_t *psp; - psp = (mbstate_t *)0; -], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) + return 0; +}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) if test $bash_cv_have_mbstate_t = yes; then AC_DEFINE(HAVE_MBSTATE_T) fi @@ -1735,30 +1719,23 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}" 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_TRY_RUN([ #include <stdio.h> #include <readline/readline.h> -extern int rl_gnu_readline_p; - main() { FILE *fp; fp = fopen("conftest.rlv", "w"); - if (fp == 0) - exit(1); - if (rl_gnu_readline_p != 1) - fprintf(fp, "0.0\n"); - else - fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + if (fp == 0) exit(1); + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); fclose(fp); exit(0); } ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='4.2')]) +ac_cv_rl_version='4.2') CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -1820,2140 +1797,3 @@ 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 <locale.h> -#endif -#include <stdio.h> -#include <ctype.h> - -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([ -#include <sys/types.h> -#include <sys/wait.h> -#include <unistd.h> -#include <errno.h> - -#ifndef errno -extern int errno; -#endif -main() -{ - int x; - - x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); - if (x == -1 && errno == EINVAL) - exit (1); - else - exit (0); -} -], 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] -)]) -AC_MSG_RESULT($bash_cv_wcontinued_broken) -if test $bash_cv_wcontinued_broken = yes; then -AC_DEFINE(WCONTINUED_BROKEN) -fi -]) - -dnl -dnl tests added for bashdb -dnl - - -AC_DEFUN([AM_PATH_LISPDIR], - [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]), - [ lispdir="$withval" - AC_MSG_CHECKING([where .elc files should go]) - AC_MSG_RESULT([$lispdir])], - [ - # If set to t, that means we are running in a shell under Emacs. - # If you have an Emacs named "t", then use the full path. - test x"$EMACS" = xt && EMACS= - AC_CHECK_PROGS(EMACS, emacs xemacs, no) - if test $EMACS != "no"; then - if test x${lispdir+set} != xset; then - AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl - am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'` - if test -z "$am_cv_lispdir"; then - am_cv_lispdir='${datadir}/emacs/site-lisp' - fi - ]) - lispdir="$am_cv_lispdir" - fi - fi - ]) - AC_SUBST(lispdir) -]) - -dnl -dnl tests added for gettext -dnl -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include <langinfo.h>], - [char* cs = nl_langinfo(CODESET);], - 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 <langinfo.h> and nl_langinfo(CODESET).]) - fi -]) -# gettext.m4 serial 20 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Set USE_NLS. - AM_NLS - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl For backward compatibility. Some Makefiles may be using this. - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST(INTLOBJS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ -strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - AM_LC_MESSAGES - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include <features.h> -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include <stdlib.h> -#include <iconv.h> -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) -# intdiv0.m4 serial 1 (gettext-0.11.3) -dnl Copyright (C) 2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([gt_INTDIV0], -[ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - AC_TRY_RUN([ -#include <stdlib.h> -#include <signal.h> - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, - [ - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - ]) - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, - [Define if integer division by zero raises signal SIGFPE.]) -]) -# inttypes.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with -# <sys/types.h>. - -AC_DEFUN([gt_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, - [ - AC_TRY_COMPILE( - [#include <sys/types.h> -#include <inttypes.h>], - [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) - ]) - if test $gt_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, - [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.]) - fi -]) -# inttypes_h.m4 serial 5 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <inttypes.h>], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_inttypes_h=yes, - jm_ac_cv_header_inttypes_h=no)]) - if test $jm_ac_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, - [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) -# inttypes-pri.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* -# macros to non-string values. This is the case on AIX 4.3.3. - -AC_DEFUN([gt_INTTYPES_PRI], -[ - AC_REQUIRE([gt_HEADER_INTTYPES_H]) - if test $gt_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - gt_cv_inttypes_pri_broken, - [ - AC_TRY_COMPILE([#include <inttypes.h> -#ifdef PRId32 -char *p = PRId32; -#endif -], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, - [Define if <inttypes.h> exists and defines unusable PRI* macros.]) - fi -]) -# isc-posix.m4 serial 2 (gettext-0.11.2) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) -# lcmessage.m4 serial 3 (gettext-0.11.3) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995. - -# Check whether LC_MESSAGES is available in <locale.h>. - -AC_DEFUN([AM_LC_MESSAGES], -[ - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your <locale.h> file defines LC_MESSAGES.]) - fi -]) -# lib-ld.m4 serial 2 (gettext-0.12) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) -# lib-link.m4 serial 4 (gettext-0.12) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) -# lib-prefix.m4 serial 2 (gettext-0.12) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) -# nls.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate it. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) -# po.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) -# progtest.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) -# stdint_h.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <stdint.h>], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_stdint_h=yes, - jm_ac_cv_header_stdint_h=no)]) - if test $jm_ac_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, - [Define if <stdint.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) -# uintmax_t.m4 serial 7 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_PREREQ(2.13) - -# Define uintmax_t to 'unsigned long' or 'unsigned long long' -# if it is not already defined in <stdint.h> or <inttypes.h>. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to unsigned long or unsigned long long - if <stdint.h> and <inttypes.h> don't define.]) - else - AC_DEFINE(HAVE_UINTMAX_T, 1, - [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) - fi -]) -# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) -dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_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;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the unsigned long long type.]) - fi -]) diff --git a/readline/bind.c b/readline/bind.c index 7559d32..7103888 100644 --- a/readline/bind.c +++ b/readline/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -19,13 +19,8 @@ is generally kept in a file called COPYING or LICENSE. If you do not have a copy of the license, write to the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ - #define READLINE_LIBRARY -#if defined (__TANDEM) -# include <floss.h> -#endif - #if defined (HAVE_CONFIG_H) # include <config.h> #endif @@ -77,9 +72,6 @@ static char *_rl_read_file PARAMS((char *, size_t *)); static void _rl_init_file_error PARAMS((const char *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); -static int find_boolean_var PARAMS((const char *)); - -static char *_rl_get_string_variable_value PARAMS((const char *)); static int substring_member_of_array PARAMS((char *, const char **)); static int currently_reading_init_file; @@ -156,34 +148,6 @@ rl_bind_key_in_map (key, function, map) return (result); } -/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right - now, this is always used to attempt to bind the arrow keys, hence the - check for rl_vi_movement_mode. */ -int -rl_bind_key_if_unbound_in_map (key, default_func, kmap) - int key; - rl_command_func_t *default_func; - Keymap kmap; -{ - char keyseq[2]; - - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; - return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); -} - -int -rl_bind_key_if_unbound (key, default_func) - int key; - rl_command_func_t *default_func; -{ - char keyseq[2]; - - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; - return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); -} - /* Make KEY do nothing in the currently selected keymap. Returns non-zero in case of error. */ int @@ -236,30 +200,9 @@ rl_unbind_command_in_map (command, map) } /* Bind the key sequence represented by the string KEYSEQ to - FUNCTION, starting in the current keymap. This makes new - keymaps as necessary. */ -int -rl_bind_keyseq (keyseq, function) - const char *keyseq; - rl_command_func_t *function; -{ - return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap)); -} - -/* Bind the key sequence represented by the string KEYSEQ to FUNCTION. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_bind_keyseq_in_map (keyseq, function, map) - const char *keyseq; - rl_command_func_t *function; - Keymap map; -{ - return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); -} - -/* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */ -int rl_set_key (keyseq, function, map) const char *keyseq; rl_command_func_t *function; @@ -268,40 +211,6 @@ rl_set_key (keyseq, function, map) return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } -/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right - now, this is always used to attempt to bind the arrow keys, hence the - check for rl_vi_movement_mode. */ -int -rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap) - const char *keyseq; - rl_command_func_t *default_func; - Keymap kmap; -{ - rl_command_func_t *func; - - if (keyseq) - { - func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL); -#if defined (VI_MODE) - if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) -#else - if (!func || func == rl_do_lowercase_version) -#endif - return (rl_bind_keyseq_in_map (keyseq, default_func, kmap)); - else - return 1; - } - return 0; -} - -int -rl_bind_keyseq_if_unbound (keyseq, default_func) - const char *keyseq; - rl_command_func_t *default_func; -{ - return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); -} - /* Bind the key sequence represented by the string KEYSEQ to the string of characters MACRO. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ @@ -344,7 +253,7 @@ rl_generic_bind (type, keyseq, data, map) k.function = 0; /* If no keys to bind to, exit right away. */ - if (keyseq == 0 || *keyseq == 0) + if (!keyseq || !*keyseq) { if (type == ISMACR) free (data); @@ -372,7 +281,7 @@ rl_generic_bind (type, keyseq, data, map) if (ic < 0 || ic >= KEYMAP_SIZE) return -1; - if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) + if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic)) { ic = UNMETA (ic); if (map[ESC].type == ISKMAP) @@ -463,14 +372,7 @@ rl_translate_keyseq (seq, array, len) else if (c == 'M') { i++; - /* XXX - should obey convert-meta setting? */ - if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP) - array[l++] = ESC; /* ESC is meta-prefix */ - else - { - i++; - array[l++] = META (seq[i]); - } + array[l++] = ESC; /* ESC is meta-prefix */ } else if (c == 'C') { @@ -1010,15 +912,9 @@ parser_else (args) return 0; } -#if 0 /* Check the previous (n - 1) levels of the stack to make sure that we haven't previously turned off parsing. */ for (i = 0; i < if_stack_depth - 1; i++) -#else - /* Check the previous (n) levels of the stack to make sure that - we haven't previously turned off parsing. */ - for (i = 0; i < if_stack_depth; i++) -#endif if (if_stack[i] == 1) return 0; @@ -1195,9 +1091,9 @@ rl_parse_and_bind (string) /* If this is a command to set a variable, then do that. */ if (_rl_stricmp (string, "set") == 0) { - char *var, *value, *e; + char *var = string + i; + char *value; - var = string + i; /* Make VAR point to start of variable name. */ while (*var && whitespace (*var)) var++; @@ -1208,20 +1104,6 @@ rl_parse_and_bind (string) *value++ = '\0'; while (*value && whitespace (*value)) value++; - /* Strip trailing whitespace from values to boolean variables. Temp - fix until I get a real quoted-string parser here. */ - i = find_boolean_var (var); - if (i >= 0) - { - /* remove trailing whitespace */ - e = value + strlen (value) - 1; - while (e >= value && whitespace (*e)) - e--; - e++; /* skip back to whitespace or EOS */ - if (*e && e >= value) - *e = '\0'; - } - rl_variable_bind (var, value); return 0; } @@ -1242,9 +1124,8 @@ rl_parse_and_bind (string) the quoted string delimiter, like the shell. */ if (*funname == '\'' || *funname == '"') { - int delimiter, passc; + int delimiter = string[i++], passc; - delimiter = string[i++]; for (passc = 0; c = string[i]; i++) { if (passc) @@ -1280,7 +1161,7 @@ rl_parse_and_bind (string) } /* If this is a new-style key-binding, then do the binding with - rl_bind_keyseq (). Otherwise, let the older code deal with it. */ + rl_set_key (). Otherwise, let the older code deal with it. */ if (*string == '"') { char *seq; @@ -1319,7 +1200,7 @@ rl_parse_and_bind (string) rl_macro_bind (seq, &funname[1], _rl_keymap); } else - rl_bind_keyseq (seq, rl_named_function (funname)); + rl_set_key (seq, rl_named_function (funname), _rl_keymap); free (seq); return 0; @@ -1380,7 +1261,6 @@ static struct { int *value; int flags; } boolean_varlist [] = { - { "bind-tty-special-chars", &_rl_bind_stty_chars, 0 }, { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL }, { "byte-oriented", &rl_byte_oriented, 0 }, { "completion-ignore-case", &_rl_completion_case_fold, 0 }, @@ -1401,7 +1281,6 @@ static struct { { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL }, { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 }, { "show-all-if-ambiguous", &_rl_complete_show_all, 0 }, - { "show-all-if-unmodified", &_rl_complete_show_unmodified, 0 }, #if defined (VISIBLE_STATS) { "visible-stats", &rl_visible_stats, 0 }, #endif /* VISIBLE_STATS */ @@ -1494,34 +1373,13 @@ find_string_var (name) values result in 0 (false). */ static int bool_to_int (value) - const char *value; + char *value; { return (value == 0 || *value == '\0' || (_rl_stricmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0')); } -char * -rl_variable_value (name) - const char *name; -{ - register int i; - int v; - char *ret; - - /* Check for simple variables first. */ - i = find_boolean_var (name); - if (i >= 0) - return (*boolean_varlist[i].value ? "on" : "off"); - - i = find_string_var (name); - if (i >= 0) - return (_rl_get_string_variable_value (string_varlist[i].name)); - - /* Unknown variable names return NULL. */ - return 0; -} - int rl_variable_bind (name, value) const char *name, *value; @@ -1792,7 +1650,7 @@ rl_get_keymap_name_from_edit_mode () /* Each of the following functions produces information about the state of keybindings and functions known to Readline. The info is always printed to rl_outstream, and in such a way that it can - be read back in (i.e., passed to rl_parse_and_bind ()). */ + be read back in (i.e., passed to rl_parse_and_bind (). */ /* Print the names of functions known to Readline. */ void @@ -2164,68 +2022,12 @@ rl_dump_macros (count, key) return (0); } -static char * -_rl_get_string_variable_value (name) - const char *name; -{ - static char numbuf[32]; - char *ret; - int n; - - if (_rl_stricmp (name, "bell-style") == 0) - { - switch (_rl_bell_preference) - { - case NO_BELL: - return "none"; - case VISIBLE_BELL: - return "visible"; - case AUDIBLE_BELL: - default: - return "audible"; - } - } - else if (_rl_stricmp (name, "comment-begin") == 0) - return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); - else if (_rl_stricmp (name, "completion-query-items") == 0) - { - sprintf (numbuf, "%d", rl_completion_query_items); - return (numbuf); - } - else if (_rl_stricmp (name, "editing-mode") == 0) - return (rl_get_keymap_name_from_edit_mode ()); - else if (_rl_stricmp (name, "isearch-terminators") == 0) - { - if (_rl_isearch_terminators == 0) - return 0; - ret = _rl_untranslate_macro_value (_rl_isearch_terminators); - if (ret) - { - strncpy (numbuf, ret, sizeof (numbuf) - 1); - free (ret); - numbuf[sizeof(numbuf) - 1] = '\0'; - } - else - numbuf[0] = '\0'; - return numbuf; - } - else if (_rl_stricmp (name, "keymap") == 0) - { - ret = rl_get_keymap_name (_rl_keymap); - if (ret == 0) - ret = rl_get_keymap_name_from_edit_mode (); - return (ret ? ret : "none"); - } - else - return (0); -} - void rl_variable_dumper (print_readably) int print_readably; { int i; - char *v; + const char *kname; for (i = 0; boolean_varlist[i].name; i++) { @@ -2237,16 +2039,63 @@ rl_variable_dumper (print_readably) *boolean_varlist[i].value ? "on" : "off"); } - for (i = 0; string_varlist[i].name; i++) + /* bell-style */ + switch (_rl_bell_preference) + { + case NO_BELL: + kname = "none"; break; + case VISIBLE_BELL: + kname = "visible"; break; + case AUDIBLE_BELL: + default: + kname = "audible"; break; + } + if (print_readably) + fprintf (rl_outstream, "set bell-style %s\n", kname); + else + fprintf (rl_outstream, "bell-style is set to `%s'\n", kname); + + /* comment-begin */ + if (print_readably) + fprintf (rl_outstream, "set comment-begin %s\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); + else + fprintf (rl_outstream, "comment-begin is set to `%s'\n", _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); + + /* completion-query-items */ + if (print_readably) + fprintf (rl_outstream, "set completion-query-items %d\n", rl_completion_query_items); + else + fprintf (rl_outstream, "completion-query-items is set to `%d'\n", rl_completion_query_items); + + /* editing-mode */ + if (print_readably) + fprintf (rl_outstream, "set editing-mode %s\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi"); + else + fprintf (rl_outstream, "editing-mode is set to `%s'\n", (rl_editing_mode == emacs_mode) ? "emacs" : "vi"); + + /* isearch-terminators */ + if (_rl_isearch_terminators) { - v = _rl_get_string_variable_value (string_varlist[i].name); - if (v == 0) /* _rl_isearch_terminators can be NULL */ - continue; + char *disp; + + disp = _rl_untranslate_macro_value (_rl_isearch_terminators); + if (print_readably) - fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v); + fprintf (rl_outstream, "set isearch-terminators \"%s\"\n", disp); else - fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v); + fprintf (rl_outstream, "isearch-terminators is set to \"%s\"\n", disp); + + free (disp); } + + /* keymap */ + kname = rl_get_keymap_name (_rl_keymap); + if (kname == 0) + kname = rl_get_keymap_name_from_edit_mode (); + if (print_readably) + fprintf (rl_outstream, "set keymap %s\n", kname ? kname : "none"); + else + fprintf (rl_outstream, "keymap is set to `%s'\n", kname ? kname : "none"); } /* Print all of the current variables and their values to @@ -2263,6 +2112,28 @@ rl_dump_variables (count, key) return (0); } +/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right + now, this is always used to attempt to bind the arrow keys, hence the + check for rl_vi_movement_mode. */ +void +_rl_bind_if_unbound (keyseq, default_func) + const char *keyseq; + rl_command_func_t *default_func; +{ + rl_command_func_t *func; + + if (keyseq) + { + func = rl_function_of_keyseq (keyseq, _rl_keymap, (int *)NULL); +#if defined (VI_MODE) + if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) +#else + if (!func || func == rl_do_lowercase_version) +#endif + rl_set_key (keyseq, default_func, _rl_keymap); + } +} + /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int substring_member_of_array (string, array) diff --git a/readline/callback.c b/readline/callback.c index 9120969..a8f4323 100644 --- a/readline/callback.c +++ b/readline/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -44,14 +44,9 @@ #include "readline.h" #include "rlprivate.h" -/* Private data for callback registration functions. See comments in - rl_callback_read_char for more details. */ -_rl_callback_func_t *_rl_callback_func = 0; -_rl_callback_generic_arg *_rl_callback_data = 0; - /* **************************************************************** */ /* */ -/* Callback Readline Functions */ +/* Callback Readline Functions */ /* */ /* **************************************************************** */ @@ -77,8 +72,7 @@ _rl_callback_newline () { in_handler = 1; - if (rl_prep_term_function) - (*rl_prep_term_function) (_rl_meta_flag); + (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) rl_set_signals (); @@ -95,7 +89,6 @@ rl_callback_handler_install (prompt, linefunc) rl_vcpfunc_t *linefunc; { rl_set_prompt (prompt); - RL_SETSTATE (RL_STATE_CALLBACK); rl_linefunc = linefunc; _rl_callback_newline (); } @@ -105,8 +98,7 @@ void rl_callback_read_char () { char *line; - int eof, jcode; - static procenv_t olevel; + int eof; if (rl_linefunc == NULL) { @@ -114,79 +106,7 @@ rl_callback_read_char () abort (); } - memcpy ((void *)olevel, (void *)readline_top_level, sizeof (procenv_t)); - jcode = setjmp (readline_top_level); - if (jcode) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - memcpy ((void *)readline_top_level, (void *)olevel, sizeof (procenv_t)); - return; - } - - if (RL_ISSTATE (RL_STATE_ISEARCH)) - { - eof = _rl_isearch_callback (_rl_iscxt); - if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) - rl_callback_read_char (); - - return; - } - else if (RL_ISSTATE (RL_STATE_NSEARCH)) - { - eof = _rl_nsearch_callback (_rl_nscxt); - return; - } - else if (RL_ISSTATE (RL_STATE_NUMERICARG)) - { - eof = _rl_arg_callback (_rl_argcxt); - if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) - rl_callback_read_char (); - /* XXX - this should handle _rl_last_command_was_kill better */ - else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) - _rl_internal_char_cleanup (); - - return; - } - else if (RL_ISSTATE (RL_STATE_MULTIKEY)) - { - eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ - while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) - eof = _rl_dispatch_callback (_rl_kscxt); - if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) - { - _rl_internal_char_cleanup (); - _rl_want_redisplay = 1; - } - } - else if (_rl_callback_func) - { - /* This allows functions that simply need to read an additional character - (like quoted-insert) to register a function to be called when input is - available. _rl_callback_data is simply a pointer to a struct that has - the argument count originally passed to the registering function and - space for any additional parameters. */ - eof = (*_rl_callback_func) (_rl_callback_data); - /* If the function `deregisters' itself, make sure the data is cleaned - up. */ - if (_rl_callback_func == 0) - { - if (_rl_callback_data) - { - _rl_callback_data_dispose (_rl_callback_data); - _rl_callback_data = 0; - } - _rl_internal_char_cleanup (); - } - } - else - eof = readline_internal_char (); - - if (rl_done == 0 && _rl_want_redisplay) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - } + eof = readline_internal_char (); /* We loop in case some function has pushed input back with rl_execute_next. */ for (;;) @@ -195,8 +115,7 @@ rl_callback_read_char () { line = readline_internal_teardown (eof); - if (rl_deprep_term_function) - (*rl_deprep_term_function) (); + (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif @@ -212,10 +131,10 @@ rl_callback_read_char () if (in_handler == 0 && rl_linefunc) _rl_callback_newline (); } - if (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)) + if (rl_pending_input) eof = readline_internal_char (); else - break; + break; } } @@ -224,37 +143,14 @@ void rl_callback_handler_remove () { rl_linefunc = NULL; - RL_UNSETSTATE (RL_STATE_CALLBACK); if (in_handler) { in_handler = 0; - if (rl_deprep_term_function) - (*rl_deprep_term_function) (); + (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); #endif } } -_rl_callback_generic_arg * -_rl_callback_data_alloc (count) - int count; -{ - _rl_callback_generic_arg *arg; - - arg = (_rl_callback_generic_arg *)xmalloc (sizeof (_rl_callback_generic_arg)); - arg->count = count; - - arg->i1 = arg->i2 = 0; - - return arg; -} - -void _rl_callback_data_dispose (arg) - _rl_callback_generic_arg *arg; -{ - if (arg) - free (arg); -} - #endif diff --git a/readline/chardefs.h b/readline/chardefs.h index def3a11..a537be2 100644 --- a/readline/chardefs.h +++ b/readline/chardefs.h @@ -77,17 +77,11 @@ # define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif -#if defined (CTYPE_NON_ASCII) -# define NON_NEGATIVE(c) 1 -#else -# define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) -#endif +#define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) /* Some systems define these; we want our definitions. */ #undef ISPRINT -/* Beware: these only work with single-byte ASCII characters. */ - #define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) #define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) #define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) diff --git a/readline/complete.c b/readline/complete.c index d93c15a..a4ff24e 100644 --- a/readline/complete.c +++ b/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -28,7 +28,7 @@ #include <sys/types.h> #include <fcntl.h> #if defined (HAVE_SYS_FILE_H) -# include <sys/file.h> +#include <sys/file.h> #endif #if defined (HAVE_UNISTD_H) @@ -48,7 +48,7 @@ extern int errno; #endif /* !errno */ -#if defined (HAVE_PWD_H) +#ifdef HAVE_PWD_H #include <pwd.h> #endif @@ -81,9 +81,10 @@ typedef int QSFUNC (); /* Most systems don't declare getpwent in <pwd.h> if _POSIX_SOURCE is defined. */ -#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) +#if defined(HAVE_GETPWENT) && \ + (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) extern struct passwd *getpwent PARAMS((void)); -#endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ +#endif /* defiend (HAVE_GETPWENT) && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ /* 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. @@ -101,16 +102,12 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N static int stat_char PARAMS((char *)); #endif -static int path_isdir PARAMS((const char *)); - static char *rl_quote_filename PARAMS((char *, int, char *)); 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 *)); static int print_filename PARAMS((char *, char *)); static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); @@ -136,10 +133,6 @@ static char *make_quoted_replacement PARAMS((char *, int, char *)); /* If non-zero, non-unique completions always show the list of matches. */ int _rl_complete_show_all = 0; -/* If non-zero, non-unique completions show the list of matches, unless it - is not possible to do partial completion and modify the line. */ -int _rl_complete_show_unmodified = 0; - /* If non-zero, completed directory names have a slash appended. */ int _rl_complete_mark_directories = 1; @@ -208,8 +201,7 @@ int rl_completion_type = 0; /* Up to this many items will be displayed in response to a possible-completions call. After that, we ask the user if - she is sure she wants to see them all. A negative value means - don't ask. */ + she is sure she wants to see them all. */ int rl_completion_query_items = 100; int _rl_page_completions = 1; @@ -225,12 +217,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; - -/* Hook function to allow an application to set the completion word - break characters before readline breaks up the line. Allows - position-dependent word break characters. */ -rl_cpvfunc_t *rl_completion_word_break_hook = (rl_cpvfunc_t *)NULL; +const char *rl_completer_word_break_characters = (const char *)NULL; /* List of characters which can be used to quote a substring of the line. Completion occurs on the entire substring, and within the substring @@ -298,19 +285,6 @@ int rl_completion_suppress_append = 0; default is a space. */ int rl_completion_append_character = ' '; -/* If non-zero, the completion functions don't append any closing quote. - This is set to 0 by rl_complete_internal and may be changed by an - application-specific completion function. */ -int rl_completion_suppress_quote = 0; - -/* Set to any quote character readline thinks it finds before any application - completion function is called. */ -int rl_completion_quote_character; - -/* Set to a non-zero value if readline found quoting anywhere in the word to - be completed; set before any application completion function is called. */ -int rl_completion_found_quote; - /* If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the mark-directories variable (which is user-settable). This exists so @@ -349,8 +323,6 @@ rl_complete (ignore, invoking_key) return (rl_complete_internal ('?')); else if (_rl_complete_show_all) return (rl_complete_internal ('!')); - else if (_rl_complete_show_unmodified) - return (rl_complete_internal ('@')); else return (rl_complete_internal (TAB)); } @@ -383,8 +355,6 @@ rl_completion_mode (cfunc) return '?'; else if (_rl_complete_show_all) return '!'; - else if (_rl_complete_show_unmodified) - return '@'; else return TAB; } @@ -405,7 +375,7 @@ set_completion_defaults (what_to_do) rl_filename_completion_desired = 0; rl_filename_quoting_desired = 1; rl_completion_type = what_to_do; - rl_completion_suppress_append = rl_completion_suppress_quote = 0; + rl_completion_suppress_append = 0; /* The completion entry function may optionally change this. */ rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs; @@ -456,15 +426,6 @@ _rl_internal_pager (lines) return 0; } -static int -path_isdir (filename) - const char *filename; -{ - struct stat finfo; - - return (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode)); -} - #if defined (VISIBLE_STATS) /* Return the character which best describes FILENAME. `@' for symbolic links @@ -562,149 +523,53 @@ printable_part (pathname) return ++temp; } -/* Compute width of STRING when displayed on screen by print_filename */ -static int -fnwidth (string) - const char *string; -{ - int width, pos; -#if defined (HANDLE_MULTIBYTE) - mbstate_t ps; - int left, w; - size_t clen; - wchar_t wc; - - left = strlen (string) + 1; - memset (&ps, 0, sizeof (mbstate_t)); -#endif - - width = pos = 0; - while (string[pos]) - { - if (CTRL_CHAR (*string) || *string == RUBOUT) - { - width += 2; - pos++; - } - else - { -#if defined (HANDLE_MULTIBYTE) - clen = mbrtowc (&wc, string + pos, left - pos, &ps); - if (MB_INVALIDCH (clen)) - { - width++; - pos++; - memset (&ps, 0, sizeof (mbstate_t)); - } - else if (MB_NULLWCH (clen)) - break; - else - { - pos += clen; - w = wcwidth (wc); - width += (w >= 0) ? w : 1; - } -#else - width++; - pos++; -#endif - } - } - - return width; -} - -static int -fnprint (to_print) - const char *to_print; -{ - int printed_len; - const char *s; -#if defined (HANDLE_MULTIBYTE) - mbstate_t ps; - const char *end; - size_t tlen; - int width, w; - wchar_t wc; - - end = to_print + strlen (to_print) + 1; - memset (&ps, 0, sizeof (mbstate_t)); -#endif - - printed_len = 0; - s = to_print; - while (*s) - { - if (CTRL_CHAR (*s)) - { - putc ('^', rl_outstream); - putc (UNCTRL (*s), rl_outstream); - printed_len += 2; - s++; -#if defined (HANDLE_MULTIBYTE) - memset (&ps, 0, sizeof (mbstate_t)); -#endif - } - else if (*s == RUBOUT) - { - putc ('^', rl_outstream); - putc ('?', rl_outstream); - printed_len += 2; - s++; -#if defined (HANDLE_MULTIBYTE) - memset (&ps, 0, sizeof (mbstate_t)); -#endif - } - else - { -#if defined (HANDLE_MULTIBYTE) - tlen = mbrtowc (&wc, s, end - s, &ps); - if (MB_INVALIDCH (tlen)) - { - tlen = 1; - width = 1; - memset (&ps, 0, sizeof (mbstate_t)); - } - else if (MB_NULLWCH (tlen)) - break; - else - { - w = wcwidth (wc); - width = (w >= 0) ? w : 1; - } - fwrite (s, 1, tlen, rl_outstream); - s += tlen; - printed_len += width; -#else - putc (*s, rl_outstream); - s++; - printed_len++; -#endif - } - } - - return printed_len; -} - /* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we are using it, check for and output a single character for `special' filenames. Return the number of characters we output. */ +#define PUTX(c) \ + do { \ + if (CTRL_CHAR (c)) \ + { \ + putc ('^', rl_outstream); \ + putc (UNCTRL (c), rl_outstream); \ + printed_len += 2; \ + } \ + else if (c == RUBOUT) \ + { \ + putc ('^', rl_outstream); \ + putc ('?', rl_outstream); \ + printed_len += 2; \ + } \ + else \ + { \ + putc (c, rl_outstream); \ + printed_len++; \ + } \ + } while (0) + static int print_filename (to_print, full_pathname) char *to_print, *full_pathname; { - int printed_len, extension_char, slen, tlen; - char *s, c, *new_full_pathname, *dn; + int printed_len = 0; +#if !defined (VISIBLE_STATS) + char *s; - extension_char = 0; - printed_len = fnprint (to_print); + for (s = to_print; *s; s++) + { + PUTX (*s); + } +#else + char *s, c, *new_full_pathname; + int extension_char, slen, tlen; -#if defined (VISIBLE_STATS) - if (rl_filename_completion_desired && (rl_visible_stats || _rl_complete_mark_directories)) -#else - if (rl_filename_completion_desired && _rl_complete_mark_directories) -#endif + for (s = to_print; *s; s++) + { + PUTX (*s); + } + + if (rl_filename_completion_desired && rl_visible_stats) { /* If to_print != full_pathname, to_print is the basename of the path passed. In this case, we try to expand the directory @@ -720,17 +585,7 @@ print_filename (to_print, full_pathname) files in the root directory. If we pass a null string to the bash directory completion hook, for example, it will expand it to the current directory. We just want the `/'. */ - if (full_pathname == 0 || *full_pathname == 0) - dn = "/"; - else if (full_pathname[0] != '/') - dn = full_pathname; - else if (full_pathname[1] == 0) - dn = "//"; /* restore trailing slash to `//' */ - else if (full_pathname[1] == '/' && full_pathname[2] == 0) - dn = "/"; /* don't turn /// into // */ - else - dn = full_pathname; - s = tilde_expand (dn); + s = tilde_expand (full_pathname && *full_pathname ? full_pathname : "/"); if (rl_directory_completion_hook) (*rl_directory_completion_hook) (&s); @@ -738,20 +593,10 @@ print_filename (to_print, full_pathname) tlen = strlen (to_print); new_full_pathname = (char *)xmalloc (slen + tlen + 2); strcpy (new_full_pathname, s); - if (s[slen - 1] == '/') - slen--; - else - new_full_pathname[slen] = '/'; new_full_pathname[slen] = '/'; strcpy (new_full_pathname + slen + 1, to_print); -#if defined (VISIBLE_STATS) - if (rl_visible_stats) - extension_char = stat_char (new_full_pathname); - else -#endif - if (path_isdir (new_full_pathname)) - extension_char = '/'; + extension_char = stat_char (new_full_pathname); free (new_full_pathname); to_print[-1] = c; @@ -759,13 +604,7 @@ print_filename (to_print, full_pathname) else { s = tilde_expand (full_pathname); -#if defined (VISIBLE_STATS) - if (rl_visible_stats) - extension_char = stat_char (s); - else -#endif - if (path_isdir (s)) - extension_char = '/'; + extension_char = stat_char (s); } free (s); @@ -775,7 +614,7 @@ print_filename (to_print, full_pathname) printed_len++; } } - +#endif /* VISIBLE_STATS */ return printed_len; } @@ -815,25 +654,19 @@ _rl_find_completion_word (fp, dp) int *fp, *dp; { int scan, end, found_quote, delimiter, pass_next, isbrk; - char quote_char, *brkchars; + char quote_char; end = rl_point; found_quote = delimiter = 0; quote_char = '\0'; - brkchars = 0; - if (rl_completion_word_break_hook) - brkchars = (*rl_completion_word_break_hook) (); - if (brkchars == 0) - brkchars = rl_completer_word_break_characters; - if (rl_completer_quote_characters) { /* We have a list of characters which can be used in pairs to quote substrings for the completer. Try to find the start of an unclosed quoted substring. */ /* FOUND_QUOTE is set so we know what kind of quotes we found. */ - for (scan = pass_next = 0; scan < end; scan = MB_NEXTCHAR (rl_line_buffer, scan, 1, MB_FIND_ANY)) + for (scan = pass_next = 0; scan < end; scan++) { if (pass_next) { @@ -883,11 +716,15 @@ _rl_find_completion_word (fp, dp) /* We didn't find an unclosed quoted substring upon which to do completion, so use the word break characters to find the substring on which to complete. */ - while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) +#if defined (HANDLE_MULTIBYTE) + while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY)) +#else + while (--rl_point) +#endif { scan = rl_line_buffer[rl_point]; - if (strchr (brkchars, scan) == 0) + if (strchr (rl_completer_word_break_characters, scan) == 0) continue; /* Call the application-specific function to tell us whether @@ -915,9 +752,9 @@ _rl_find_completion_word (fp, dp) if (rl_char_is_quoted_p) isbrk = (found_quote == 0 || (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) && - strchr (brkchars, scan) != 0; + strchr (rl_completer_word_break_characters, scan) != 0; else - isbrk = strchr (brkchars, scan) != 0; + isbrk = strchr (rl_completer_word_break_characters, scan) != 0; if (isbrk) { @@ -952,9 +789,6 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char) { char **matches, *temp; - rl_completion_found_quote = found_quote; - rl_completion_quote_character = quote_char; - /* If the user wants to TRY to complete, but then wants to give up and use the default completion function, they set the variable rl_attempted_completion_function. */ @@ -1058,7 +892,6 @@ compute_lcd_of_matches (match_list, matches, text) { register int i, c1, c2, si; int low; /* Count of max-matched characters. */ - char *dtext; /* dequoted TEXT, if needed */ #if defined (HANDLE_MULTIBYTE) int v; mbstate_t ps1, ps2; @@ -1150,26 +983,6 @@ compute_lcd_of_matches (match_list, matches, text) the user typed in the face of multiple matches differing in case. */ if (_rl_completion_case_fold) { - /* We're making an assumption here: - IF we're completing filenames AND - the application has defined a filename dequoting function AND - we found a quote character AND - the application has requested filename quoting - THEN - we assume that TEXT was dequoted before checking against - the file system and needs to be dequoted here before we - check against the list of matches - FI */ - dtext = (char *)NULL; - if (rl_filename_completion_desired && - rl_filename_dequoting_function && - rl_completion_found_quote && - rl_filename_quoting_desired) - { - dtext = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); - text = dtext; - } - /* sort the list to get consistent answers. */ qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); @@ -1189,8 +1002,6 @@ compute_lcd_of_matches (match_list, matches, text) else /* otherwise, just use the text the user typed. */ strncpy (match_list[0], text, low); - - FREE (dtext); } else strncpy (match_list[0], match_list[1], low); @@ -1395,7 +1206,7 @@ display_matches (matches) for (max = 0, i = 1; matches[i]; i++) { temp = printable_part (matches[i]); - len = fnwidth (temp); + len = strlen (temp); if (len > max) max = len; @@ -1412,7 +1223,7 @@ display_matches (matches) /* If there are many items, then ask the user if she really wants to see them all. */ - if (rl_completion_query_items > 0 && len >= rl_completion_query_items) + if (len >= rl_completion_query_items) { rl_crlf (); fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len); @@ -1530,8 +1341,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) struct stat finfo; temp_string_index = 0; - if (quote_char && rl_point && rl_completion_suppress_quote == 0 && - rl_line_buffer[rl_point - 1] != quote_char) + if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char) temp_string[temp_string_index++] = quote_char; if (delimiter) @@ -1549,7 +1359,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) : stat (filename, &finfo); if (s == 0 && S_ISDIR (finfo.st_mode)) { - if (_rl_complete_mark_directories /* && rl_completion_suppress_append == 0 */) + if (_rl_complete_mark_directories) { /* This is clumsy. Avoid putting in a double slash if point is at the end of the line and the previous character is a @@ -1642,9 +1452,7 @@ _rl_free_match_list (matches) TAB means do standard completion. `*' means insert all of the possible completions. `!' means to do standard completion, and list all possible completions if - there is more than one. - `@' means to do standard completion, and list all possible completions if - there is more than one and partial completion is not possible. */ + there is more than one. */ int rl_complete_internal (what_to_do) int what_to_do; @@ -1663,6 +1471,7 @@ rl_complete_internal (what_to_do) our_func = rl_completion_entry_function ? rl_completion_entry_function : rl_filename_completion_function; + /* We now look backwards for the start of a filename/variable word. */ end = rl_point; found_quote = delimiter = 0; @@ -1710,7 +1519,6 @@ rl_complete_internal (what_to_do) { case TAB: case '!': - case '@': /* Insert the first match with proper quoting. */ if (*matches[0]) insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); @@ -1730,12 +1538,6 @@ rl_complete_internal (what_to_do) display_matches (matches); break; } - else if (what_to_do == '@') - { - if (nontrivial_lcd == 0) - display_matches (matches); - break; - } else if (rl_editing_mode != vi_mode) rl_ding (); /* There are other matches remaining. */ } @@ -1863,7 +1665,7 @@ rl_username_completion_function (text, state) setpwent (); } -#if defined (HAVE_GETPWENT) +#ifdef HAVE_GETPWENT while (entry = getpwent ()) { /* Null usernames should result in all users as possible completions. */ @@ -1874,7 +1676,7 @@ rl_username_completion_function (text, state) if (entry == 0) { -#if defined (HAVE_GETPWENT) +#ifdef HAVE_GETPWENT endpwent (); #endif return ((char *)NULL); @@ -2188,11 +1990,9 @@ rl_menu_complete (count, ignore) return (0); } - match_list_index += count; + match_list_index = (match_list_index + count) % match_list_size; if (match_list_index < 0) match_list_index += match_list_size; - else - match_list_index %= match_list_size; if (match_list_index == 0 && match_list_size > 1) { diff --git a/readline/config.h.bot b/readline/config.h.bot new file mode 100644 index 0000000..d7a6dc4 --- /dev/null +++ b/readline/config.h.bot @@ -0,0 +1,22 @@ +/* config.h.bot */ +/* modify settings or make new ones based on what autoconf tells us. */ + +/* Ultrix botches type-ahead when switching from canonical to + non-canonical mode, at least through version 4.3 */ +#if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix) +# define TERMIOS_MISSING +#endif + +#if defined (STRCOLL_BROKEN) +# undef HAVE_STRCOLL +#endif + +#if defined (__STDC__) && defined (HAVE_STDARG_H) +# define PREFER_STDARG +# define USE_VARARGS +#else +# if defined (HAVE_VARARGS_H) +# define PREFER_VARARGS +# define USE_VARARGS +# endif +#endif diff --git a/readline/config.h.in b/readline/config.h.in index b4aae98..8d1f0bc 100644 --- a/readline/config.h.in +++ b/readline/config.h.in @@ -1,17 +1,11 @@ /* config.h.in. Maintained by hand. */ -/* Define NO_MULTIBYTE_SUPPORT to not compile in support for multibyte - characters, even if the OS supports them. */ -#undef NO_MULTIBYTE_SUPPORT - /* Define if on MINIX. */ #undef _MINIX /* Define as the return type of signal handlers (int or void). */ #undef RETSIGTYPE -#undef VOID_SIGHANDLER - /* Characteristics of the compiler. */ #undef const @@ -26,18 +20,11 @@ /* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */ #undef STAT_MACROS_BROKEN -/* Define if you have the fcntl function. */ -#undef HAVE_FCNTL - -/* Define if you have the getpwent function. */ -#undef HAVE_GETPWENT - -/* Define if you have the getpwnam function. */ -#undef HAVE_GETPWNAM - -/* Define if you have the getpwuid function. */ -#undef HAVE_GETPWUID +#undef VOID_SIGHANDLER +/* Define if you have the fcntl function. */ +#undef HAVE_FCNTL + /* Define if you have the isascii function. */ #undef HAVE_ISASCII @@ -50,9 +37,6 @@ /* Define if you have the lstat function. */ #undef HAVE_LSTAT -/* Define if you have the mbrlen function. */ -#undef HAVE_MBRLEN - /* Define if you have the mbrtowc function. */ #undef HAVE_MBRTOWC @@ -65,6 +49,15 @@ /* Define if you have the putenv function. */ #undef HAVE_PUTENV +/* Define if you have the getpwent function. */ +#undef HAVE_GETPWENT + +/* Define if you have the getpwnam function. */ +#undef HAVE_GETPWNAM + +/* Define if you have the getpwnam function. */ +#undef HAVE_GETPWUID + /* Define if you have the select function. */ #undef HAVE_SELECT @@ -91,20 +84,12 @@ /* Define if you have the vsnprintf function. */ #undef HAVE_VSNPRINTF -/* Define if you have the wctomb function. */ -#undef HAVE_WCTOMB - /* Define if you have the wcwidth function. */ #undef HAVE_WCWIDTH -#undef STDC_HEADERS - /* Define if you have the <dirent.h> header file. */ #undef HAVE_DIRENT_H -/* Define if you have the <fcntl.h> header file. */ -#undef HAVE_FCNTL_H - /* Define if you have the <langinfo.h> header file. */ #undef HAVE_LANGINFO_H @@ -213,8 +198,6 @@ #undef HAVE_POSIX_SIGSETJMP -#undef CTYPE_NON_ASCII - /* modify settings or make new ones based on what autoconf tells us. */ /* Ultrix botches type-ahead when switching from canonical to diff --git a/readline/configure b/readline/configure index 17a9eeb..b9cedcd 100755 --- a/readline/configure +++ b/readline/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.in for Readline 5.1, version 2.58. +# From configure.in for Readline 4.3, version 2.45, from autoconf version AC_ACVERSION. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for readline 5.1-beta1. +# Generated by GNU Autoconf 2.59 for readline 4.3. # # Report bugs to <bug-readline@gnu.org>. # @@ -270,8 +270,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='readline' PACKAGE_TARNAME='readline' -PACKAGE_VERSION='5.1-beta1' -PACKAGE_STRING='readline 5.1-beta1' +PACKAGE_VERSION='4.3' +PACKAGE_STRING='readline 4.3' PACKAGE_BUGREPORT='bug-readline@gnu.org' ac_unique_file="readline.h" @@ -312,7 +312,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CROSS_COMPILE SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB MAKE_SHELL SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS SHLIB_STATUS SHLIB_XLDFLAGS SHLIB_DOT SHLIB_LIBPREF SHLIB_LIBSUFF SHLIB_LIBVERSION SHLIB_DLLVERSION SHLIB_LIBS SHLIB_MAJOR SHLIB_MINOR STATIC_TARGET SHARED_TARGET STATIC_INSTALL_TARGET SHARED_INSTALL_TARGET PURIFY BUILD_DIR LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS ARFLAGS LIBVERSION TERMCAP_LIB LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP CROSS_COMPILING_FLAG CC_FOR_BUILD INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR RANLIB ac_ct_RANLIB MAKE_SHELL WCWIDTH_OBJ SHOBJ_CC SHOBJ_CFLAGS SHOBJ_LD SHOBJ_LDFLAGS SHOBJ_XLDFLAGS SHOBJ_LIBS SHOBJ_STATUS SHLIB_STATUS SHLIB_XLDFLAGS SHLIB_LIBSUFF SHLIB_LIBVERSION SHLIB_LIBS SHLIB_MAJOR SHLIB_MINOR STATIC_TARGET SHARED_TARGET STATIC_INSTALL_TARGET SHARED_INSTALL_TARGET BUILD_DIR LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS ARFLAGS LIBVERSION TERMCAP_LIB LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -781,7 +781,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 5.1-beta1 to adapt to many kinds of systems. +\`configure' configures readline 4.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -842,15 +842,13 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of readline 5.1-beta1:";; + short | recursive ) echo "Configuration of readline 4.3:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-multibyte enable multibyte characters if OS supports them - --enable-shared build shared libraries [default=YES] --enable-static build static libraries [default=YES] Optional Packages: @@ -858,7 +856,6 @@ 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-purify configure to postprocess with purify Some influential environment variables: CC C compiler command @@ -968,7 +965,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -readline configure 5.1-beta1 +readline configure 4.3 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -982,7 +979,7 @@ cat >&5 <<_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 5.1-beta1, which was +It was created by readline $as_me 4.3, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1322,8 +1319,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + ac_config_headers="$ac_config_headers config.h" + + +LIBVERSION=4.3 + ac_aux_dir= -for ac_dir in ./support $srcdir/./support; do +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" @@ -1339,19 +1341,14 @@ for ac_dir in ./support $srcdir/./support; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ./support $srcdir/./support" >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - ac_config_headers="$ac_config_headers config.h" - - -LIBVERSION=5.1 - # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 @@ -1408,7 +1405,6 @@ host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` opt_curses=no -opt_purify=no # Check whether --with-curses or --without-curses was given. @@ -1417,74 +1413,19 @@ if test "${with_curses+set}" = set; then opt_curses=$withval fi; -# Check whether --with-purify or --without-purify was given. -if test "${with_purify+set}" = set; then - withval="$with_purify" - opt_purify=$withval -fi; - if test "$opt_curses" = "yes"; then prefer_curses=yes fi -if test "$opt_purify" = yes; then - PURIFY="purify" -else - PURIFY= -fi - -opt_multibyte=yes opt_static_libs=yes -opt_shared_libs=yes +opt_shared_libs=no -# Check whether --enable-multibyte or --disable-multibyte was given. -if test "${enable_multibyte+set}" = set; then - enableval="$enable_multibyte" - opt_multibyte=$enableval -fi; -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - opt_shared_libs=$enableval -fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" opt_static_libs=$enableval fi; -if test $opt_multibyte = no; then -cat >>confdefs.h <<\_ACEOF -#define NO_MULTIBYTE_SUPPORT 1 -_ACEOF - -fi - - - -if test "x$cross_compiling" = "xyes"; then - case "${host}" in - *-cygwin*) - cross_cache=${srcdir}/cross-build/cygwin.cache - ;; - *-mingw*) - cross_cache=${srcdir}/cross-build/mingw.cache - ;; - i[3456]86-*-beos*) - cross_cache=${srcdir}/cross-build/x86-beos.cache - ;; - *) echo "configure: cross-compiling for $host is not supported" >&2 - ;; - esac - if test -n "${cross_cache}" && test -r "${cross_cache}"; then - echo "loading cross-build cache file ${cross_cache}" - . ${cross_cache} - fi - unset cross_cache - CROSS_COMPILE='-DCROSS_COMPILING' - -fi - echo "" echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}" echo "" @@ -3103,6 +3044,46 @@ _ACEOF fi + +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin.cache + LOCAL_CFLAGS="$LOCAL_CFLAGS -I${srcdir}/../libtermcap" + ;; + *-mingw32*) + cross_cache=${srcdir}/cross-build/mingw.cache + ;; + *) echo "configure: cross-compiling for a non-cygwin target is not supported" >&2 + ;; + esac + + if test "x$cross_cache" != "x"; then + if test -r "${cross_cache}"; then + echo "loading cross-build cache file ${cross_cache}" + . ${cross_cache} + fi + unset cross_cache + fi +fi + +if test "x$cross_compiling" = "xyes"; then + CROSS_COMPILING_FLAG=-DCROSS_COMPILING +else + CROSS_COMPILING_FLAG= +fi + + +if test -z "$CC_FOR_BUILD"; then + if test "x$cross_compiling" = "xno"; then + CC_FOR_BUILD='$(CC)' + else + CC_FOR_BUILD=gcc + fi +fi + + + # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS. test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O" @@ -3750,173 +3731,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f 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 >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ctype.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 if test "${ac_cv_header_stat_broken+set}" = set; then @@ -4309,325 +4123,23 @@ fi -for ac_func in fcntl kill lstat -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - - - - - - - -for ac_func in memmove putenv select setenv setlocale \ - strcasecmp strpbrk tcgetattr vsnprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done -for ac_func in isascii isxdigit -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif -#undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -fi -done -for ac_func in getpwent getpwnam getpwuid +for ac_func in fcntl kill lstat memmove putenv select setenv setlocale \ + strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit \ + getpwnam getpwent getpwuid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -4802,161 +4314,14 @@ fi -for ac_header in fcntl.h unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \ - limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ----------------------------------- ## -## Report this to bug-readline@gnu.org ## -## ----------------------------------- ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h +for ac_header in unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \ + limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \ + termcap.h termios.h termio.h sys/file.h locale.h memory.h \ + pwd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then @@ -5107,72 +4472,6 @@ done -for ac_header in sys/ptem.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if HAVE_SYS_STREAM_H -# include <sys/stream.h> -#endif - - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - echo "$as_me:$LINENO: checking for type of signal functions" >&5 echo $ECHO_N "checking for type of signal functions... $ECHO_C" >&6 if test "${bash_cv_signal_vintage+set}" = set; then @@ -5698,89 +4997,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking whether the ctype macros accept non-ascii characters" >&5 -echo $ECHO_N "checking whether the ctype macros accept non-ascii characters... $ECHO_C" >&6 -if test "${bash_cv_func_ctype_nonascii+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - { echo "$as_me:$LINENO: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 -echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} - bash_cv_func_ctype_nonascii=no - -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#ifdef HAVE_LOCALE_H -#include <locale.h> -#endif -#include <stdio.h> -#include <ctype.h> - -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 -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - bash_cv_func_ctype_nonascii=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -bash_cv_func_ctype_nonascii=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi - -echo "$as_me:$LINENO: result: $bash_cv_func_ctype_nonascii" >&5 -echo "${ECHO_T}$bash_cv_func_ctype_nonascii" >&6 -if test $bash_cv_func_ctype_nonascii = yes; then -cat >>confdefs.h <<\_ACEOF -#define CTYPE_NON_ASCII 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking whether getpw functions are declared in pwd.h" >&5 echo $ECHO_N "checking whether getpw functions are declared in pwd.h... $ECHO_C" >&6 if test "${bash_cv_getpw_declared+set}" = set; then @@ -6263,8 +5479,8 @@ echo "${ECHO_T}not found" >&6 fi -echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5 -echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking if struct dirent has a d_ino member" >&5 +echo $ECHO_N "checking if struct dirent has a d_ino member... $ECHO_C" >&6 if test "${bash_cv_dirent_has_dino+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6341,14 +5557,14 @@ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_dino" >&5 echo "${ECHO_T}$bash_cv_dirent_has_dino" >&6 if test $bash_cv_dirent_has_dino = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_DIRENT_D_INO 1 +#define STRUCT_DIRENT_HAS_D_INO 1 _ACEOF fi -echo "$as_me:$LINENO: checking for struct dirent.d_fileno" >&5 -echo $ECHO_N "checking for struct dirent.d_fileno... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking if struct dirent has a d_fileno member" >&5 +echo $ECHO_N "checking if struct dirent has a d_fileno member... $ECHO_C" >&6 if test "${bash_cv_dirent_has_d_fileno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6425,7 +5641,7 @@ echo "$as_me:$LINENO: result: $bash_cv_dirent_has_d_fileno" >&5 echo "${ECHO_T}$bash_cv_dirent_has_d_fileno" >&6 if test $bash_cv_dirent_has_d_fileno = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_STRUCT_DIRENT_D_FILENO 1 +#define STRUCT_DIRENT_HAS_D_FILENO 1 _ACEOF fi @@ -6445,99 +5661,6 @@ fi if test "${bash_cv_termcap_lib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - echo "$as_me:$LINENO: checking for tgetent" >&5 -echo $ECHO_N "checking for tgetent... $ECHO_C" >&6 -if test "${ac_cv_func_tgetent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define tgetent to an innocuous variant, in case <limits.h> declares tgetent. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define tgetent innocuous_tgetent - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char tgetent (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef tgetent - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char tgetent (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_tgetent) || defined (__stub___tgetent) -choke me -#else -char (*f) () = tgetent; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != tgetent; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_tgetent=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_tgetent=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_tgetent" >&5 -echo "${ECHO_T}$ac_cv_func_tgetent" >&6 -if test $ac_cv_func_tgetent = yes; then - bash_cv_termcap_lib=libc -else echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then @@ -6817,8 +5940,6 @@ fi fi -fi - if test "X$_bash_needmsg" = "Xyes"; then echo "$as_me:$LINENO: checking which library has the termcap functions" >&5 echo $ECHO_N "checking which library has the termcap functions... $ECHO_C" >&6 @@ -6838,9 +5959,6 @@ TERMCAP_DEP= elif test $bash_cv_termcap_lib = libncurses; then TERMCAP_LIB=-lncurses TERMCAP_DEP= -elif test $bash_cv_termcap_lib = libc; then -TERMCAP_LIB= -TERMCAP_DEP= else TERMCAP_LIB=-lcurses TERMCAP_DEP= @@ -7306,103 +6424,6 @@ fi done -echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 -echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 -if test "${ac_cv_func_mbsrtowcs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbsrtowcs to an innocuous variant, in case <limits.h> declares mbsrtowcs. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define mbsrtowcs innocuous_mbsrtowcs - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbsrtowcs (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef mbsrtowcs - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char mbsrtowcs (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs) -choke me -#else -char (*f) () = mbsrtowcs; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != mbsrtowcs; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mbsrtowcs=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_mbsrtowcs=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 -echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 -if test $ac_cv_func_mbsrtowcs = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBSRTOWCS 1 -_ACEOF - -fi - echo "$as_me:$LINENO: checking for mbrtowc" >&5 echo $ECHO_N "checking for mbrtowc... $ECHO_C" >&6 if test "${ac_cv_func_mbrtowc+set}" = set; then @@ -7500,106 +6521,9 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for mbrlen" >&5 -echo $ECHO_N "checking for mbrlen... $ECHO_C" >&6 -if test "${ac_cv_func_mbrlen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define mbrlen to an innocuous variant, in case <limits.h> declares mbrlen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define mbrlen innocuous_mbrlen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mbrlen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef mbrlen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char mbrlen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_mbrlen) || defined (__stub___mbrlen) -choke me -#else -char (*f) () = mbrlen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != mbrlen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mbrlen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_mbrlen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mbrlen" >&5 -echo "${ECHO_T}$ac_cv_func_mbrlen" >&6 -if test $ac_cv_func_mbrlen = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_MBRLEN 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for wctomb" >&5 -echo $ECHO_N "checking for wctomb... $ECHO_C" >&6 -if test "${ac_cv_func_wctomb+set}" = set; then +echo "$as_me:$LINENO: checking for mbsrtowcs" >&5 +echo $ECHO_N "checking for mbsrtowcs... $ECHO_C" >&6 +if test "${ac_cv_func_mbsrtowcs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -7608,12 +6532,12 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Define wctomb to an innocuous variant, in case <limits.h> declares wctomb. +/* Define mbsrtowcs to an innocuous variant, in case <limits.h> declares mbsrtowcs. For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define wctomb innocuous_wctomb +#define mbsrtowcs innocuous_mbsrtowcs /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wctomb (); below. + which can conflict with char mbsrtowcs (); below. Prefer <limits.h> to <assert.h> if __STDC__ is defined, since <limits.h> exists even on freestanding compilers. */ @@ -7623,7 +6547,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <assert.h> #endif -#undef wctomb +#undef mbsrtowcs /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -7632,14 +6556,14 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char wctomb (); +char mbsrtowcs (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_wctomb) || defined (__stub___wctomb) +#if defined (__stub_mbsrtowcs) || defined (__stub___mbsrtowcs) choke me #else -char (*f) () = wctomb; +char (*f) () = mbsrtowcs; #endif #ifdef __cplusplus } @@ -7648,7 +6572,7 @@ char (*f) () = wctomb; int main () { -return f != wctomb; +return f != mbsrtowcs; ; return 0; } @@ -7675,21 +6599,21 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_func_wctomb=yes + ac_cv_func_mbsrtowcs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_wctomb=no +ac_cv_func_mbsrtowcs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_wctomb" >&5 -echo "${ECHO_T}$ac_cv_func_wctomb" >&6 -if test $ac_cv_func_wctomb = yes; then +echo "$as_me:$LINENO: result: $ac_cv_func_mbsrtowcs" >&5 +echo "${ECHO_T}$ac_cv_func_mbsrtowcs" >&6 +if test $ac_cv_func_mbsrtowcs = yes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_WCTOMB 1 +#define HAVE_MBSRTOWCS 1 _ACEOF fi @@ -7791,101 +6715,10 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for wcsdup" >&5 -echo $ECHO_N "checking for wcsdup... $ECHO_C" >&6 -if test "${ac_cv_func_wcsdup+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define wcsdup to an innocuous variant, in case <limits.h> declares wcsdup. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define wcsdup innocuous_wcsdup - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char wcsdup (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef wcsdup - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char wcsdup (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_wcsdup) || defined (__stub___wcsdup) -choke me -#else -char (*f) () = wcsdup; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != wcsdup; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_wcsdup=yes +if test "$ac_cv_func_wcwidth" = no && test "$ac_cv_header_wchar_h" = yes; then + WCWIDTH_OBJ=wcwidth.o else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_wcsdup=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_wcsdup" >&5 -echo "${ECHO_T}$ac_cv_func_wcsdup" >&6 -if test $ac_cv_func_wcsdup = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_WCSDUP 1 -_ACEOF - + WCWIDTH_OBJ= fi @@ -7900,23 +6733,23 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include <wchar.h> int main () { - +int +main () +{ mbstate_t ps; - mbstate_t *psp; - psp = (mbstate_t *)0; - + return 0; +} ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -7930,7 +6763,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' + { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7943,7 +6776,8 @@ sed 's/^/| /' conftest.$ac_ext >&5 bash_cv_have_mbstate_t=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $bash_cv_have_mbstate_t" >&5 echo "${ECHO_T}$bash_cv_have_mbstate_t" >&6 @@ -8034,16 +6868,7 @@ esac if test -f ${srcdir}/support/shobj-conf; then echo "$as_me:$LINENO: checking configuration for building shared libraries" >&5 echo $ECHO_N "checking configuration for building shared libraries... $ECHO_C" >&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 - - - - + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` @@ -8092,12 +6917,6 @@ msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file *) BUILD_DIR=`pwd` ;; esac -case "$BUILD_DIR" in -*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; -*) ;; -esac - - @@ -8479,7 +7298,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by readline $as_me 5.1-beta1, which was +This file was extended by readline $as_me 4.3, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8542,7 +7361,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -readline config.status 5.1-beta1 +readline config.status 4.3 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" @@ -8744,7 +7563,6 @@ s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t -s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t @@ -8755,6 +7573,8 @@ s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t +s,@CROSS_COMPILING_FLAG@,$CROSS_COMPILING_FLAG,;t t +s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t @@ -8762,6 +7582,7 @@ s,@AR@,$AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@MAKE_SHELL@,$MAKE_SHELL,;t t +s,@WCWIDTH_OBJ@,$WCWIDTH_OBJ,;t t s,@SHOBJ_CC@,$SHOBJ_CC,;t t s,@SHOBJ_CFLAGS@,$SHOBJ_CFLAGS,;t t s,@SHOBJ_LD@,$SHOBJ_LD,;t t @@ -8771,11 +7592,8 @@ s,@SHOBJ_LIBS@,$SHOBJ_LIBS,;t t s,@SHOBJ_STATUS@,$SHOBJ_STATUS,;t t s,@SHLIB_STATUS@,$SHLIB_STATUS,;t t s,@SHLIB_XLDFLAGS@,$SHLIB_XLDFLAGS,;t t -s,@SHLIB_DOT@,$SHLIB_DOT,;t t -s,@SHLIB_LIBPREF@,$SHLIB_LIBPREF,;t t s,@SHLIB_LIBSUFF@,$SHLIB_LIBSUFF,;t t s,@SHLIB_LIBVERSION@,$SHLIB_LIBVERSION,;t t -s,@SHLIB_DLLVERSION@,$SHLIB_DLLVERSION,;t t s,@SHLIB_LIBS@,$SHLIB_LIBS,;t t s,@SHLIB_MAJOR@,$SHLIB_MAJOR,;t t s,@SHLIB_MINOR@,$SHLIB_MINOR,;t t @@ -8783,7 +7601,6 @@ s,@STATIC_TARGET@,$STATIC_TARGET,;t t s,@SHARED_TARGET@,$SHARED_TARGET,;t t s,@STATIC_INSTALL_TARGET@,$STATIC_INSTALL_TARGET,;t t s,@SHARED_INSTALL_TARGET@,$SHARED_INSTALL_TARGET,;t t -s,@PURIFY@,$PURIFY,;t t s,@BUILD_DIR@,$BUILD_DIR,;t t s,@LOCAL_CFLAGS@,$LOCAL_CFLAGS,;t t s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t diff --git a/readline/configure.in b/readline/configure.in index a786398..c436cca 100644 --- a/readline/configure.in +++ b/readline/configure.in @@ -4,100 +4,38 @@ dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. +AC_REVISION([for Readline 4.3, version 2.45, from autoconf version] AC_ACVERSION) -# Copyright (C) 1987-2005 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_REVISION([for Readline 5.1, version 2.59]) - -AC_INIT(readline, 5.1-release, bug-readline@gnu.org) +AC_INIT(readline, 4.3, bug-readline@gnu.org) dnl make sure we are using a recent autoconf version AC_PREREQ(2.50) AC_CONFIG_SRCDIR(readline.h) -AC_CONFIG_AUX_DIR(./support) +dnl 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=5.1 +LIBVERSION=4.3 AC_CANONICAL_HOST dnl configure defaults opt_curses=no -opt_purify=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(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval) if test "$opt_curses" = "yes"; then prefer_curses=yes fi -if test "$opt_purify" = yes; then - PURIFY="purify" -else - PURIFY= -fi - dnl option parsing for optional features -opt_multibyte=yes opt_static_libs=yes -opt_shared_libs=yes +opt_shared_libs=no -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) -if test $opt_multibyte = no; then -AC_DEFINE(NO_MULTIBYTE_SUPPORT) -fi - -dnl load up the cross-building cache file -- add more cases and cache -dnl files as necessary - -dnl Note that host and target machine are the same, and different than the -dnl build machine. - -if test "x$cross_compiling" = "xyes"; then - case "${host}" in - *-cygwin*) - cross_cache=${srcdir}/cross-build/cygwin.cache - ;; - *-mingw*) - cross_cache=${srcdir}/cross-build/mingw.cache - ;; - i[[3456]]86-*-beos*) - cross_cache=${srcdir}/cross-build/x86-beos.cache - ;; - *) echo "configure: cross-compiling for $host is not supported" >&2 - ;; - esac - if test -n "${cross_cache}" && test -r "${cross_cache}"; then - echo "loading cross-build cache file ${cross_cache}" - . ${cross_cache} - fi - unset cross_cache - CROSS_COMPILE='-DCROSS_COMPILING' - AC_SUBST(CROSS_COMPILE) -fi - echo "" echo "Beginning configuration for readline-$LIBVERSION for ${host_cpu}-${host_vendor}-${host_os}" echo "" @@ -110,6 +48,50 @@ AC_PROG_CC dnl AC_AIX AC_MINIX +dnl BEGIN changes for CYGNUS cross-building for Cygwin + +dnl load up the cross-building cache file -- add more cases and cache +dnl files as necessary +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin.cache + LOCAL_CFLAGS="$LOCAL_CFLAGS -I${srcdir}/../libtermcap" + ;; + *-mingw32*) + cross_cache=${srcdir}/cross-build/mingw.cache + ;; + *) echo "configure: cross-compiling for a non-cygwin target is not supported" >&2 + ;; + esac + + if test "x$cross_cache" != "x"; then + if test -r "${cross_cache}"; then + echo "loading cross-build cache file ${cross_cache}" + . ${cross_cache} + fi + unset cross_cache + fi +fi + +if test "x$cross_compiling" = "xyes"; then + CROSS_COMPILING_FLAG=-DCROSS_COMPILING +else + CROSS_COMPILING_FLAG= +fi +AC_SUBST(CROSS_COMPILING_FLAG) + +if test -z "$CC_FOR_BUILD"; then + if test "x$cross_compiling" = "xno"; then + CC_FOR_BUILD='$(CC)' + else + CC_FOR_BUILD=gcc + fi +fi +AC_SUBST(CC_FOR_BUILD) + +dnl END changes for CYGNUS cross-building for Cygwin + # If we're using gcc and the user hasn't specified CFLAGS, add -O to CFLAGS. test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O" @@ -133,29 +115,19 @@ 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) -AC_CHECK_FUNCS(memmove putenv select setenv setlocale \ - strcasecmp strpbrk tcgetattr vsnprintf) -AC_CHECK_FUNCS(isascii isxdigit) -AC_CHECK_FUNCS(getpwent getpwnam getpwuid) +AC_CHECK_FUNCS(fcntl kill lstat memmove putenv select setenv setlocale \ + strcasecmp strpbrk tcgetattr vsnprintf isascii isxdigit \ + getpwnam getpwent getpwuid) AC_FUNC_STRCOLL -AC_CHECK_HEADERS(fcntl.h unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \ - limits.h locale.h pwd.h memory.h termcap.h termios.h termio.h) -AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h) - -AC_CHECK_HEADERS(sys/ptem.h,,, -[[ -#if HAVE_SYS_STREAM_H -# include <sys/stream.h> -#endif -]]) +AC_CHECK_HEADERS(unistd.h stdlib.h varargs.h stdarg.h string.h strings.h \ + limits.h sys/ptem.h sys/pte.h sys/stream.h sys/select.h \ + termcap.h termios.h termio.h sys/file.h locale.h memory.h \ + pwd.h) BASH_SYS_SIGNAL_VINTAGE BASH_SYS_REINSTALL_SIGHANDLERS @@ -163,7 +135,6 @@ BASH_SYS_REINSTALL_SIGHANDLERS BASH_FUNC_POSIX_SETJMP BASH_FUNC_LSTAT BASH_FUNC_STRCOLL -BASH_FUNC_CTYPE_NONASCII BASH_CHECK_GETPW_FUNCS @@ -208,13 +179,7 @@ esac # 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 - + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}` AC_SUBST(SHOBJ_CC) AC_SUBST(SHOBJ_CFLAGS) AC_SUBST(SHOBJ_LD) @@ -224,11 +189,8 @@ if test -f ${srcdir}/support/shobj-conf; then AC_SUBST(SHOBJ_STATUS) AC_SUBST(SHLIB_STATUS) AC_SUBST(SHLIB_XLDFLAGS) - AC_SUBST(SHLIB_DOT) - AC_SUBST(SHLIB_LIBPREF) AC_SUBST(SHLIB_LIBSUFF) AC_SUBST(SHLIB_LIBVERSION) - AC_SUBST(SHLIB_DLLVERSION) AC_SUBST(SHLIB_LIBS) AC_MSG_RESULT($SHLIB_STATUS) @@ -265,12 +227,6 @@ msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file *) BUILD_DIR=`pwd` ;; esac -case "$BUILD_DIR" in -*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; -*) ;; -esac - -AC_SUBST(PURIFY) AC_SUBST(BUILD_DIR) AC_SUBST(CFLAGS) diff --git a/readline/cross-build/cygwin.cache b/readline/cross-build/cygwin.cache new file mode 100644 index 0000000..b0bb49a --- /dev/null +++ b/readline/cross-build/cygwin.cache @@ -0,0 +1,46 @@ +# This file is a shell script that caches the results of configure +# tests for CYGWIN32 so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on CYGWIN32, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +# these may be necessary, but they are currently commented out +#ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} + +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='missing'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='present'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} +bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t='yes'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h='yes'} +ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'} +bash_cv_termcap_lib=${bash_cv_termcap_lib='-ltermcap'} + +bash_cv_tiocgwinsz_in_ioctl=${bash_cv_tiocgwinsz_in_ioctl='yes'} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent='yes'} + +# end of cross-build/cygwin32.cache diff --git a/readline/display.c b/readline/display.c index b22521b..b9bb2d3 100644 --- a/readline/display.c +++ b/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -41,6 +41,10 @@ #include <stdio.h> +#ifdef __MSDOS__ +# include <pc.h> +#endif + /* System-specific feature definitions and include files. */ #include "rldefs.h" #include "rlmbutil.h" @@ -118,24 +122,16 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay; int rl_display_fixed = 0; int _rl_suppress_redisplay = 0; -int _rl_want_redisplay = 0; /* The stuff that gets printed out before the actual text of the line. This is usually pointing to rl_prompt. */ char *rl_display_prompt = (char *)NULL; /* Pseudo-global variables declared here. */ - /* The visible cursor position. If you print some text, adjust this. */ -/* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale - supporting multibyte characters, and an absolute cursor position when - in such a locale. This is an artifact of the donated multibyte support. - Care must be taken when modifying its value. */ int _rl_last_c_pos = 0; int _rl_last_v_pos = 0; -static int cpos_adjusted; - /* Number of lines currently on screen minus 1. */ int _rl_vis_botlin = 0; @@ -186,27 +182,12 @@ static int prompt_invis_chars_first_line; static int prompt_last_screen_line; -static int prompt_physical_chars; - -/* Variables to save and restore prompt and display information. */ - -/* These are getting numerous enough that it's time to create a struct. */ - -static char *saved_local_prompt; -static char *saved_local_prefix; -static int saved_last_invisible; -static int saved_visible_length; -static int saved_prefix_length; -static int saved_invis_chars_first_line; -static int saved_physical_chars; - /* Expand the prompt string S and return the number of visible characters in *LP, if LP is not null. This is currently more-or-less a placeholder for expansion. LIP, if non-null is a place to store the index of the last invisible character in the returned string. NIFLP, if non-zero, is a place to store the number of invisible characters in - the first prompt line. The previous are used as byte counts -- indexes - into a character buffer. */ + the first prompt line. */ /* Current implementation: \001 (^A) start non-visible characters @@ -216,25 +197,19 @@ static int saved_physical_chars; \002 are assumed to be `visible'. */ static char * -expand_prompt (pmt, lp, lip, niflp, vlp) +expand_prompt (pmt, lp, lip, niflp) char *pmt; - int *lp, *lip, *niflp, *vlp; + int *lp, *lip, *niflp; { char *r, *ret, *p; - int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; + int l, rl, last, ignoring, ninvis, invfl; /* Short-circuit if we can. */ - if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0) + if (strchr (pmt, RL_PROMPT_START_IGNORE) == 0) { r = savestring (pmt); if (lp) *lp = strlen (r); - if (lip) - *lip = 0; - if (niflp) - *niflp = 0; - if (vlp) - *vlp = lp ? *lp : strlen (r); return r; } @@ -242,9 +217,8 @@ expand_prompt (pmt, lp, lip, niflp, vlp) r = ret = (char *)xmalloc (l + 1); invfl = 0; /* invisible chars in first line of prompt */ - invflset = 0; /* we only want to set invfl once */ - for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++) + for (rl = ignoring = last = ninvis = 0, p = pmt; p && *p; p++) { /* This code strips the invisible character string markers RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */ @@ -256,47 +230,18 @@ expand_prompt (pmt, lp, lip, niflp, vlp) else if (ignoring && *p == RL_PROMPT_END_IGNORE) { ignoring = 0; - if (p[-1] != RL_PROMPT_START_IGNORE) - last = r - ret - 1; + last = r - ret - 1; continue; } else { -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - pind = p - pmt; - ind = _rl_find_next_mbchar (pmt, pind, 1, MB_FIND_NONZERO); - l = ind - pind; - while (l--) - *r++ = *p++; - if (!ignoring) - { - rl += ind - pind; - physchars += _rl_col_width (pmt, pind, ind); - } - else - ninvis += ind - pind; - p--; /* compensate for later increment */ - } + *r++ = *p; + if (!ignoring) + rl++; else -#endif - { - *r++ = *p; - if (!ignoring) - { - rl++; /* visible length byte counter */ - physchars++; - } - else - ninvis++; /* invisible chars byte counter */ - } - - if (invflset == 0 && rl >= _rl_screenwidth) - { - invfl = ninvis; - invflset = 1; - } + ninvis++; + if (rl == _rl_screenwidth) + invfl = ninvis; } } @@ -310,8 +255,6 @@ expand_prompt (pmt, lp, lip, niflp, vlp) *lip = last; if (niflp) *niflp = invfl; - if (vlp) - *vlp = physchars; return ret; } @@ -323,7 +266,7 @@ _rl_strip_prompt (pmt) { char *ret; - ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); + ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL); return ret; } @@ -356,8 +299,7 @@ rl_expand_prompt (prompt) FREE (local_prompt_prefix); local_prompt = local_prompt_prefix = (char *)0; - prompt_last_invisible = prompt_invis_chars_first_line = 0; - prompt_visible_length = prompt_physical_chars = 0; + prompt_last_invisible = prompt_visible_length = 0; if (prompt == 0 || *prompt == 0) return (0); @@ -368,8 +310,7 @@ rl_expand_prompt (prompt) /* The prompt is only one logical line, though it might wrap. */ local_prompt = expand_prompt (prompt, &prompt_visible_length, &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); + &prompt_invis_chars_first_line); local_prompt_prefix = (char *)0; return (prompt_visible_length); } @@ -379,15 +320,13 @@ rl_expand_prompt (prompt) t = ++p; local_prompt = expand_prompt (p, &prompt_visible_length, &prompt_last_invisible, - (int *)NULL, - &prompt_physical_chars); + &prompt_invis_chars_first_line); c = *t; *t = '\0'; /* The portion of the prompt string up to and including the final newline is now null-terminated. */ local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, (int *)NULL, - &prompt_invis_chars_first_line, - (int *)NULL); + &prompt_invis_chars_first_line); *t = c; return (prompt_prefix_length); } @@ -445,8 +384,8 @@ rl_redisplay () { register int in, out, c, linenum, cursor_linenum; register char *line; - int c_pos, inv_botlin, lb_botlin, lb_linenum, o_cpos; - int newlines, lpos, temp, modmark, n0, num; + int c_pos, inv_botlin, lb_botlin, lb_linenum; + int newlines, lpos, temp; char *prompt_this_line; #if defined (HANDLE_MULTIBYTE) wchar_t wc; @@ -462,7 +401,7 @@ rl_redisplay () if (!rl_display_prompt) rl_display_prompt = ""; - if (invisible_line == 0 || vis_lbreaks == 0) + if (invisible_line == 0) { init_line_structures (0); rl_on_new_line (); @@ -476,12 +415,10 @@ rl_redisplay () /* Mark the line as modified or not. We only do this for history lines. */ - modmark = 0; if (_rl_mark_modified_lines && current_history () && rl_undo_list) { line[out++] = '*'; line[out] = '\0'; - modmark = 1; } /* If someone thought that the redisplay was handled, but the currently @@ -535,7 +472,7 @@ rl_redisplay () } } - prompt_physical_chars = pmtlen = strlen (prompt_this_line); + pmtlen = strlen (prompt_this_line); temp = pmtlen + out + 2; if (temp >= line_size) { @@ -594,15 +531,9 @@ rl_redisplay () /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; -#if 0 lpos = out - wrap_offset; -#else - lpos = prompt_physical_chars + modmark; -#endif - #if defined (HANDLE_MULTIBYTE) memset (_rl_wrapped_line, 0, vis_lbsize); - num = 0; #endif /* prompt_invis_chars_first_line is the number of invisible characters in @@ -619,34 +550,17 @@ rl_redisplay () prompt_invis_chars_first_line variable could be made into an array saying how many invisible characters there are per line, but that's probably too much work for the benefit gained. How many people have - prompts that exceed two physical lines? - Additional logic fix from Edward Catmur <ed@catmur.co.uk> */ -#if defined (HANDLE_MULTIBYTE) - n0 = num; - temp = local_prompt ? strlen (local_prompt) : 0; - while (num < temp) - { - if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth) - { - num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - break; - } - num++; - } - temp = num + -#else + prompts that exceed two physical lines? */ temp = ((newlines + 1) * _rl_screenwidth) + -#endif /* !HANDLE_MULTIBYTE */ - ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line - : ((newlines == 1) ? wrap_offset : 0)) - : ((newlines == 0) ? wrap_offset :0)); - - inv_lbreaks[++newlines] = temp; -#if defined (HANDLE_MULTIBYTE) - lpos -= _rl_col_width (local_prompt, n0, num); +#if 0 + ((newlines == 0) ? prompt_invis_chars_first_line : 0) + #else - lpos -= _rl_screenwidth; + ((newlines == 0 && local_prompt_prefix == 0) ? prompt_invis_chars_first_line : 0) + #endif + ((newlines == 1) ? wrap_offset : 0); + + inv_lbreaks[++newlines] = temp; + lpos -= _rl_screenwidth; } prompt_last_screen_line = newlines; @@ -676,7 +590,7 @@ rl_redisplay () #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - if (MB_INVALIDCH (wc_bytes)) + if (wc_bytes == (size_t)-1 || wc_bytes == (size_t)-2) { /* Byte sequence is invalid or shortened. Assume that the first byte represents a character. */ @@ -685,12 +599,12 @@ rl_redisplay () wc_width = 1; memset (&ps, 0, sizeof (mbstate_t)); } - else if (MB_NULLWCH (wc_bytes)) + else if (wc_bytes == (size_t)0) break; /* Found '\0' */ else { temp = wcwidth (wc); - wc_width = (temp >= 0) ? temp : 1; + wc_width = (temp < 0) ? 1 : temp; } } #endif @@ -855,7 +769,7 @@ rl_redisplay () if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) { - int nleft, pos, changed_screen_line, tx; + int nleft, pos, changed_screen_line; if (!rl_display_fixed || forced_display) { @@ -886,26 +800,9 @@ rl_redisplay () /* For each line in the buffer, do the updating display. */ for (linenum = 0; linenum <= inv_botlin; linenum++) { - o_cpos = _rl_last_c_pos; - cpos_adjusted = 0; update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum, VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin); - /* update_line potentially changes _rl_last_c_pos, but doesn't - take invisible characters into account, since _rl_last_c_pos - is an absolute cursor position in a multibyte locale. See - if compensating here is the right thing, or if we have to - change update_line itself. There is one case in which - update_line adjusts _rl_last_c_pos itself (so it can pass - _rl_move_cursor_relative accurate values); it communicates - this back by setting cpos_adjusted */ - if (linenum == 0 && (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && - cpos_adjusted == 0 && - _rl_last_c_pos != o_cpos && - _rl_last_c_pos > wrap_offset && - o_cpos < prompt_last_invisible) - _rl_last_c_pos -= wrap_offset; - /* If this is the line with the prompt, we might need to compensate for invisible characters in the new line. Do this only if there is not more than one new line (which @@ -917,10 +814,7 @@ rl_redisplay () (wrap_offset > visible_wrap_offset) && (_rl_last_c_pos < visible_first_line_len)) { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - nleft = _rl_screenwidth - _rl_last_c_pos; - else - nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; + nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; if (nleft) _rl_clear_to_eol (nleft); } @@ -956,7 +850,7 @@ rl_redisplay () the physical cursor position on the screen stays the same, but the buffer position needs to be adjusted to account for invisible characters. */ - if ((MB_CUR_MAX == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) + if (cursor_linenum == 0 && wrap_offset) _rl_last_c_pos += wrap_offset; } @@ -977,7 +871,7 @@ rl_redisplay () #endif _rl_output_some_chars (local_prompt, nleft); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft) - wrap_offset; + _rl_last_c_pos = _rl_col_width(local_prompt, 0, nleft); else _rl_last_c_pos = nleft; } @@ -989,31 +883,18 @@ rl_redisplay () start of the line and the cursor position. */ nleft = c_pos - pos; - /* NLEFT is now a number of characters in a buffer. When in a - multibyte locale, however, _rl_last_c_pos is an absolute cursor - position that doesn't take invisible characters in the prompt - into account. We use a fudge factor to compensate. */ - /* Since _rl_backspace() doesn't know about invisible characters in the prompt, and there's no good way to tell it, we compensate for those characters here and call _rl_backspace() directly. */ if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { + _rl_backspace (_rl_last_c_pos - nleft); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - tx = _rl_col_width (&visible_line[pos], 0, nleft) - visible_wrap_offset; + _rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft); else - tx = nleft; - if (_rl_last_c_pos > tx) - { - _rl_backspace (_rl_last_c_pos - tx); /* XXX */ - _rl_last_c_pos = tx; - } + _rl_last_c_pos = nleft; } - /* We need to note that in a multibyte locale we are dealing with - _rl_last_c_pos as an absolute cursor position, but moving to a - point specified by a buffer position (NLEFT) that doesn't take - invisible characters into account. */ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) _rl_move_cursor_relative (nleft, &invisible_line[pos]); else if (nleft != _rl_last_c_pos) @@ -1172,10 +1053,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) the exact cursor position and cut-and-paste with certain terminal emulators. In this calculation, TEMP is the physical screen position of the cursor. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - temp = _rl_last_c_pos; - else - temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); + temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode && _rl_last_v_pos == current_line - 1) { @@ -1195,12 +1073,12 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps); - if (MB_INVALIDCH (ret)) + if (ret == (size_t)-1 || ret == (size_t)-2) { tempwidth = 1; ret = 1; } - else if (MB_NULLWCH (ret)) + else if (ret == 0) tempwidth = 0; else tempwidth = wcwidth (wc); @@ -1217,7 +1095,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps); if (ret != 0 && bytes != 0) { - if (MB_INVALIDCH (ret)) + if (ret == (size_t)-1 || ret == (size_t)-2) memmove (old+bytes, old+1, strlen (old+1)); else memmove (old+bytes, old+ret, strlen (old+ret)); @@ -1240,7 +1118,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) putc (new[0], rl_outstream); else putc (' ', rl_outstream); - _rl_last_c_pos = 1; + _rl_last_c_pos = 1; /* XXX */ _rl_last_v_pos++; if (old[0] && new[0]) old[0] = new[0]; @@ -1252,37 +1130,18 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - /* See if the old line is a subset of the new line, so that the - only change is adding characters. */ - temp = (omax < nmax) ? omax : nmax; - if (memcmp (old, new, temp) == 0) - { - ofd = old + temp; - nfd = new + temp; - } - else - { - memset (&ps_new, 0, sizeof(mbstate_t)); - memset (&ps_old, 0, sizeof(mbstate_t)); + memset (&ps_new, 0, sizeof(mbstate_t)); + memset (&ps_old, 0, sizeof(mbstate_t)); - if (omax == nmax && STREQN (new, old, omax)) - { - ofd = old + omax; - nfd = new + nmax; - } - else - { - new_offset = old_offset = 0; - for (ofd = old, nfd = new; - (ofd - old < omax) && *ofd && - _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); ) - { - old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY); - new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY); - ofd = old + old_offset; - nfd = new + new_offset; - } - } + new_offset = old_offset = 0; + for (ofd = old, nfd = new; + (ofd - old < omax) && *ofd && + _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); ) + { + old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY); + new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY); + ofd = old + old_offset; + nfd = new + new_offset; } } else @@ -1314,11 +1173,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) memset (&ps_old, 0, sizeof (mbstate_t)); memset (&ps_new, 0, sizeof (mbstate_t)); -#if 0 - /* On advice from jir@yamato.ibm.com */ _rl_adjust_point (old, ols - old, &ps_old); _rl_adjust_point (new, nls - new, &ps_new); -#endif if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0) break; @@ -1381,7 +1237,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (_rl_last_v_pos != current_line) { _rl_move_vert (current_line); - if ((MB_CUR_MAX == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) + if (current_line == 0 && visible_wrap_offset) _rl_last_c_pos += visible_wrap_offset; } @@ -1410,12 +1266,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) #endif _rl_output_some_chars (local_prompt, lendiff); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - /* We take wrap_offset into account here so we can pass correct - information to _rl_move_cursor_relative. */ - _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff) - wrap_offset; - cpos_adjusted = 1; - } + _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff); else _rl_last_c_pos = lendiff; } @@ -1477,7 +1328,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) insert_some_chars (nfd, lendiff, col_lendiff); _rl_last_c_pos += col_lendiff; } - else if ((MB_CUR_MAX == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0) + else if (*ols == 0) { /* At the end of a line the characters do not have to be "inserted". They can just be placed on the screen. */ @@ -1500,11 +1351,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if ((temp - lendiff) > 0) { _rl_output_some_chars (nfd + lendiff, temp - lendiff); -#if 1 - /* XXX -- this bears closer inspection. Fixes a redisplay bug - reported against bash-3.0-alpha by Andreas Schwab involving - multibyte characters and prompt strings with invisible - characters, but was previously disabled. */ +#if 0 _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff); #else _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff); @@ -1516,10 +1363,6 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* cannot insert chars, write to EOL */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; - /* If we're in a multibyte locale and were before the last invisible - char in the current line (which implies we just output some invisible - characters) we need to adjust _rl_last_c_pos, since it represents - a physical character position. */ } } else /* Delete characters from line. */ @@ -1551,7 +1394,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (temp > 0) { _rl_output_some_chars (nfd, temp); - _rl_last_c_pos += col_temp; /* XXX */ + _rl_last_c_pos += col_temp; } lendiff = (oe - old) - (ne - new); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1587,13 +1430,12 @@ rl_on_new_line () /* Tell the update routines that we have moved onto a new line with the prompt already displayed. Code originally from the version of readline - distributed with CLISP. rl_expand_prompt must have already been called - (explicitly or implicitly). This still doesn't work exactly right. */ + distributed with CLISP. */ int rl_on_new_line_with_prompt () { int prompt_size, i, l, real_screenwidth, newlines; - char *prompt_last_line, *lprompt; + char *prompt_last_line; /* Initialize visible_line and invisible_line to ensure that they can hold the already-displayed prompt. */ @@ -1602,9 +1444,8 @@ rl_on_new_line_with_prompt () /* Make sure the line structures hold the already-displayed prompt for redisplay. */ - lprompt = local_prompt ? local_prompt : rl_prompt; - strcpy (visible_line, lprompt); - strcpy (invisible_line, lprompt); + strcpy (visible_line, rl_prompt); + strcpy (invisible_line, rl_prompt); /* If the prompt contains newlines, take the last tail. */ prompt_last_line = strrchr (rl_prompt, '\n'); @@ -1613,7 +1454,7 @@ rl_on_new_line_with_prompt () l = strlen (prompt_last_line); if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l); /* XXX */ + _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l); else _rl_last_c_pos = l; @@ -1639,8 +1480,6 @@ rl_on_new_line_with_prompt () vis_lbreaks[newlines] = l; visible_wrap_offset = 0; - rl_display_prompt = rl_prompt; /* XXX - make sure it's set */ - return 0; } @@ -1662,8 +1501,6 @@ rl_forced_update_display () } /* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices. - (Well, when we don't have multibyte characters, _rl_last_c_pos is a - buffer index.) DATA is the contents of the screen line of interest; i.e., where the movement is being done. */ void @@ -1672,40 +1509,28 @@ _rl_move_cursor_relative (new, data) const char *data; { register int i; - int woff; /* number of invisible chars on current line */ - int cpos, dpos; /* current and desired cursor positions */ - woff = W_OFFSET (_rl_last_v_pos, wrap_offset); - cpos = _rl_last_c_pos; + /* If we don't have to do anything, then return. */ #if defined (HANDLE_MULTIBYTE) /* If we have multibyte characters, NEW is indexed by the buffer point in a multibyte string, but _rl_last_c_pos is the display position. In this case, NEW's display position is not obvious and must be - calculated. We need to account for invisible characters in this line, - as long as we are past them and they are counted by _rl_col_width. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + calculated. */ + if (MB_CUR_MAX == 1 || rl_byte_oriented) { - dpos = _rl_col_width (data, 0, new); - if (dpos > woff) - dpos -= woff; + if (_rl_last_c_pos == new) + return; } - else -#endif - dpos = new; - - /* If we don't have to do anything, then return. */ - if (cpos == dpos) + else if (_rl_last_c_pos == _rl_col_width (data, 0, new)) return; +#else + if (_rl_last_c_pos == new) return; +#endif /* It may be faster to output a CR, and then move forwards instead of moving backwards. */ /* i == current physical cursor position. */ -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - i = _rl_last_c_pos; - else -#endif - i = _rl_last_c_pos - woff; + i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset); if (new == 0 || CR_FASTER (new, _rl_last_c_pos) || (_rl_term_autowrap && i == _rl_screenwidth)) { @@ -1714,10 +1539,10 @@ _rl_move_cursor_relative (new, data) #else tputs (_rl_term_cr, 1, _rl_output_character_function); #endif /* !__MSDOS__ */ - cpos = _rl_last_c_pos = 0; + _rl_last_c_pos = 0; } - if (cpos < dpos) + if (_rl_last_c_pos < new) { /* Move the cursor forward. We do it by printing the command to move the cursor forward if there is one, else print that @@ -1731,11 +1556,31 @@ _rl_move_cursor_relative (new, data) #if defined (HACK_TERMCAP_MOTION) if (_rl_term_forward_char) { - for (i = cpos; i < dpos; i++) - tputs (_rl_term_forward_char, 1, _rl_output_character_function); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int width; + width = _rl_col_width (data, _rl_last_c_pos, new); + for (i = 0; i < width; i++) + tputs (_rl_term_forward_char, 1, _rl_output_character_function); + } + else + { + for (i = _rl_last_c_pos; i < new; i++) + tputs (_rl_term_forward_char, 1, _rl_output_character_function); + } + } + else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + tputs (_rl_term_cr, 1, _rl_output_character_function); + for (i = 0; i < new; i++) + putc (data[i], rl_outstream); } else -#endif /* HACK_TERMCAP_MOTION */ + for (i = _rl_last_c_pos; i < new; i++) + putc (data[i], rl_outstream); + +#else /* !HACK_TERMCAP_MOTION */ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { tputs (_rl_term_cr, 1, _rl_output_character_function); @@ -1743,20 +1588,32 @@ _rl_move_cursor_relative (new, data) putc (data[i], rl_outstream); } else - for (i = cpos; i < new; i++) + for (i = _rl_last_c_pos; i < new; i++) putc (data[i], rl_outstream); - } +#endif /* !HACK_TERMCAP_MOTION */ + + } #if defined (HANDLE_MULTIBYTE) /* NEW points to the buffer point, but _rl_last_c_pos is the display point. The byte length of the string is probably bigger than the column width of the string, which means that if NEW == _rl_last_c_pos, then NEW's display point is less than _rl_last_c_pos. */ + else if (_rl_last_c_pos >= new) +#else + else if (_rl_last_c_pos > new) #endif - else if (cpos > dpos) - _rl_backspace (cpos - dpos); + { + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + _rl_backspace (_rl_last_c_pos - _rl_col_width (data, 0, new)); + else + _rl_backspace (_rl_last_c_pos - new); + } - _rl_last_c_pos = dpos; + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + _rl_last_c_pos = _rl_col_width (data, 0, new); + else + _rl_last_c_pos = new; } /* PWP: move the cursor up or down. */ @@ -1782,9 +1639,18 @@ _rl_move_vert (to) } else { /* delta < 0 */ +#ifdef __MSDOS__ + int row, col; + + fflush (rl_outstream); /* make sure the cursor pos is current! */ + ScreenGetCursor (&row, &col); + ScreenSetCursor (row + delta, col); + i = -delta; /* in case someone wants to use it after the loop */ +#else /* !__MSDOS__ */ if (_rl_term_up && *_rl_term_up) for (i = 0; i < -delta; i++) tputs (_rl_term_up, 1, _rl_output_character_function); +#endif /* !__MSDOS__ */ } _rl_last_v_pos = to; /* Now TO is here */ @@ -1845,9 +1711,9 @@ rl_character_len (c, pos) return ((ISPRINT (uc)) ? 1 : 2); } + /* How to print things in the "echo-area". The prompt is treated as a mini-modeline. */ -static int msg_saved_prompt = 0; #if defined (USE_VARARGS) int @@ -1878,19 +1744,8 @@ rl_message (va_alist) #endif va_end (args); - if (saved_local_prompt == 0) - { - rl_save_prompt (); - msg_saved_prompt = 1; - } rl_display_prompt = msg_buf; - local_prompt = expand_prompt (msg_buf, &prompt_visible_length, - &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); - local_prompt_prefix = (char *)NULL; (*rl_redisplay_function) (); - return 0; } #else /* !USE_VARARGS */ @@ -1900,20 +1755,8 @@ rl_message (format, arg1, arg2) { sprintf (msg_buf, format, arg1, arg2); msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */ - rl_display_prompt = msg_buf; - if (saved_local_prompt == 0) - { - rl_save_prompt (); - msg_saved_prompt = 1; - } - local_prompt = expand_prompt (msg_buf, &prompt_visible_length, - &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); - local_prompt_prefix = (char *)NULL; (*rl_redisplay_function) (); - return 0; } #endif /* !USE_VARARGS */ @@ -1923,11 +1766,6 @@ int rl_clear_message () { rl_display_prompt = rl_prompt; - if (msg_saved_prompt) - { - rl_restore_prompt (); - msg_saved_prompt = 0; - } (*rl_redisplay_function) (); return 0; } @@ -1942,20 +1780,21 @@ rl_reset_line_state () return 0; } +static char *saved_local_prompt; +static char *saved_local_prefix; +static int saved_last_invisible; +static int saved_visible_length; + void rl_save_prompt () { saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; - saved_prefix_length = prompt_prefix_length; saved_last_invisible = prompt_last_invisible; saved_visible_length = prompt_visible_length; - saved_invis_chars_first_line = prompt_invis_chars_first_line; - saved_physical_chars = prompt_physical_chars; local_prompt = local_prompt_prefix = (char *)0; - prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; - prompt_invis_chars_first_line = prompt_physical_chars = 0; + prompt_last_invisible = prompt_visible_length = 0; } void @@ -1966,16 +1805,8 @@ rl_restore_prompt () local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; - prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; - prompt_invis_chars_first_line = saved_invis_chars_first_line; - prompt_physical_chars = saved_physical_chars; - - /* can test saved_local_prompt to see if prompt info has been saved. */ - saved_local_prompt = saved_local_prefix = (char *)0; - saved_last_invisible = saved_visible_length = saved_prefix_length = 0; - saved_invis_chars_first_line = saved_physical_chars = 0; } char * @@ -2008,9 +1839,6 @@ _rl_make_prompt_for_search (pchar) prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length + 1; } - - prompt_physical_chars = saved_physical_chars + 1; - return pmt; } @@ -2036,9 +1864,12 @@ void _rl_clear_to_eol (count) int count; { +#ifndef __MSDOS__ if (_rl_term_clreol) tputs (_rl_term_clreol, 1, _rl_output_character_function); - else if (count) + else +#endif + if (count) space_to_eol (count); } @@ -2059,10 +1890,15 @@ space_to_eol (count) void _rl_clear_screen () { +#if defined (__GO32__) + ScreenClear (); /* FIXME: only works in text modes */ + ScreenSetCursor (0, 0); /* term_clrpag is "cl" which homes the cursor */ +#else if (_rl_term_clrpag) tputs (_rl_term_clrpag, 1, _rl_output_character_function); else rl_crlf (); +#endif } /* Insert COUNT characters from STRING to the output stream at column COL. */ @@ -2071,9 +1907,9 @@ insert_some_chars (string, count, col) char *string; int count, col; { -#if defined (__MSDOS__) || defined (__MINGW32__) +#if defined(__MSDOS__) || defined(__MINGW32__) _rl_output_some_chars (string, count); -#else +#else /* !__MSDOS__ && !__MINGW32__ */ /* DEBUGGING */ if (MB_CUR_MAX == 1 || rl_byte_oriented) if (count != col) @@ -2112,7 +1948,7 @@ insert_some_chars (string, count, col) if (_rl_term_ei && *_rl_term_ei) tputs (_rl_term_ei, 1, _rl_output_character_function); } -#endif /* __MSDOS__ || __MINGW32__ */ +#endif /* !__MSDOS__ */ } /* Delete COUNT characters from the display line. */ @@ -2123,7 +1959,7 @@ delete_chars (count) if (count > _rl_screenwidth) /* XXX */ return; -#if !defined (__MSDOS__) && !defined (__MINGW32__) +#if !defined(__MSDOS__) && !defined(__MINGW32__) if (_rl_term_DC && *_rl_term_DC) { char *buffer; @@ -2192,22 +2028,32 @@ static void redraw_prompt (t) char *t; { - char *oldp; + char *oldp, *oldl, *oldlprefix; + int oldlen, oldlast, oldplen, oldninvis; + /* Geez, I should make this a struct. */ oldp = rl_display_prompt; - rl_save_prompt (); + oldl = local_prompt; + oldlprefix = local_prompt_prefix; + oldlen = prompt_visible_length; + oldplen = prompt_prefix_length; + oldlast = prompt_last_invisible; + oldninvis = prompt_invis_chars_first_line; rl_display_prompt = t; local_prompt = expand_prompt (t, &prompt_visible_length, &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); + &prompt_invis_chars_first_line); local_prompt_prefix = (char *)NULL; - rl_forced_update_display (); rl_display_prompt = oldp; - rl_restore_prompt(); + local_prompt = oldl; + local_prompt_prefix = oldlprefix; + prompt_visible_length = oldlen; + prompt_prefix_length = oldplen; + prompt_last_invisible = oldlast; + prompt_invis_chars_first_line = oldninvis; } /* Redisplay the current line after a SIGWINCH is received. */ @@ -2317,7 +2163,7 @@ _rl_col_width (str, start, end) while (point < start) { tmp = mbrlen (str + point, max, &ps); - if (MB_INVALIDCH ((size_t)tmp)) + if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2) { /* In this case, the bytes are invalid or too short to compose a multibyte character, so we assume that the first byte represents @@ -2329,8 +2175,8 @@ _rl_col_width (str, start, end) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } - else if (MB_NULLWCH (tmp)) - break; /* Found '\0' */ + else if (tmp == 0) + break; /* Found '\0' */ else { point += tmp; @@ -2346,7 +2192,7 @@ _rl_col_width (str, start, end) while (point < end) { tmp = mbrtowc (&wc, str + point, max, &ps); - if (MB_INVALIDCH ((size_t)tmp)) + if ((size_t)tmp == (size_t)-1 || (size_t)tmp == (size_t)-2) { /* In this case, the bytes are invalid or too short to compose a multibyte character, so we assume that the first byte represents @@ -2361,8 +2207,8 @@ _rl_col_width (str, start, end) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } - else if (MB_NULLWCH (tmp)) - break; /* Found '\0' */ + else if (tmp == 0) + break; /* Found '\0' */ else { point += tmp; diff --git a/readline/doc/ChangeLog.gdb b/readline/doc/ChangeLog.gdb new file mode 100644 index 0000000..854d3ee --- /dev/null +++ b/readline/doc/ChangeLog.gdb @@ -0,0 +1,75 @@ +2003-09-14 Andrew Cagney <cagney@redhat.com> + + * history.0: Delete generated file. + +2002-02-24 Elena Zannoni <ezannoni@redhat.com> + + * ChangeLog.gdb: Renamed from ChangeLog. + +2002-01-20 Eli Zaretskii <eliz@is.elta.co.il> + + * rluser.texinfo (Sample Init File): Prevent overfull hboxes. + From Brian Youmans <3diff@gnu.org>. + +2000-07-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * Import of readline 4.1. + + Regenerated inc-hist.texinfo as copy of hsuser.texinfo, for + inclusion in the gdb manual. + + New file: rluserman.texinfo + +Tue Apr 18 15:43:52 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * readline.0: Delete. Generated by Makefile, deleted by distclean + rule. + +Tue Mar 28 16:06:22 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * inc-hist.texinfo, rluser.texinfo: Revert change Fri Mar 24 + 18:04:32 2000 Andrew Cagney <cagney@b1.cygnus.com>. + Unconditionally provide @chapter and @node. + +Fri Mar 24 18:04:32 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * inc-hist.texinfo: When GDBN omit the chapter/node. + * rluser.texinfo (Command Line Editing): Ditto. + +1999-08-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * hsuser.texinfo (Bash History Builtins): Comment out btindex + commands. + + * inc-hist.texinfo: New file. Same as hsuser.texinfo, but w/o + cross reference to GNU History Manual. + +Tue Dec 22 10:07:58 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * hsuser.texinfo (Bash History Builtins): comment out btindex + commands. + + * Import of Readline 2.2.1. + + New files: readline.0, readline.3, texi2dvi, texi2html. + +1998-12-17 Felix Lee <flee@cygnus.com> + + * inc-hist.texi: @node line "Using History" was wrong. + +Thu Jul 9 17:03:26 1998 Edith Epstein <eepstein@sophia.cygnus.com> + + * inc-hist.texi: one line change. + +Wed Sep 20 12:57:29 1995 Ian Lance Taylor <ian@cygnus.com> + + * Makefile.in (maintainer-clean): New synonym for realclean. + +Tue Feb 2 11:40:04 1993 Roland H. Pesch (pesch@fowanton.cygnus.com) + + * Makefile.in: configurable (and useable) Makefile template + * Makefile: removed, replaced with configurable Makefile.in + * texindex.c texinfo.tex: remove, replacing w/refs to tools + elsewhere in distribution tree + * configure.in: pro forma configure stub + * ChangeLog: new file diff --git a/readline/doc/Makefile.in b/readline/doc/Makefile.in index 692a4e8..8a85ae1 100644 --- a/readline/doc/Makefile.in +++ b/readline/doc/Makefile.in @@ -1,7 +1,7 @@ # This makefile for Readline library documentation is in -*- text -*- mode. # Emacs likes it that way. -# Copyright (C) 1996-2004 Free Software Foundation, Inc. +# Copyright (C) 1996 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 @@ -52,18 +52,14 @@ TEXI2DVI = $(srcdir)/texi2dvi TEXI2HTML = $(srcdir)/texi2html QUIETPS = #set this to -q to shut up dvips PAPERSIZE = letter -PSDPI = 600 +PSDPI = 300 # I don't have any 600-dpi printers DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky -# These tools might not be available; they're not required -DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} -PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ - -RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \ - $(srcdir)/rltech.texi $(srcdir)/version.texi \ - $(srcdir)/rluserman.texi -HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \ - $(srcdir)/hstech.texi $(srcdir)/version.texi +RLSRC = $(srcdir)/rlman.texinfo $(srcdir)/rluser.texinfo \ + $(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo \ + $(srcdir)/rluserman.texinfo +HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \ + $(srcdir)/hstech.texinfo $(srcdir)/manvers.texinfo # This should be a program that converts troff to an ascii-readable format NROFF = groff -Tascii @@ -76,54 +72,39 @@ INFOOBJ = readline.info history.info rluserman.info PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps HTMLOBJ = readline.html history.html rluserman.html TEXTOBJ = readline.0 history.0 -PDFOBJ = readline.pdf history.pdf rluserman.pdf -INTERMEDIATE_OBJ = rlman.dvi +INTERMEDIATE_OBJ = rlman.dvi hist.dvi rluserman.dvi DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) -.SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf +.SUFFIXES: .0 .3 .ps .txt .dvi .3.0: $(RM) $@ -${NROFF} -man $< > $@ -.ps.pdf: - $(RM) $@ - -${PSPDF} $< - -.dvi.pdf: - $(RM) $@ - -${DVIPDF} $< - all: info dvi html ps text nodvi: info html text -info: $(INFOOBJ) -dvi: $(DVIOBJ) -ps: $(PSOBJ) -html: $(HTMLOBJ) -text: $(TEXTOBJ) -pdf: $(PDFOBJ) - readline.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo mv rlman.dvi readline.dvi readline.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo rluserman.dvi: $(RLSRC) - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texinfo rluserman.info: $(RLSRC) - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texinfo history.dvi: ${HISTSRC} - TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo + mv hist.dvi history.dvi history.info: ${HISTSRC} - $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/hist.texinfo readline.ps: readline.dvi $(RM) $@ @@ -141,15 +122,22 @@ 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 + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texinfo sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html - $(RM) rlman.html rluserman.html: ${RLSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texinfo history.html: ${HISTSRC} - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo + sed -e 's:hist.html:history.html:g' hist.html > history.html + $(RM) hist.html + +info: $(INFOOBJ) +dvi: $(DVIOBJ) +ps: $(PSOBJ) +html: $(HTMLOBJ) +text: $(TEXTOBJ) readline.0: readline.3 @@ -163,14 +151,9 @@ history_3.ps: history.3 ${RM} $@ ${GROFF} -man < $(srcdir)/history.3 > $@ -readline.pdf: readline.dvi -history.pdf: history.dvi -rluserman.pdf: rluserman.dvi - clean: - $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \ - *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \ - core *.core + $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \ + *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core mostlyclean: clean @@ -186,7 +169,6 @@ maybe-clean: maintainer-clean: clean $(RM) $(DIST_DOCS) $(RM) $(INTERMEDIATE_OBJ) - $(RM) $(PDFOBJ) $(RM) Makefile installdirs: $(topdir)/support/mkdirs diff --git a/readline/doc/history.0 b/readline/doc/history.0 deleted file mode 100644 index 3362294..0000000 --- a/readline/doc/history.0 +++ /dev/null @@ -1,488 +0,0 @@ -HISTORY(3) HISTORY(3) - - - -NNAAMMEE - history - GNU History Library - -CCOOPPYYRRIIGGHHTT - The GNU History Library is Copyright (C) 1989-2002 by the Free Software - Foundation, Inc. - -DDEESSCCRRIIPPTTIIOONN - Many programs read input from the user a line at a time. The GNU His- - tory 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. - - -HHIISSTTOORRYY EEXXPPAANNSSIIOONN - The history library supports a history expansion feature that is iden- - tical to the history expansion in bbaasshh.. This section describes what - syntax features are available. - - 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 is usually performed immediately after a complete - line is read. It takes place in two parts. The first is to determine - which line from the history list to use during substitution. The sec- - ond is to select portions of that line for inclusion into the current - one. The line selected from the history is the _e_v_e_n_t, and the portions - of that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are - available to manipulate the selected words. The line is broken into - words in the same fashion as bbaasshh does when reading input, so that sev- - eral words that would otherwise be separated are considered one word - when surrounded by quotes (see the description of hhiissttoorryy__ttookkeenniizzee(()) - below). History expansions are introduced by the appearance of the - history expansion character, which is !! by default. Only backslash (\\) - and single quotes can quote the history expansion character. - - EEvveenntt DDeessiiggnnaattoorrss - An event designator is a reference to a command line entry in the his- - tory list. - - !! Start a history substitution, except when followed by a bbllaannkk, - newline, = or (. - !!_n Refer to command line _n. - !!--_n Refer to the current command line minus _n. - !!!! Refer to the previous command. This is a synonym for `!-1'. - !!_s_t_r_i_n_g - Refer to the most recent command starting with _s_t_r_i_n_g. - !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command containing _s_t_r_i_n_g. The trail- - ing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a new- - line. - ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ - Quick substitution. Repeat the last command, replacing _s_t_r_i_n_g_1 - with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMoodd-- - iiffiieerrss below). - !!## The entire command line typed so far. - - WWoorrdd DDeessiiggnnaattoorrss - 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 sepa- - rated by single spaces. - - 00 ((zzeerroo)) - The zeroth word. For the shell, this is the command word. - _n The _nth word. - ^^ The first argument. That is, word 1. - $$ The last argument. - %% The word matched by the most recent `?_s_t_r_i_n_g?' search. - _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. 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. - xx** Abbreviates _x_-_$. - xx-- Abbreviates _x_-_$ like xx**, but omits the last word. - - If a word designator is supplied without an event specification, the - previous command is used as the event. - - MMooddiiffiieerrss - After the optional word designator, there may appear a sequence of one - or more of the following modifiers, each preceded by a `:'. - - hh Remove a trailing file name component, leaving only the head. - tt Remove all leading file name components, leaving the tail. - rr Remove a trailing suffix of the form _._x_x_x, leaving the basename. - ee Remove all but the trailing suffix. - pp Print the new command but do not execute it. - qq Quote the substituted words, escaping further substitutions. - xx Quote the substituted words as with qq, but break into words at - bbllaannkkss and newlines. - ss//_o_l_d//_n_e_w// - Substitute _n_e_w for the first occurrence of _o_l_d in the event - line. Any delimiter can be used in place of /. The final - delimiter is optional if it is the last character of the event - line. The delimiter may be quoted in _o_l_d and _n_e_w with a single - backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- - gle backslash will quote the &. If _o_l_d is null, it is set to - the last _o_l_d substituted, or, if no previous history substitu- - tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. - && Repeat the previous substitution. - gg Cause changes to be applied over the entire event line. This is - used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. - If used with `::ss', any delimiter can be used in place of /, and - the final delimiter is optional if it is the last character of - the event line. An aa may be used as a synonym for gg. - GG Apply the following `ss' modifier once to each word in the event - line. - -PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS - This section describes how to use the History library in other pro- - grams. - - IInnttrroodduuccttiioonn ttoo HHiissttoorryy - The programmer using the History library has available functions for - remembering lines on a history list, associating arbitrary data with a - line, removing lines from the list, searching through the list for a - line containing an arbitrary text string, and referencing any line in - the list directly. In addition, a history _e_x_p_a_n_s_i_o_n function is avail- - able which provides for a consistent user interface across different - programs. - - The user using programs written with the History library has the bene- - fit of a consistent user interface with a set of well-known commands - for manipulating the text of previous lines and using that text in new - commands. The basic history manipulation commands are identical to the - history substitution provided by bbaasshh. - - If the programmer desires, he can use the Readline library, which - includes some history manipulation by default, and has the added advan- - tage of command line editing. - - Before declaring any functions using any functionality the History - library provides in other code, an application writer should include - the file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._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 pub- - lic data structures. - - - HHiissttoorryy SSttoorraaggee - The history list is an array of history entries. A history entry is - declared as follows: - - _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;; - - typedef struct _hist_entry { - char *line; - char *timestamp; - histdata_t data; - } HIST_ENTRY; - - The history list itself might therefore be declared as - - _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;; - - The state of the History library is encapsulated into a single struc- - ture: - - /* - * A structure used to pass around the current state of the history. - */ - typedef struct _hist_state { - HIST_ENTRY **entries; /* Pointer to the entries themselves. */ - int offset; /* The location pointer within this array. */ - int length; /* Number of elements within this array. */ - int size; /* Number of slots allocated to this array. */ - int flags; - } HISTORY_STATE; - - If the flags member includes HHSS__SSTTIIFFLLEEDD, the history has been stifled. - -HHiissttoorryy FFuunnccttiioonnss - This section describes the calling sequence for the various functions - exported by the GNU History library. - - IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt - 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. - - _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d) - Begin a session in which the history functions might be used. This - initializes the interactive variables. - - _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d) - Return a structure describing the current state of the input history. - - _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e) - Set the state of the history list according to _s_t_a_t_e. - - - HHiissttoorryy LLiisstt MMaannaaggeemmeenntt - These functions manage individual entries on the history list, or set - parameters managing the list itself. - - _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) - Place _s_t_r_i_n_g at the end of the history list. The associated data field - (if any) is set to NNUULLLL. - - _v_o_i_d aadddd__hhiissttoorryy__ttiimmee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) - Change the time stamp associated with the most recent history entry to - _s_t_r_i_n_g. - - _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h) - Remove history entry at offset _w_h_i_c_h from the history. The removed - element is returned so you can free the line, data, and containing - structure. - - _h_i_s_t_d_a_t_a___t ffrreeee__hhiissttoorryy__eennttrryy (_H_I_S_T___E_N_T_R_Y _*_h_i_s_t_e_n_t) - Free the history entry _h_i_s_t_e_n_t and any history library private data - associated with it. Returns the application-specific data so the - caller can dispose of it. - - _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t _c_h_a_r _*_l_i_n_e_, _h_i_s_t_- - _d_a_t_a___t _d_a_t_a) - Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a. This - returns the old entry so the caller can dispose of any application-spe- - cific data. In the case of an invalid _w_h_i_c_h, a NNUULLLL pointer is - returned. - - _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d) - Clear the history list by deleting all the entries. - - _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x) - Stifle the history list, remembering only the last _m_a_x entries. - - _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d) - Stop stifling the history. This returns the previously-set maximum - number of history entries (as set by ssttiiffllee__hhiissttoorryy(())). history was - stifled. The value is positive if the history was stifled, negative if - it wasn't. - - _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d) - Returns non-zero if the history is stifled, zero if it is not. - - - IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt - These functions return information about the entire history list or - individual list entries. - - _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d) - Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y _* which is the current - input history. Element 0 of this list is the beginning of time. If - there is no history, return NNUULLLL. - - _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d) - Returns the offset of the current history element. - - _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d) - Return the history entry at the current position, as determined by - wwhheerree__hhiissttoorryy(()). If there is no entry there, return a NNUULLLL pointer. - - _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t) - Return the history entry at position _o_f_f_s_e_t, starting from hhiiss-- - ttoorryy__bbaassee. If there is no entry there, or if _o_f_f_s_e_t is greater than - the history length, return a NNUULLLL pointer. - - _t_i_m_e___t hhiissttoorryy__ggeett__ttiimmee (_H_I_S_T___E_N_T_R_Y _*) - Return the time stamp associated with the history entry passed as the - argument. - - _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d) - 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. - - - MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt - These functions allow the current index into the history list to be set - or changed. - - _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s) - Set the current history offset to _p_o_s, an absolute index into the list. - Returns 1 on success, 0 if _p_o_s is less than zero or greater than the - number of history entries. - - _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d) - 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 NNUULLLL pointer. - - _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d) - Move the current history offset forward to the next history entry, and - return the a pointer to that entry. If there is no next entry, return - a NNUULLLL pointer. - - - SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt - These functions allow searching of the history list for entries con- - taining a specific string. Searching may be performed both forward and - backward from the current history position. The search may be - _a_n_c_h_o_r_e_d, meaning that the string must match at the beginning of the - history entry. - - _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n) - Search the history for _s_t_r_i_n_g, starting at the current history offset. - If _d_i_r_e_c_t_i_o_n is less than 0, then the search is through previous - entries, otherwise through subsequent entries. If _s_t_r_i_n_g 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 _s_t_r_i_n_g was - found. Otherwise, nothing is changed, and a -1 is returned. - - _i_n_t hhiissttoorryy__sseeaarrcchh__pprreeffiixx (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n) - Search the history for _s_t_r_i_n_g, starting at the current history offset. - The search is anchored: matching lines must begin with _s_t_r_i_n_g. If - _d_i_r_e_c_t_i_o_n is less than 0, then the search is through previous entries, - otherwise through subsequent entries. If _s_t_r_i_n_g 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. - - _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_, _i_n_t _p_o_s) - Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an absolute - index into the list. If _d_i_r_e_c_t_i_o_n is negative, the search proceeds - backward from _p_o_s, otherwise forward. Returns the absolute index of - the history element where _s_t_r_i_n_g was found, or -1 otherwise. - - - MMaannaaggiinngg tthhee HHiissttoorryy FFiillee - The History library can read the history from and write it to a file. - This section documents the functions for managing a history file. - - _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) - Add the contents of _f_i_l_e_n_a_m_e to the history list, a line at a time. If - _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if successful, - or eerrrrnnoo if not. - - _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _f_r_o_m_, _i_n_t _t_o) - Read a range of lines from _f_i_l_e_n_a_m_e, adding them to the history list. - Start reading at line _f_r_o_m and end at _t_o. If _f_r_o_m is zero, start at - the beginning. If _t_o is less than _f_r_o_m, then read until the end of the - file. If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if - successful, or eerrrrnnoo if not. - - _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) - Write the current history to _f_i_l_e_n_a_m_e, overwriting _f_i_l_e_n_a_m_e if neces- - sary. If _f_i_l_e_n_a_m_e is NNUULLLL, then write the history list to _~_/_._h_i_s_t_o_r_y. - Returns 0 on success, or eerrrrnnoo on a read or write error. - - - _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e) - Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e - is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y. Returns 0 on success, or eerrrrnnoo on - a read or write error. - - _i_n_t hhiissttoorryy__ttrruunnccaattee__ffiillee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _n_l_i_n_e_s) - Truncate the history file _f_i_l_e_n_a_m_e, leaving only the last _n_l_i_n_e_s lines. - If _f_i_l_e_n_a_m_e is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is truncated. Returns 0 on suc- - cess, or eerrrrnnoo on failure. - - - HHiissttoorryy EExxppaannssiioonn - These functions implement history expansion. - - _i_n_t hhiissttoorryy__eexxppaanndd (_c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t) - Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t, a pointer to a string. - 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 exe- - cuted, as with the ::pp modifier. - If an error ocurred in expansion, then _o_u_t_p_u_t contains a descriptive - error message. - - _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_, _i_n_t _q_c_h_a_r) - Returns the text of the history event beginning at _s_t_r_i_n_g + _*_c_i_n_d_e_x. - _*_c_i_n_d_e_x is modified to point to after the event specifier. At function - entry, _c_i_n_d_e_x points to the index into _s_t_r_i_n_g where the history event - specification begins. _q_c_h_a_r is a character that is allowed to end the - event specification in addition to the ``normal'' terminating charac- - ters. - - _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) - Return an array of tokens parsed out of _s_t_r_i_n_g, much as the shell - might. The tokens are split on the characters in the hhiiss-- - ttoorryy__wwoorrdd__ddeelliimmiitteerrss variable, and shell quoting conventions are - obeyed. - - _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t _f_i_r_s_t_, _i_n_t _l_a_s_t_, _c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g) - Extract a string segment consisting of the _f_i_r_s_t through _l_a_s_t arguments - present in _s_t_r_i_n_g. Arguments are split using hhiissttoorryy__ttookkeenniizzee(()). - - - HHiissttoorryy VVaarriiaabblleess - This section describes the externally-visible variables exported by the - GNU History Library. - - _i_n_t hhiissttoorryy__bbaassee - The logical offset of the first entry in the history list. - - _i_n_t hhiissttoorryy__lleennggtthh - The number of entries currently stored in the history list. - - _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess - The maximum number of history entries. This must be changed using ssttii-- - ffllee__hhiissttoorryy(()). - - _i_n_t hhiissttoorryy__wwrriittee__ttiimmeessttaammppss - 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. - - _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr - The character that introduces a history event. The default is !!. Set- - ting this to 0 inhibits history expansion. - - _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr - The character that invokes word substitution if found at the start of a - line. The default is ^^. - - _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr - 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. - - _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss - The characters that separate tokens for hhiissttoorryy__ttookkeenniizzee(()). The - default value is "" \\tt\\nn(())<<>>;;&&||"". - - _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss - The list of characters which inhibit history expansion if found immedi- - ately following hhiissttoorryy__eexxppaannssiioonn__cchhaarr. The default is space, tab, - newline, \\rr, and ==. - - _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss - 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. - - _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn - If non-zero, single-quoted words are not scanned for the history expan- - sion character. The default value is 0. - - _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn - This should be set to the address of a function that takes two argu- - ments: a cchhaarr ** (_s_t_r_i_n_g) and an iinntt index into that string (_i). It - should return a non-zero value if the history expansion starting at - _s_t_r_i_n_g_[_i_] should not be performed; zero if the expansion should be - done. It is intended for use by applications like bbaasshh that use the - history expansion character for additional purposes. By default, this - variable is set to NNUULLLL. - -FFIILLEESS - _~_/_._h_i_s_t_o_r_y - Default filename for reading and writing saved history - -SSEEEE AALLSSOO - _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _b_a_s_h(1) - _r_e_a_d_l_i_n_e(3) - -AAUUTTHHOORRSS - Brian Fox, Free Software Foundation - bfox@gnu.org - - Chet Ramey, Case Western Reserve University - chet@ins.CWRU.Edu - -BBUUGG RREEPPOORRTTSS - If you find a bug in the hhiissttoorryy library, you should report it. But - first, you should make sure that it really is a bug, and that it - appears in the latest version of the hhiissttoorryy library that you have. - - Once you have determined that a bug actually exists, mail a bug report - to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix, you are welcome to mail - that as well! Suggestions and `philosophical' bug reports may be - mailed to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup - ggnnuu..bbaasshh..bbuugg. - - Comments and bug reports concerning this manual page should be directed - to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u. - - - -GNU History 5.0 2003 July 31 HISTORY(3) diff --git a/readline/doc/history.3 b/readline/doc/history.3 index 3ade839..ed0cb9f 100644 --- a/readline/doc/history.3 +++ b/readline/doc/history.3 @@ -6,9 +6,9 @@ .\" Case Western Reserve University .\" chet@ins.CWRU.Edu .\" -.\" Last Change: Thu Jul 31 08:46:08 EDT 2003 +.\" Last Change: Thu Jan 31 16:08:07 EST 2002 .\" -.TH HISTORY 3 "2003 July 31" "GNU History 5.0" +.TH HISTORY 3 "2002 January 31" "GNU History 4.3" .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. @@ -249,10 +249,6 @@ or `\fB:&\fP'. If used with `\fB:s\fP', any delimiter can be used in place of /, and the final delimiter is optional if it is the last character of the event line. -An \fBa\fP may be used as a synonym for \fBg\fP. -.TP -.B G -Apply the following `\fBs\fP' modifier once to each word in the event line. .PD .SH "PROGRAMMING WITH HISTORY FUNCTIONS" This section describes how to use the History library in other programs. @@ -296,7 +292,6 @@ declared as follows: .nf typedef struct _hist_entry { char *line; - char *timestamp; histdata_t data; } HIST_ENTRY; .fi @@ -350,24 +345,14 @@ parameters managing the list itself. Place \fIstring\fP at the end of the history list. The associated data field (if any) is set to \fBNULL\fP. -.Fn1 void add_history_time "const char *string" -Change the time stamp associated with the most recent history entry to -\fIstring\fP. - .Fn1 "HIST_ENTRY *" remove_history "int which" Remove history entry at offset \fIwhich\fP from the history. The removed element is returned so you can free the line, data, and containing structure. -.Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent" -Free the history entry \fIhistent\fP and any history library private -data associated with it. Returns the application-specific data -so the caller can dispose of it. - .Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data" Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP. -This returns the old entry so the caller can dispose of any -application-specific data. In the case +This returns the old entry so you can dispose of the data. In the case of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned. .Fn1 void clear_history "void" @@ -409,9 +394,6 @@ Return the history entry at position \fIoffset\fP, starting from If there is no entry there, or if \fIoffset\fP is greater than the history length, return a \fBNULL\fP pointer. -.Fn1 "time_t" history_get_time "HIST_ENTRY *" -Return the time stamp associated with the history entry passed as the argument. - .Fn1 int history_total_bytes "void" Return the number of bytes that the primary history entries are using. This function returns the sum of the lengths of all the lines in the @@ -569,11 +551,6 @@ The number of entries currently stored in the history list. The maximum number of history entries. This must be changed using \fBstifle_history()\fP. -.Vb 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. - .Vb char history_expansion_char The character that introduces a history event. The default is \fB!\fP. Setting this to 0 inhibits history expansion. diff --git a/readline/doc/history.dvi b/readline/doc/history.dvi Binary files differdeleted file mode 100644 index 6377d9d..0000000 --- a/readline/doc/history.dvi +++ /dev/null diff --git a/readline/doc/history.html b/readline/doc/history.html deleted file mode 100644 index 439426a..0000000 --- a/readline/doc/history.html +++ /dev/null @@ -1,2270 +0,0 @@ -<HTML> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<!-- Created on December, 6 2005 by texi2html 1.64 --> -<!-- -Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) - Karl Berry <karl@freefriends.org> - Olaf Bachmann <obachman@mathematik.uni-kl.de> - and many others. -Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de> -Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> - ---> -<HEAD> -<TITLE>GNU History Library: </TITLE> - -<META NAME="description" CONTENT="GNU History Library: "> -<META NAME="keywords" CONTENT="GNU History Library: "> -<META NAME="resource-type" CONTENT="document"> -<META NAME="distribution" CONTENT="global"> -<META NAME="Generator" CONTENT="texi2html 1.64"> - -</HEAD> - -<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> - -<A NAME="SEC_Top"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>GNU History Library</H1></P><P> - -This document describes the GNU History library, a programming tool that -provides a consistent user interface for recalling lines of previously -typed input. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. Copying This Manual</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC22">B. Concept Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC23">C. Function and Variable Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions - and variables.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<HR SIZE=1> -<A NAME="SEC1"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<A NAME="Using History Interactively"></A> -<H1> 1. Using History Interactively </H1> -<!--docid::SEC1::--> -<P> - -This chapter describes how to use the GNU History Library interactively, -from a user's standpoint. It should be considered a user's guide. For -information on using the GNU History Library in your own programs, -see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="History Interaction"></A> -<HR SIZE="6"> -<A NAME="SEC2"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.1 History Expansion </H2> -<!--docid::SEC2::--> -<P> - -The History library provides a history expansion feature that is similar -to the history expansion provided by <CODE>csh</CODE>. This section -describes the syntax used to manipulate the history information. -</P><P> - -History expansions introduce words from the history list into -the input stream, making it easy to repeat commands, insert the -arguments to a previous command into the current input line, or -fix errors in previous commands quickly. -</P><P> - -History expansion takes place in two parts. The first is to determine -which line from the history list should be used during substitution. -The second is to select portions of that line for inclusion into the -current one. The line selected from the history is called the -<EM>event</EM>, and the portions of that line that are acted upon are -called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words -surrounded by quotes are considered one word. -History expansions are introduced by the appearance of the -history expansion character, which is <SAMP>`!'</SAMP> by default. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Event Designators"></A> -<HR SIZE="6"> -<A NAME="SEC3"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.1.1 Event Designators </H3> -<!--docid::SEC3::--> -<P> - -An event designator is a reference to a command line entry in the -history list. -<A NAME="IDX1"></A> -</P><P> - -<DL COMPACT> - -<DT><CODE>!</CODE> -<DD>Start a history substitution, except when followed by a space, tab, -the end of the line, or <SAMP>`='</SAMP>. -<P> - -<DT><CODE>!<VAR>n</VAR></CODE> -<DD>Refer to command line <VAR>n</VAR>. -<P> - -<DT><CODE>!-<VAR>n</VAR></CODE> -<DD>Refer to the command <VAR>n</VAR> lines back. -<P> - -<DT><CODE>!!</CODE> -<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>. -<P> - -<DT><CODE>!<VAR>string</VAR></CODE> -<DD>Refer to the most recent command starting with <VAR>string</VAR>. -<P> - -<DT><CODE>!?<VAR>string</VAR>[?]</CODE> -<DD>Refer to the most recent command containing <VAR>string</VAR>. The trailing -<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by -a newline. -<P> - -<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE> -<DD>Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR> -with <VAR>string2</VAR>. Equivalent to -<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>. -<P> - -<DT><CODE>!#</CODE> -<DD>The entire command line typed so far. -<P> - -</DL> -<P> - -<A NAME="Word Designators"></A> -<HR SIZE="6"> -<A NAME="SEC4"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.1.2 Word Designators </H3> -<!--docid::SEC4::--> -<P> - -Word designators are used to select desired words from the event. -A <SAMP>`:'</SAMP> separates the event specification from the word designator. It -may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>, -<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning -of the line, with the first word being denoted by 0 (zero). Words are -inserted into the current line separated by single spaces. -</P><P> - -For example, -</P><P> - -<DL COMPACT> -<DT><CODE>!!</CODE> -<DD>designates the preceding command. When you type this, the preceding -command is repeated in toto. -<P> - -<DT><CODE>!!:$</CODE> -<DD>designates the last argument of the preceding command. This may be -shortened to <CODE>!$</CODE>. -<P> - -<DT><CODE>!fi:2</CODE> -<DD>designates the second argument of the most recent command starting with -the letters <CODE>fi</CODE>. -</DL> -<P> - -Here are the word designators: - -<DL COMPACT> - -<DT><CODE>0 (zero)</CODE> -<DD>The <CODE>0</CODE>th word. For many applications, this is the command word. -<P> - -<DT><CODE><VAR>n</VAR></CODE> -<DD>The <VAR>n</VAR>th word. -<P> - -<DT><CODE>^</CODE> -<DD>The first argument; that is, word 1. -<P> - -<DT><CODE>$</CODE> -<DD>The last argument. -<P> - -<DT><CODE>%</CODE> -<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search. -<P> - -<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE> -<DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>. -<P> - -<DT><CODE>*</CODE> -<DD>All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>. -It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event; -the empty string is returned in that case. -<P> - -<DT><CODE><VAR>x</VAR>*</CODE> -<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> -<P> - -<DT><CODE><VAR>x</VAR>-</CODE> -<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word. -<P> - -</DL> -<P> - -If a word designator is supplied without an event specification, the -previous command is used as the event. -</P><P> - -<A NAME="Modifiers"></A> -<HR SIZE="6"> -<A NAME="SEC5"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.1.3 Modifiers </H3> -<!--docid::SEC5::--> -<P> - -After the optional word designator, you can add a sequence of one or more -of the following modifiers, each preceded by a <SAMP>`:'</SAMP>. -</P><P> - -<DL COMPACT> - -<DT><CODE>h</CODE> -<DD>Remove a trailing pathname component, leaving only the head. -<P> - -<DT><CODE>t</CODE> -<DD>Remove all leading pathname components, leaving the tail. -<P> - -<DT><CODE>r</CODE> -<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving -the basename. -<P> - -<DT><CODE>e</CODE> -<DD>Remove all but the trailing suffix. -<P> - -<DT><CODE>p</CODE> -<DD>Print the new command but do not execute it. -<P> - -<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE> -<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the -event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>. -The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR> -with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>, -it is replaced by <VAR>old</VAR>. A single backslash will quote -the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last -character on the input line. -<P> - -<DT><CODE>&</CODE> -<DD>Repeat the previous substitution. -<P> - -<DT><CODE>g</CODE> -<DD><DT><CODE>a</CODE> -<DD>Cause changes to be applied over the entire event line. Used in -conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>, -or with <SAMP>`&'</SAMP>. -<P> - -<DT><CODE>G</CODE> -<DD>Apply the following <SAMP>`s'</SAMP> modifier once to each word in the event. -<P> - -</DL> -<P> - -<A NAME="Programming with GNU History"></A> -<HR SIZE="6"> -<A NAME="SEC6"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> 2. Programming with GNU History </H1> -<!--docid::SEC6::--> -<P> - -This chapter describes how to interface programs that you write -with the GNU History Library. -It should be considered a technical guide. -For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Introduction to History"></A> -<HR SIZE="6"> -<A NAME="SEC7"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.1 Introduction to History </H2> -<!--docid::SEC7::--> -<P> - -Many programs read input from the user a line at a time. The GNU -History library is able to keep track of those lines, associate arbitrary -data with each line, and utilize information from previous lines in -composing new ones. -</P><P> - -The programmer using the History library has available functions -for remembering lines on a history list, associating arbitrary data -with a line, removing lines from the list, searching through the list -for a line containing an arbitrary text string, and referencing any line -in the list directly. In addition, a history <EM>expansion</EM> function -is available which provides for a consistent user interface across -different programs. -</P><P> - -The user using programs written with the History library has the -benefit of a consistent user interface with a set of well-known -commands for manipulating the text of previous lines and using that text -in new commands. The basic history manipulation commands are similar to -the history substitution provided by <CODE>csh</CODE>. -</P><P> - -If the programmer desires, he can use the Readline library, which -includes some history manipulation by default, and has the added -advantage of command line editing. -</P><P> - -Before declaring any functions using any functionality the History -library provides in other code, an application writer should include -the file <CODE><readline/history.h></CODE> in any file that uses the -History library's features. It supplies extern declarations for all -of the library's public functions and variables, and declares all of -the public data structures. -</P><P> - -<A NAME="History Storage"></A> -<HR SIZE="6"> -<A NAME="SEC8"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.2 History Storage </H2> -<!--docid::SEC8::--> -<P> - -The history list is an array of history entries. A history entry is -declared as follows: -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>typedef void *histdata_t; - -typedef struct _hist_entry { - char *line; - char *timestamp; - histdata_t data; -} HIST_ENTRY; -</pre></td></tr></table></P><P> - -The history list itself might therefore be declared as -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>HIST_ENTRY **the_history_list; -</pre></td></tr></table></P><P> - -The state of the History library is encapsulated into a single structure: -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>/* - * A structure used to pass around the current state of the history. - */ -typedef struct _hist_state { - HIST_ENTRY **entries; /* Pointer to the entries themselves. */ - int offset; /* The location pointer within this array. */ - int length; /* Number of elements within this array. */ - int size; /* Number of slots allocated to this array. */ - int flags; -} HISTORY_STATE; -</pre></td></tr></table></P><P> - -If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been -stifled. -</P><P> - -<A NAME="History Functions"></A> -<HR SIZE="6"> -<A NAME="SEC9"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.3 History Functions </H2> -<!--docid::SEC9::--> -<P> - -This section describes the calling sequence for the various functions -exported by the GNU History library. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you - want to use history in a - program.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list - of history entries.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about - the history list.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position - in the history list.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list - for entries containing a string.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file - containing the history list.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history - expansion.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Initializing History and State Management"></A> -<HR SIZE="6"> -<A NAME="SEC10"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.1 Initializing History and State Management </H3> -<!--docid::SEC10::--> -<P> - -This section describes functions used to initialize and manage -the state of the History library when you want to use the history -functions in your program. -</P><P> - -<A NAME="IDX2"></A> -<DL> -<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I> -<DD>Begin a session in which the history functions might be used. This -initializes the interactive variables. -</DL> -</P><P> - -<A NAME="IDX3"></A> -<DL> -<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I> -<DD>Return a structure describing the current state of the input history. -</DL> -</P><P> - -<A NAME="IDX4"></A> -<DL> -<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I> -<DD>Set the state of the history list according to <VAR>state</VAR>. -</DL> -</P><P> - -<A NAME="History List Management"></A> -<HR SIZE="6"> -<A NAME="SEC11"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.2 History List Management </H3> -<!--docid::SEC11::--> -<P> - -These functions manage individual entries on the history list, or set -parameters managing the list itself. -</P><P> - -<A NAME="IDX5"></A> -<DL> -<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I> -<DD>Place <VAR>string</VAR> at the end of the history list. The associated data -field (if any) is set to <CODE>NULL</CODE>. -</DL> -</P><P> - -<A NAME="IDX6"></A> -<DL> -<DT><U>Function:</U> void <B>add_history_time</B> <I>(const char *string)</I> -<DD>Change the time stamp associated with the most recent history entry to -<VAR>string</VAR>. -</DL> -</P><P> - -<A NAME="IDX7"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I> -<DD>Remove history entry at offset <VAR>which</VAR> from the history. The -removed element is returned so you can free the line, data, -and containing structure. -</DL> -</P><P> - -<A NAME="IDX8"></A> -<DL> -<DT><U>Function:</U> histdata_t <B>free_history_entry</B> <I>(HIST_ENTRY *histent)</I> -<DD>Free the history entry <VAR>histent</VAR> and any history library private -data associated with it. Returns the application-specific data -so the caller can dispose of it. -</DL> -</P><P> - -<A NAME="IDX9"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I> -<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>. -This returns the old entry so the caller can dispose of any -application-specific data. In the case -of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned. -</DL> -</P><P> - -<A NAME="IDX10"></A> -<DL> -<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I> -<DD>Clear the history list by deleting all the entries. -</DL> -</P><P> - -<A NAME="IDX11"></A> -<DL> -<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I> -<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries. -</DL> -</P><P> - -<A NAME="IDX12"></A> -<DL> -<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I> -<DD>Stop stifling the history. This returns the previously-set -maximum number of history entries (as set by <CODE>stifle_history()</CODE>). -The value is positive if the history was -stifled, negative if it wasn't. -</DL> -</P><P> - -<A NAME="IDX13"></A> -<DL> -<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I> -<DD>Returns non-zero if the history is stifled, zero if it is not. -</DL> -</P><P> - -<A NAME="Information About the History List"></A> -<HR SIZE="6"> -<A NAME="SEC12"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.3 Information About the History List </H3> -<!--docid::SEC12::--> -<P> - -These functions return information about the entire history list or -individual list entries. -</P><P> - -<A NAME="IDX14"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I> -<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the -current input history. Element 0 of this list is the beginning of time. -If there is no history, return <CODE>NULL</CODE>. -</DL> -</P><P> - -<A NAME="IDX15"></A> -<DL> -<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I> -<DD>Returns the offset of the current history element. -</DL> -</P><P> - -<A NAME="IDX16"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I> -<DD>Return the history entry at the current position, as determined by -<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE> -pointer. -</DL> -</P><P> - -<A NAME="IDX17"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I> -<DD>Return the history entry at position <VAR>offset</VAR>, starting from -<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">2.4 History Variables</A>). -If there is no entry there, or if <VAR>offset</VAR> -is greater than the history length, return a <CODE>NULL</CODE> pointer. -</DL> -</P><P> - -<A NAME="IDX18"></A> -<DL> -<DT><U>Function:</U> time_t <B>history_get_time</B> <I>(HIST_ENTRY *entry)</I> -<DD>Return the time stamp associated with the history entry <VAR>entry</VAR>. -</DL> -</P><P> - -<A NAME="IDX19"></A> -<DL> -<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I> -<DD>Return the number of bytes that the primary history entries are using. -This function returns the sum of the lengths of all the lines in the -history. -</DL> -</P><P> - -<A NAME="Moving Around the History List"></A> -<HR SIZE="6"> -<A NAME="SEC13"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.4 Moving Around the History List </H3> -<!--docid::SEC13::--> -<P> - -These functions allow the current index into the history list to be -set or changed. -</P><P> - -<A NAME="IDX20"></A> -<DL> -<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I> -<DD>Set the current history offset to <VAR>pos</VAR>, an absolute index -into the list. -Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater -than the number of history entries. -</DL> -</P><P> - -<A NAME="IDX21"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I> -<DD>Back up the current history offset to the previous history entry, and -return a pointer to that entry. If there is no previous entry, return -a <CODE>NULL</CODE> pointer. -</DL> -</P><P> - -<A NAME="IDX22"></A> -<DL> -<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I> -<DD>Move the current history offset forward to the next history entry, and -return the a pointer to that entry. If there is no next entry, return -a <CODE>NULL</CODE> pointer. -</DL> -</P><P> - -<A NAME="Searching the History List"></A> -<HR SIZE="6"> -<A NAME="SEC14"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.5 Searching the History List </H3> -<!--docid::SEC14::--> -<P> - -These functions allow searching of the history list for entries containing -a specific string. Searching may be performed both forward and backward -from the current history position. The search may be <EM>anchored</EM>, -meaning that the string must match at the beginning of the history entry. -<A NAME="IDX23"></A> -</P><P> - -<A NAME="IDX24"></A> -<DL> -<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I> -<DD>Search the history for <VAR>string</VAR>, starting at the current history offset. -If <VAR>direction</VAR> is less than 0, then the search is through -previous entries, otherwise through subsequent entries. -If <VAR>string</VAR> is found, then -the current history index is set to that history entry, and the value -returned is the offset in the line of the entry where -<VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is -returned. -</DL> -</P><P> - -<A NAME="IDX25"></A> -<DL> -<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I> -<DD>Search the history for <VAR>string</VAR>, starting at the current history -offset. The search is anchored: matching lines must begin with -<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is -through previous entries, otherwise through subsequent entries. -If <VAR>string</VAR> is found, then the -current history index is set to that entry, and the return value is 0. -Otherwise, nothing is changed, and a -1 is returned. -</DL> -</P><P> - -<A NAME="IDX26"></A> -<DL> -<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I> -<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an -absolute index into the list. If <VAR>direction</VAR> is negative, the search -proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute -index of the history element where <VAR>string</VAR> was found, or -1 otherwise. -</DL> -</P><P> - -<A NAME="Managing the History File"></A> -<HR SIZE="6"> -<A NAME="SEC15"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.6 Managing the History File </H3> -<!--docid::SEC15::--> -<P> - -The History library can read the history from and write it to a file. -This section documents the functions for managing a history file. -</P><P> - -<A NAME="IDX27"></A> -<DL> -<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I> -<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time. -If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. -Returns 0 if successful, or <CODE>errno</CODE> if not. -</DL> -</P><P> - -<A NAME="IDX28"></A> -<DL> -<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I> -<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list. -Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>. -If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than -<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is -<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful, -or <CODE>errno</CODE> if not. -</DL> -</P><P> - -<A NAME="IDX29"></A> -<DL> -<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I> -<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR> -if necessary. -If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to -<TT>`~/.history'</TT>. -Returns 0 on success, or <CODE>errno</CODE> on a read or write error. -</DL> -</P><P> - -<A NAME="IDX30"></A> -<DL> -<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I> -<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>. -If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>. -Returns 0 on success, or <CODE>errno</CODE> on a read or write error. -</DL> -</P><P> - -<A NAME="IDX31"></A> -<DL> -<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I> -<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last -<VAR>nlines</VAR> lines. -If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated. -Returns 0 on success, or <CODE>errno</CODE> on failure. -</DL> -</P><P> - -<A NAME="History Expansion"></A> -<HR SIZE="6"> -<A NAME="SEC16"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.3.7 History Expansion </H3> -<!--docid::SEC16::--> -<P> - -These functions implement history expansion. -</P><P> - -<A NAME="IDX32"></A> -<DL> -<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I> -<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer -to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>). Returns: -<DL COMPACT> -<DT><CODE>0</CODE> -<DD>If no expansions took place (or, if the only change in -the text was the removal of escape characters preceding the history expansion -character); -<DT><CODE>1</CODE> -<DD>if expansions did take place; -<DT><CODE>-1</CODE> -<DD>if there was an error in expansion; -<DT><CODE>2</CODE> -<DD>if the returned line should be displayed, but not executed, -as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">1.1.3 Modifiers</A>). -</DL> -<P> - -If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive -error message. -</DL> -</P><P> - -<A NAME="IDX33"></A> -<DL> -<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I> -<DD>Returns the text of the history event beginning at <VAR>string</VAR> + -<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event -specifier. At function entry, <VAR>cindex</VAR> points to the index into -<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR> -is a character that is allowed to end the event specification in addition -to the "normal" terminating characters. -</DL> -</P><P> - -<A NAME="IDX34"></A> -<DL> -<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I> -<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the -shell might. The tokens are split on the characters in the -<VAR>history_word_delimiters</VAR> variable, -and shell quoting conventions are obeyed. -</DL> -</P><P> - -<A NAME="IDX35"></A> -<DL> -<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I> -<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR> -arguments present in <VAR>string</VAR>. Arguments are split using -<CODE>history_tokenize</CODE>. -</DL> -</P><P> - -<A NAME="History Variables"></A> -<HR SIZE="6"> -<A NAME="SEC17"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.4 History Variables </H2> -<!--docid::SEC17::--> -<P> - -This section describes the externally-visible variables exported by -the GNU History Library. -</P><P> - -<A NAME="IDX36"></A> -<DL> -<DT><U>Variable:</U> int <B>history_base</B> -<DD>The logical offset of the first entry in the history list. -</DL> -</P><P> - -<A NAME="IDX37"></A> -<DL> -<DT><U>Variable:</U> int <B>history_length</B> -<DD>The number of entries currently stored in the history list. -</DL> -</P><P> - -<A NAME="IDX38"></A> -<DL> -<DT><U>Variable:</U> int <B>history_max_entries</B> -<DD>The maximum number of history entries. This must be changed using -<CODE>stifle_history()</CODE>. -</DL> -</P><P> - -<A NAME="IDX39"></A> -<DL> -<DT><U>Variable:</U> int <B>history_write_timestamps</B> -<DD>If non-zero, timestamps are written to the history file, so they can be -preserved between sessions. The default value is 0, meaning that -timestamps are not saved. -</DL> -</P><P> - -<A NAME="IDX40"></A> -<DL> -<DT><U>Variable:</U> char <B>history_expansion_char</B> -<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>. -Setting this to 0 inhibits history expansion. -</DL> -</P><P> - -<A NAME="IDX41"></A> -<DL> -<DT><U>Variable:</U> char <B>history_subst_char</B> -<DD>The character that invokes word substitution if found at the start of -a line. The default is <SAMP>`^'</SAMP>. -</DL> -</P><P> - -<A NAME="IDX42"></A> -<DL> -<DT><U>Variable:</U> char <B>history_comment_char</B> -<DD>During tokenization, if this character is seen as the first character -of a word, then it and all subsequent characters up to a newline are -ignored, suppressing history expansion for the remainder of the line. -This is disabled by default. -</DL> -</P><P> - -<A NAME="IDX43"></A> -<DL> -<DT><U>Variable:</U> char * <B>history_word_delimiters</B> -<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>. -The default value is <CODE>" \t\n()<>;&|"</CODE>. -</DL> -</P><P> - -<A NAME="IDX44"></A> -<DL> -<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B> -<DD>The list of additional characters which can delimit a history search -string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of -a substring search. The default is empty. -</DL> -</P><P> - -<A NAME="IDX45"></A> -<DL> -<DT><U>Variable:</U> char * <B>history_no_expand_chars</B> -<DD>The list of characters which inhibit history expansion if found immediately -following <VAR>history_expansion_char</VAR>. The default is space, tab, newline, -carriage return, and <SAMP>`='</SAMP>. -</DL> -</P><P> - -<A NAME="IDX46"></A> -<DL> -<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B> -<DD>If non-zero, single-quoted words are not scanned for the history expansion -character. The default value is 0. -</DL> -</P><P> - -<A NAME="IDX47"></A> -<DL> -<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B> -<DD>This should be set to the address of a function that takes two arguments: -a <CODE>char *</CODE> (<VAR>string</VAR>) -and an <CODE>int</CODE> index into that string (<VAR>i</VAR>). -It should return a non-zero value if the history expansion starting at -<VAR>string[i]</VAR> should not be performed; zero if the expansion should -be done. -It is intended for use by applications like Bash that use the history -expansion character for additional purposes. -By default, this variable is set to <CODE>NULL</CODE>. -</DL> -</P><P> - -<A NAME="History Programming Example"></A> -<HR SIZE="6"> -<A NAME="SEC18"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.5 History Programming Example </H2> -<!--docid::SEC18::--> -<P> - -The following program demonstrates simple use of the GNU History Library. -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>#include <stdio.h> -#include <readline/history.h> - -main (argc, argv) - int argc; - char **argv; -{ - char line[1024], *t; - int len, done = 0; - - line[0] = 0; - - using_history (); - while (!done) - { - printf ("history$ "); - fflush (stdout); - t = fgets (line, sizeof (line) - 1, stdin); - if (t && *t) - { - len = strlen (t); - if (t[len - 1] == '\n') - t[len - 1] = '\0'; - } - - if (!t) - strcpy (line, "quit"); - - if (line[0]) - { - char *expansion; - int result; - - result = history_expand (line, &expansion); - if (result) - fprintf (stderr, "%s\n", expansion); - - if (result < 0 || result == 2) - { - free (expansion); - continue; - } - - add_history (expansion); - strncpy (line, expansion, sizeof (line) - 1); - free (expansion); - } - - if (strcmp (line, "quit") == 0) - done = 1; - else if (strcmp (line, "save") == 0) - write_history ("history_file"); - else if (strcmp (line, "read") == 0) - read_history ("history_file"); - else if (strcmp (line, "list") == 0) - { - register HIST_ENTRY **the_list; - register int i; - - the_list = history_list (); - if (the_list) - for (i = 0; the_list[i]; i++) - printf ("%d: %s\n", i + history_base, the_list[i]->line); - } - else if (strncmp (line, "delete", 6) == 0) - { - int which; - if ((sscanf (line + 6, "%d", &which)) == 1) - { - HIST_ENTRY *entry = remove_history (which); - if (!entry) - fprintf (stderr, "No such entry %d\n", which); - else - { - free (entry->line); - free (entry); - } - } - else - { - fprintf (stderr, "non-numeric arg given to `delete'\n"); - } - } - } -} -</FONT></pre></td></tr></table></P><P> - -<A NAME="Copying This Manual"></A> -<HR SIZE="6"> -<A NAME="SEC19"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> A. Copying This Manual </H1> -<!--docid::SEC19::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC20">A.1 GNU Free Documentation License</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="GNU Free Documentation License"></A> -<HR SIZE="6"> -<A NAME="SEC20"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> A.1 GNU Free Documentation License </H2> -<!--docid::SEC20::--> -<P> - -<A NAME="IDX48"></A> -<center> - Version 1.2, November 2002 -</center> -</P><P> - -<TABLE><tr><td> </td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -</pre></td></tr></table></P><P> - -<OL> -<LI> -PREAMBLE -<P> - -The purpose of this License is to make a manual, textbook, or other -functional and useful document <EM>free</EM> in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. -</P><P> - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. -</P><P> - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. -</P><P> - -<LI> -APPLICABILITY AND DEFINITIONS -<P> - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. -</P><P> - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. -</P><P> - -A "Secondary Section" is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. -</P><P> - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. -</P><P> - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. -</P><P> - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -</P><P> - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available -<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples -of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and -<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or -<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are -not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for -output purposes only. -</P><P> - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -</P><P> - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -</P><P> - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. -</P><P> - -<LI> -VERBATIM COPYING -<P> - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. -</P><P> - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -</P><P> - -<LI> -COPYING IN QUANTITY -<P> - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. -</P><P> - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. -</P><P> - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. -</P><P> - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -</P><P> - -<LI> -MODIFICATIONS -<P> - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: -</P><P> - -<OL> -<LI> -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. -<P> - -<LI> -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. -<P> - -<LI> -State on the Title page the name of the publisher of the -Modified Version, as the publisher. -<P> - -<LI> -Preserve all the copyright notices of the Document. -<P> - -<LI> -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. -<P> - -<LI> -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. -<P> - -<LI> -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -<P> - -<LI> -Include an unaltered copy of this License. -<P> - -<LI> -Preserve the section Entitled "History", Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. -<P> - -<LI> -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. -<P> - -<LI> -For any section Entitled "Acknowledgements" or "Dedications", Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. -<P> - -<LI> -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. -<P> - -<LI> -Delete any section Entitled "Endorsements". Such a section -may not be included in the Modified Version. -<P> - -<LI> -Do not retitle any existing section to be Entitled "Endorsements" or -to conflict in title with any Invariant Section. -<P> - -<LI> -Preserve any Warranty Disclaimers. -</OL> -<P> - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. -</P><P> - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. -</P><P> - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. -</P><P> - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -</P><P> - -<LI> -COMBINING DOCUMENTS -<P> - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. -</P><P> - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. -</P><P> - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -</P><P> - -<LI> -COLLECTIONS OF DOCUMENTS -<P> - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. -</P><P> - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -</P><P> - -<LI> -AGGREGATION WITH INDEPENDENT WORKS -<P> - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. -</P><P> - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. -</P><P> - -<LI> -TRANSLATION -<P> - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. -</P><P> - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. -</P><P> - -<LI> -TERMINATION -<P> - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. -</P><P> - -<LI> -FUTURE REVISIONS OF THIS LICENSE -<P> - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>. -</P><P> - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -</OL> -<P> - -<HR SIZE="6"> -<A NAME="SEC21"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3> -<!--docid::SEC21::--> -<P> - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with - the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts - being <VAR>list</VAR>. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. -</P><P> - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. -</P><P> - -<A NAME="Concept Index"></A> -<HR SIZE="6"> -<A NAME="SEC22"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> B. Concept Index </H1> -<!--docid::SEC22::--> -<table><tr><th valign=top>Jump to: </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="history.html#cp_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A> - -</td></tr></table><br><P></P> -<TABLE border=0> -<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX48">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="history.html#SEC20">A.1 GNU Free Documentation License</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="history.html#cp_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A> - -</td></tr></table><br><P> - -<A NAME="Function and Variable Index"></A> -<HR SIZE="6"> -<A NAME="SEC23"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ > ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> C. Function and Variable Index </H1> -<!--docid::SEC23::--> -<table><tr><th valign=top>Jump to: </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A> - -<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A> - -<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A> - -<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A> - -<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A> - -<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A> - -</td></tr></table><br><P></P> -<TABLE border=0> -<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>add_history_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>free_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>history_get_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX45"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX46"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX44"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_write_timestamps</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A> - -<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A> - -<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A> - -<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A> - -<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A> - -<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A> - -</td></tr></table><br><P> - -<HR SIZE="6"> -<A NAME="SEC_Contents"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Table of Contents</H1> -<UL> -<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A> -<BR> -<UL> -<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A> -<BR> -<UL> -<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A> -<BR> -<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A> -<BR> -<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A> -<BR> -</UL> -</UL> -<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A> -<BR> -<UL> -<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A> -<BR> -<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A> -<BR> -<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A> -<BR> -<UL> -<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A> -<BR> -<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A> -<BR> -<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A> -<BR> -<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A> -<BR> -<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A> -<BR> -<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A> -<BR> -<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A> -<BR> -</UL> -<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A> -<BR> -<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A> -<BR> -</UL> -<A NAME="TOC19" HREF="history.html#SEC19">A. Copying This Manual</A> -<BR> -<UL> -<A NAME="TOC20" HREF="history.html#SEC20">A.1 GNU Free Documentation License</A> -<BR> -<UL> -<A NAME="TOC21" HREF="history.html#SEC21">A.1.1 ADDENDUM: How to use this License for your documents</A> -<BR> -</UL> -</UL> -<A NAME="TOC22" HREF="history.html#SEC22">B. Concept Index</A> -<BR> -<A NAME="TOC23" HREF="history.html#SEC23">C. Function and Variable Index</A> -<BR> -</UL> -<HR SIZE=1> -<A NAME="SEC_OVERVIEW"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Short Table of Contents</H1> -<BLOCKQUOTE> -<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A> -<BR> -<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A> -<BR> -<A NAME="TOC19" HREF="history.html#SEC19">A. Copying This Manual</A> -<BR> -<A NAME="TOC22" HREF="history.html#SEC22">B. Concept Index</A> -<BR> -<A NAME="TOC23" HREF="history.html#SEC23">C. Function and Variable Index</A> -<BR> - -</BLOCKQUOTE> -<HR SIZE=1> -<A NAME="SEC_About"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>About this document</H1> -This document was generated by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> -<P></P> -The buttons in the navigation panels have the following meaning: -<P></P> -<table border = "1"> -<TR> -<TH> Button </TH> -<TH> Name </TH> -<TH> Go to </TH> -<TH> From 1.2.3 go to</TH> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ < ] </TD> -<TD ALIGN="CENTER"> -Back -</TD> -<TD> -previous section in reading order -</TD> -<TD> -1.2.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ > ] </TD> -<TD ALIGN="CENTER"> -Forward -</TD> -<TD> -next section in reading order -</TD> -<TD> -1.2.4 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ << ] </TD> -<TD ALIGN="CENTER"> -FastBack -</TD> -<TD> -previous or up-and-previous section -</TD> -<TD> -1.1 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ Up ] </TD> -<TD ALIGN="CENTER"> -Up -</TD> -<TD> -up section -</TD> -<TD> -1.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ >> ] </TD> -<TD ALIGN="CENTER"> -FastForward -</TD> -<TD> -next or up-and-next section -</TD> -<TD> -1.3 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Top] </TD> -<TD ALIGN="CENTER"> -Top -</TD> -<TD> -cover (top) of document -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Contents] </TD> -<TD ALIGN="CENTER"> -Contents -</TD> -<TD> -table of contents -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Index] </TD> -<TD ALIGN="CENTER"> -Index -</TD> -<TD> -concept index -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ ? ] </TD> -<TD ALIGN="CENTER"> -About -</TD> -<TD> -this page -</TD> -<TD> - -</TD> -</TR> -</TABLE> -<P></P> -where the <STRONG> Example </STRONG> assumes that the current position -is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of -the following structure: -<UL> -<LI> 1. Section One </LI> -<UL> -<LI>1.1 Subsection One-One</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.2 Subsection One-Two</LI> -<UL> -<LI>1.2.1 Subsubsection One-Two-One -</LI><LI>1.2.2 Subsubsection One-Two-Two -</LI><LI>1.2.3 Subsubsection One-Two-Three <STRONG> -<== Current Position </STRONG> -</LI><LI>1.2.4 Subsubsection One-Two-Four -</LI></UL> -<LI>1.3 Subsection One-Three</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.4 Subsection One-Four</LI> -</UL> -</UL> - -<HR SIZE=1> -<BR> -<FONT SIZE="-1"> -This document was generated -by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> - -</BODY> -</HTML> diff --git a/readline/doc/history.info b/readline/doc/history.info deleted file mode 100644 index 1074c69..0000000 --- a/readline/doc/history.info +++ /dev/null @@ -1,1352 +0,0 @@ -This is history.info, produced by makeinfo version 4.7 from -/Users/chet/src/bash/readline-src/doc/history.texi. - - This document describes the GNU History library (version 5.1-beta1, -11 November 2005), a programming tool that provides a consistent user -interface for recalling lines of previously typed input. - - Copyright (C) 1988-2004 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: "You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Libraries -START-INFO-DIR-ENTRY -* History: (history). The GNU history library API. -END-INFO-DIR-ENTRY - - -File: history.info, Node: Top, Next: Using History Interactively, Up: (dir) - -GNU History Library -******************* - -This document describes the GNU History library, a programming tool that -provides a consistent user interface for recalling lines of previously -typed input. - -* Menu: - -* Using History Interactively:: GNU History User's Manual. -* Programming with GNU History:: GNU History Programmer's Manual. -* Copying This Manual:: Copying This Manual. -* Concept Index:: Index of concepts described in this manual. -* Function and Variable Index:: Index of externally visible functions - and variables. - - -File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top - -1 Using History Interactively -***************************** - -This chapter describes how to use the GNU History Library interactively, -from a user's standpoint. It should be considered a user's guide. For -information on using the GNU History Library in your own programs, -*note Programming with GNU History::. - -* Menu: - -* History Interaction:: What it feels like using History as a user. - - -File: history.info, Node: History Interaction, Up: Using History Interactively - -1.1 History Expansion -===================== - -The History library provides a history expansion feature that is similar -to the history expansion provided by `csh'. This section describes the -syntax used to manipulate the history information. - - History expansions introduce words from the history list into the -input stream, making it easy to repeat commands, insert the arguments -to a previous command into the current input line, or fix errors in -previous commands quickly. - - History expansion takes place in two parts. The first is to -determine which line from the history list should be used during -substitution. The second is to select portions of that line for -inclusion into the current one. The line selected from the history is -called the "event", and the portions of that line that are acted upon -are called "words". Various "modifiers" are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words surrounded by quotes are -considered one word. History expansions are introduced by the -appearance of the history expansion character, which is `!' by default. - -* Menu: - -* Event Designators:: How to specify which history line to use. -* Word Designators:: Specifying which words are of interest. -* Modifiers:: Modifying the results of substitution. - - -File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction - -1.1.1 Event Designators ------------------------ - -An event designator is a reference to a command line entry in the -history list. - -`!' - Start a history substitution, except when followed by a space, tab, - the end of the line, or `='. - -`!N' - Refer to command line N. - -`!-N' - Refer to the command N lines back. - -`!!' - Refer to the previous command. This is a synonym for `!-1'. - -`!STRING' - Refer to the most recent command starting with STRING. - -`!?STRING[?]' - Refer to the most recent command containing STRING. The trailing - `?' may be omitted if the STRING is followed immediately by a - newline. - -`^STRING1^STRING2^' - Quick Substitution. Repeat the last command, replacing STRING1 - with STRING2. Equivalent to `!!:s/STRING1/STRING2/'. - -`!#' - The entire command line typed so far. - - - -File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction - -1.1.2 Word Designators ----------------------- - -Word designators are used to select desired words from the event. A -`:' separates the event specification from the word designator. It may -be omitted if the word designator begins with a `^', `$', `*', `-', or -`%'. Words are numbered from the beginning of the line, with the first -word being denoted by 0 (zero). Words are inserted into the current -line separated by single spaces. - - For example, - -`!!' - designates the preceding command. When you type this, the - preceding command is repeated in toto. - -`!!:$' - designates the last argument of the preceding command. This may be - shortened to `!$'. - -`!fi:2' - designates the second argument of the most recent command starting - with the letters `fi'. - - Here are the word designators: - -`0 (zero)' - The `0'th word. For many applications, this is the command word. - -`N' - The Nth word. - -`^' - The first argument; that is, word 1. - -`$' - The last argument. - -`%' - The word matched by the most recent `?STRING?' search. - -`X-Y' - A range of words; `-Y' abbreviates `0-Y'. - -`*' - All of the words, except the `0'th. This is a synonym for `1-$'. - It is not an error to use `*' if there is just one word in the - event; the empty string is returned in that case. - -`X*' - Abbreviates `X-$' - -`X-' - Abbreviates `X-$' like `X*', but omits the last word. - - - If a word designator is supplied without an event specification, the -previous command is used as the event. - - -File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction - -1.1.3 Modifiers ---------------- - -After the optional word designator, you can add a sequence of one or -more of the following modifiers, each preceded by a `:'. - -`h' - Remove a trailing pathname component, leaving only the head. - -`t' - Remove all leading pathname components, leaving the tail. - -`r' - Remove a trailing suffix of the form `.SUFFIX', leaving the - basename. - -`e' - Remove all but the trailing suffix. - -`p' - Print the new command but do not execute it. - -`s/OLD/NEW/' - Substitute NEW for the first occurrence of OLD in the event line. - Any delimiter may be used in place of `/'. The delimiter may be - quoted in OLD and NEW with a single backslash. If `&' appears in - NEW, it is replaced by OLD. A single backslash will quote the - `&'. The final delimiter is optional if it is the last character - on the input line. - -`&' - Repeat the previous substitution. - -`g' -`a' - Cause changes to be applied over the entire event line. Used in - conjunction with `s', as in `gs/OLD/NEW/', or with `&'. - -`G' - Apply the following `s' modifier once to each word in the event. - - - -File: history.info, Node: Programming with GNU History, Next: Copying This Manual, Prev: Using History Interactively, Up: Top - -2 Programming with GNU History -****************************** - -This chapter describes how to interface programs that you write with -the GNU History Library. It should be considered a technical guide. -For information on the interactive use of GNU History, *note Using -History Interactively::. - -* Menu: - -* Introduction to History:: What is the GNU History library for? -* History Storage:: How information is stored. -* History Functions:: Functions that you can use. -* History Variables:: Variables that control behaviour. -* History Programming Example:: Example of using the GNU History Library. - - -File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History - -2.1 Introduction to History -=========================== - -Many programs read input from the user a line at a time. The GNU -History library is able to keep track of those lines, associate -arbitrary data with each line, and utilize information from previous -lines in composing new ones. - - The programmer using the History library has available functions for -remembering lines on a history list, associating arbitrary data with a -line, removing lines from the list, searching through the list for a -line containing an arbitrary text string, and referencing any line in -the list directly. In addition, a history "expansion" function is -available which provides for a consistent user interface across -different programs. - - The user using programs written with the History library has the -benefit of a consistent user interface with a set of well-known -commands for manipulating the text of previous lines and using that text -in new commands. The basic history manipulation commands are similar to -the history substitution provided by `csh'. - - If the programmer desires, he can use the Readline library, which -includes some history manipulation by default, and has the added -advantage of command line editing. - - Before declaring any functions using any functionality the History -library provides in other code, an application writer should include -the file `<readline/history.h>' in any file that uses the History -library's features. It supplies extern declarations for all of the -library's public functions and variables, and declares all of the -public data structures. - - -File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History - -2.2 History Storage -=================== - -The history list is an array of history entries. A history entry is -declared as follows: - - typedef void *histdata_t; - - typedef struct _hist_entry { - char *line; - char *timestamp; - histdata_t data; - } HIST_ENTRY; - - The history list itself might therefore be declared as - - HIST_ENTRY **the_history_list; - - The state of the History library is encapsulated into a single -structure: - - /* - * A structure used to pass around the current state of the history. - */ - typedef struct _hist_state { - HIST_ENTRY **entries; /* Pointer to the entries themselves. */ - int offset; /* The location pointer within this array. */ - int length; /* Number of elements within this array. */ - int size; /* Number of slots allocated to this array. */ - int flags; - } HISTORY_STATE; - - If the flags member includes `HS_STIFLED', the history has been -stifled. - - -File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History - -2.3 History Functions -===================== - -This section describes the calling sequence for the various functions -exported by the GNU History library. - -* Menu: - -* Initializing History and State Management:: Functions to call when you - want to use history in a - program. -* History List Management:: Functions used to manage the list - of history entries. -* Information About the History List:: Functions returning information about - the history list. -* Moving Around the History List:: Functions used to change the position - in the history list. -* Searching the History List:: Functions to search the history list - for entries containing a string. -* Managing the History File:: Functions that read and write a file - containing the history list. -* History Expansion:: Functions to perform csh-like history - expansion. - - -File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions - -2.3.1 Initializing History and State Management ------------------------------------------------ - -This section describes functions used to initialize and manage the -state of the History library when you want to use the history functions -in your program. - - -- Function: void using_history (void) - Begin a session in which the history functions might be used. This - initializes the interactive variables. - - -- Function: HISTORY_STATE * history_get_history_state (void) - Return a structure describing the current state of the input - history. - - -- Function: void history_set_history_state (HISTORY_STATE *state) - Set the state of the history list according to STATE. - - -File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions - -2.3.2 History List Management ------------------------------ - -These functions manage individual entries on the history list, or set -parameters managing the list itself. - - -- Function: void add_history (const char *string) - Place STRING at the end of the history list. The associated data - field (if any) is set to `NULL'. - - -- Function: void add_history_time (const char *string) - Change the time stamp associated with the most recent history - entry to STRING. - - -- Function: HIST_ENTRY * remove_history (int which) - Remove history entry at offset WHICH from the history. The - removed element is returned so you can free the line, data, and - containing structure. - - -- Function: histdata_t free_history_entry (HIST_ENTRY *histent) - Free the history entry HISTENT and any history library private - data associated with it. Returns the application-specific data so - the caller can dispose of it. - - -- Function: HIST_ENTRY * replace_history_entry (int which, const char - *line, histdata_t data) - Make the history entry at offset WHICH have LINE and DATA. This - returns the old entry so the caller can dispose of any - application-specific data. In the case of an invalid WHICH, a - `NULL' pointer is returned. - - -- Function: void clear_history (void) - Clear the history list by deleting all the entries. - - -- Function: void stifle_history (int max) - Stifle the history list, remembering only the last MAX entries. - - -- Function: int unstifle_history (void) - Stop stifling the history. This returns the previously-set - maximum number of history entries (as set by `stifle_history()'). - The value is positive if the history was stifled, negative if it - wasn't. - - -- Function: int history_is_stifled (void) - Returns non-zero if the history is stifled, zero if it is not. - - -File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions - -2.3.3 Information About the History List ----------------------------------------- - -These functions return information about the entire history list or -individual list entries. - - -- Function: HIST_ENTRY ** history_list (void) - Return a `NULL' terminated array of `HIST_ENTRY *' which is the - current input history. Element 0 of this list is the beginning of - time. If there is no history, return `NULL'. - - -- Function: int where_history (void) - Returns the offset of the current history element. - - -- Function: HIST_ENTRY * current_history (void) - Return the history entry at the current position, as determined by - `where_history()'. If there is no entry there, return a `NULL' - pointer. - - -- Function: HIST_ENTRY * history_get (int offset) - Return the history entry at position OFFSET, starting from - `history_base' (*note History Variables::). If there is no entry - there, or if OFFSET is greater than the history length, return a - `NULL' pointer. - - -- Function: time_t history_get_time (HIST_ENTRY *entry) - Return the time stamp associated with the history entry ENTRY. - - -- Function: int history_total_bytes (void) - Return the number of bytes that the primary history entries are - using. This function returns the sum of the lengths of all the - lines in the history. - - -File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions - -2.3.4 Moving Around the History List ------------------------------------- - -These functions allow the current index into the history list to be set -or changed. - - -- Function: int history_set_pos (int pos) - Set the current history offset to POS, an absolute index into the - list. Returns 1 on success, 0 if POS is less than zero or greater - than the number of history entries. - - -- Function: HIST_ENTRY * previous_history (void) - Back up the current history offset to the previous history entry, - and return a pointer to that entry. If there is no previous - entry, return a `NULL' pointer. - - -- Function: HIST_ENTRY * next_history (void) - Move the current history offset forward to the next history entry, - and return the a pointer to that entry. If there is no next - entry, return a `NULL' pointer. - - -File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions - -2.3.5 Searching the History List --------------------------------- - -These functions allow searching of the history list for entries -containing a specific string. Searching may be performed both forward -and backward from the current history position. The search may be -"anchored", meaning that the string must match at the beginning of the -history entry. - - -- Function: int history_search (const char *string, int direction) - Search the history for STRING, starting at the current history - offset. If DIRECTION is less than 0, then the search is through - previous entries, otherwise through subsequent entries. If STRING - is found, then the current history index is set to that history - entry, and the value returned is the offset in the line of the - entry where STRING was found. Otherwise, nothing is changed, and - a -1 is returned. - - -- Function: int history_search_prefix (const char *string, int - direction) - Search the history for STRING, starting at the current history - offset. The search is anchored: matching lines must begin with - STRING. If DIRECTION is less than 0, then the search is through - previous entries, otherwise through subsequent entries. If STRING - is found, then the current history index is set to that entry, and - the return value is 0. Otherwise, nothing is changed, and a -1 is - returned. - - -- Function: int history_search_pos (const char *string, int - direction, int pos) - Search for STRING in the history list, starting at POS, an - absolute index into the list. If DIRECTION is negative, the search - proceeds backward from POS, otherwise forward. Returns the - absolute index of the history element where STRING was found, or - -1 otherwise. - - -File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions - -2.3.6 Managing the History File -------------------------------- - -The History library can read the history from and write it to a file. -This section documents the functions for managing a history file. - - -- Function: int read_history (const char *filename) - Add the contents of FILENAME to the history list, a line at a time. - If FILENAME is `NULL', then read from `~/.history'. Returns 0 if - successful, or `errno' if not. - - -- Function: int read_history_range (const char *filename, int from, - int to) - Read a range of lines from FILENAME, adding them to the history - list. Start reading at line FROM and end at TO. If FROM is zero, - start at the beginning. If TO is less than FROM, then read until - the end of the file. If FILENAME is `NULL', then read from - `~/.history'. Returns 0 if successful, or `errno' if not. - - -- Function: int write_history (const char *filename) - Write the current history to FILENAME, overwriting FILENAME if - necessary. If FILENAME is `NULL', then write the history list to - `~/.history'. Returns 0 on success, or `errno' on a read or write - error. - - -- Function: int append_history (int nelements, const char *filename) - Append the last NELEMENTS of the history list to FILENAME. If - FILENAME is `NULL', then append to `~/.history'. Returns 0 on - success, or `errno' on a read or write error. - - -- Function: int history_truncate_file (const char *filename, int - nlines) - Truncate the history file FILENAME, leaving only the last NLINES - lines. If FILENAME is `NULL', then `~/.history' is truncated. - Returns 0 on success, or `errno' on failure. - - -File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions - -2.3.7 History Expansion ------------------------ - -These functions implement history expansion. - - -- Function: int history_expand (char *string, char **output) - Expand STRING, placing the result into OUTPUT, a pointer to a - string (*note History Interaction::). Returns: - `0' - If no expansions took place (or, if the only change in the - text was the removal of escape characters preceding the - history expansion character); - - `1' - if expansions did take place; - - `-1' - if there was an error in expansion; - - `2' - if the returned line should be displayed, but not executed, - as with the `:p' modifier (*note Modifiers::). - - If an error ocurred in expansion, then OUTPUT contains a - descriptive error message. - - -- Function: char * get_history_event (const char *string, int - *cindex, int qchar) - Returns the text of the history event beginning at STRING + - *CINDEX. *CINDEX is modified to point to after the event - specifier. At function entry, CINDEX points to the index into - STRING where the history event specification begins. QCHAR is a - character that is allowed to end the event specification in - addition to the "normal" terminating characters. - - -- Function: char ** history_tokenize (const char *string) - Return an array of tokens parsed out of STRING, much as the shell - might. The tokens are split on the characters in the - HISTORY_WORD_DELIMITERS variable, and shell quoting conventions - are obeyed. - - -- Function: char * history_arg_extract (int first, int last, const - char *string) - Extract a string segment consisting of the FIRST through LAST - arguments present in STRING. Arguments are split using - `history_tokenize'. - - -File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History - -2.4 History Variables -===================== - -This section describes the externally-visible variables exported by the -GNU History Library. - - -- Variable: int history_base - The logical offset of the first entry in the history list. - - -- Variable: int history_length - The number of entries currently stored in the history list. - - -- Variable: int history_max_entries - The maximum number of history entries. This must be changed using - `stifle_history()'. - - -- Variable: int history_write_timestamps - If non-zero, timestamps are written to the history file, so they - can be preserved between sessions. The default value is 0, - meaning that timestamps are not saved. - - -- Variable: char history_expansion_char - The character that introduces a history event. The default is `!'. - Setting this to 0 inhibits history expansion. - - -- Variable: char history_subst_char - The character that invokes word substitution if found at the start - of a line. The default is `^'. - - -- Variable: char history_comment_char - During tokenization, if this character is seen as the first - character of a word, then it and all subsequent characters up to a - newline are ignored, suppressing history expansion for the - remainder of the line. This is disabled by default. - - -- Variable: char * history_word_delimiters - The characters that separate tokens for `history_tokenize()'. The - default value is `" \t\n()<>;&|"'. - - -- Variable: char * history_search_delimiter_chars - The list of additional characters which can delimit a history - search string, in addition to space, TAB, `:' and `?' in the case - of a substring search. The default is empty. - - -- Variable: char * history_no_expand_chars - The list of characters which inhibit history expansion if found - immediately following HISTORY_EXPANSION_CHAR. The default is - space, tab, newline, carriage return, and `='. - - -- Variable: int history_quotes_inhibit_expansion - If non-zero, single-quoted words are not scanned for the history - expansion character. The default value is 0. - - -- Variable: rl_linebuf_func_t * history_inhibit_expansion_function - This should be set to the address of a function that takes two - arguments: a `char *' (STRING) and an `int' index into that string - (I). It should return a non-zero value if the history expansion - starting at STRING[I] should not be performed; zero if the - expansion should be done. It is intended for use by applications - like Bash that use the history expansion character for additional - purposes. By default, this variable is set to `NULL'. - - -File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History - -2.5 History Programming Example -=============================== - -The following program demonstrates simple use of the GNU History -Library. - - #include <stdio.h> - #include <readline/history.h> - - main (argc, argv) - int argc; - char **argv; - { - char line[1024], *t; - int len, done = 0; - - line[0] = 0; - - using_history (); - while (!done) - { - printf ("history$ "); - fflush (stdout); - t = fgets (line, sizeof (line) - 1, stdin); - if (t && *t) - { - len = strlen (t); - if (t[len - 1] == '\n') - t[len - 1] = '\0'; - } - - if (!t) - strcpy (line, "quit"); - - if (line[0]) - { - char *expansion; - int result; - - result = history_expand (line, &expansion); - if (result) - fprintf (stderr, "%s\n", expansion); - - if (result < 0 || result == 2) - { - free (expansion); - continue; - } - - add_history (expansion); - strncpy (line, expansion, sizeof (line) - 1); - free (expansion); - } - - if (strcmp (line, "quit") == 0) - done = 1; - else if (strcmp (line, "save") == 0) - write_history ("history_file"); - else if (strcmp (line, "read") == 0) - read_history ("history_file"); - else if (strcmp (line, "list") == 0) - { - register HIST_ENTRY **the_list; - register int i; - - the_list = history_list (); - if (the_list) - for (i = 0; the_list[i]; i++) - printf ("%d: %s\n", i + history_base, the_list[i]->line); - } - else if (strncmp (line, "delete", 6) == 0) - { - int which; - if ((sscanf (line + 6, "%d", &which)) == 1) - { - HIST_ENTRY *entry = remove_history (which); - if (!entry) - fprintf (stderr, "No such entry %d\n", which); - else - { - free (entry->line); - free (entry); - } - } - else - { - fprintf (stderr, "non-numeric arg given to `delete'\n"); - } - } - } - } - - -File: history.info, Node: Copying This Manual, Next: Concept Index, Prev: Programming with GNU History, Up: Top - -Appendix A Copying This Manual -****************************** - -* Menu: - -* GNU Free Documentation License:: License for copying this manual. - - -File: history.info, Node: GNU Free Documentation License, Up: Copying This Manual - -A.1 GNU Free Documentation License -================================== - - Version 1.2, November 2002 - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - functional and useful document "free" in the sense of freedom: to - assure everyone the effective freedom to copy and redistribute it, - with or without modifying it, either commercially or - noncommercially. Secondarily, this License preserves for the - author and publisher a way to get credit for their work, while not - being considered responsible for modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work, in any medium, - that contains a notice placed by the copyright holder saying it - can be distributed under the terms of this License. Such a notice - grants a world-wide, royalty-free license, unlimited in duration, - to use that work under the conditions stated herein. The - "Document", below, refers to any such manual or work. Any member - of the public is a licensee, and is addressed as "you". You - accept the license if you copy, modify or distribute the work in a - way requiring permission under copyright law. - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter section - of the Document that deals exclusively with the relationship of the - publishers or authors of the Document to the Document's overall - subject (or to related matters) and contains nothing that could - fall directly within that overall subject. (Thus, if the Document - is in part a textbook of mathematics, a Secondary Section may not - explain any mathematics.) The relationship could be a matter of - historical connection with the subject or with related matters, or - of legal, commercial, philosophical, ethical or political position - regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. If a section does not fit the above definition of - Secondary then it is not allowed to be designated as Invariant. - The Document may contain zero Invariant Sections. If the Document - does not identify any Invariant Sections then there are none. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. A - Front-Cover Text may be at most 5 words, and a Back-Cover Text may - be at most 25 words. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, that is suitable for revising the document - straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup, or absence of - markup, has been arranged to thwart or discourage subsequent - modification by readers is not Transparent. An image format is - not Transparent if used for any substantial amount of text. A - copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML, PostScript or PDF designed for - human modification. Examples of transparent image formats include - PNG, XCF and JPG. Opaque formats include proprietary formats that - can be read and edited only by proprietary word processors, SGML or - XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML, PostScript or PDF - produced by some word processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - A section "Entitled XYZ" means a named subunit of the Document - whose title either is precisely XYZ or contains XYZ in parentheses - following text that translates XYZ in another language. (Here XYZ - stands for a specific section name mentioned below, such as - "Acknowledgements", "Dedications", "Endorsements", or "History".) - To "Preserve the Title" of such a section when you modify the - Document means that it remains a section "Entitled XYZ" according - to this definition. - - The Document may include Warranty Disclaimers next to the notice - which states that this License applies to the Document. These - Warranty Disclaimers are considered to be included by reference in - this License, but only as regards disclaiming warranties: any other - implication that these Warranty Disclaimers may have is void and - has no effect on the meaning of this License. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies (or copies in media that commonly - have printed covers) of the Document, numbering more than 100, and - the Document's license notice requires Cover Texts, you must - enclose the copies in covers that carry, clearly and legibly, all - these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a computer-network location from - which the general network-using public has access to download - using public-standard network protocols a complete Transparent - copy of the Document, free of added material. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: - - A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has fewer than five), unless they release you - from this requirement. - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section Entitled "History", Preserve its Title, - and add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section Entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the - section all the substance and tone of each of the contributor - acknowledgements and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section to be Entitled - "Endorsements" or to conflict in title with any Invariant - Section. - - O. Preserve any Warranty Disclaimers. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section Entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice, and that you preserve all - their Warranty Disclaimers. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections Entitled - "History" in the various original documents, forming one section - Entitled "History"; likewise combine any sections Entitled - "Acknowledgements", and any sections Entitled "Dedications". You - must delete all sections Entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, is called an "aggregate" if the - copyright resulting from the compilation is not used to limit the - legal rights of the compilation's users beyond what the individual - works permit. When the Document is included an aggregate, this - License does not apply to the other works in the aggregate which - are not themselves derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one half - of the entire aggregate, the Document's Cover Texts may be placed - on covers that bracket the Document within the aggregate, or the - electronic equivalent of covers if the Document is in electronic - form. Otherwise they must appear on printed covers that bracket - the whole aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License, and all the license notices in the - Document, and any Warranty Disclaimers, provided that you also - include the original English version of this License and the - original versions of those notices and disclaimers. In case of a - disagreement between the translation and the original version of - this License or a notice or disclaimer, the original version will - prevail. - - If a section in the Document is Entitled "Acknowledgements", - "Dedications", or "History", the requirement (section 4) to - Preserve its Title (section 1) will typically require changing the - actual title. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided for under this License. Any other - attempt to copy, modify, sublicense or distribute the Document is - void, and will automatically terminate your rights under this - License. However, parties who have received copies, or rights, - from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. - -A.1.1 ADDENDUM: How to use this License for your documents ----------------------------------------------------------- - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with - the Front-Cover Texts being LIST, and with the Back-Cover Texts - being LIST. - - If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - -File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: Copying This Manual, Up: Top - -Appendix B Concept Index -************************ - - -* Menu: - -* anchored search: Searching the History List. - (line 10) -* event designators: Event Designators. (line 6) -* FDL, GNU Free Documentation License: GNU Free Documentation License. - (line 6) -* history events: Event Designators. (line 7) -* history expansion: History Interaction. (line 6) -* History Searching: Searching the History List. - (line 6) - - -File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top - -Appendix C Function and Variable Index -************************************** - - -* Menu: - -* add_history: History List Management. - (line 10) -* add_history_time: History List Management. - (line 14) -* append_history: Managing the History File. - (line 29) -* clear_history: History List Management. - (line 35) -* current_history: Information About the History List. - (line 18) -* free_history_entry: History List Management. - (line 23) -* get_history_event: History Expansion. (line 31) -* history_arg_extract: History Expansion. (line 46) -* history_base: History Variables. (line 10) -* history_comment_char: History Variables. (line 33) -* history_expand: History Expansion. (line 9) -* history_expansion_char: History Variables. (line 25) -* history_get: Information About the History List. - (line 23) -* history_get_history_state: Initializing History and State Management. - (line 15) -* history_get_time: Information About the History List. - (line 29) -* history_inhibit_expansion_function: History Variables. (line 57) -* history_is_stifled: History List Management. - (line 47) -* history_length: History Variables. (line 13) -* history_list: Information About the History List. - (line 10) -* history_max_entries: History Variables. (line 16) -* history_no_expand_chars: History Variables. (line 48) -* history_quotes_inhibit_expansion: History Variables. (line 53) -* history_search: Searching the History List. - (line 13) -* history_search_delimiter_chars: History Variables. (line 43) -* history_search_pos: Searching the History List. - (line 33) -* history_search_prefix: Searching the History List. - (line 23) -* history_set_history_state: Initializing History and State Management. - (line 19) -* history_set_pos: Moving Around the History List. - (line 10) -* history_subst_char: History Variables. (line 29) -* history_tokenize: History Expansion. (line 39) -* history_total_bytes: Information About the History List. - (line 32) -* history_truncate_file: Managing the History File. - (line 35) -* history_word_delimiters: History Variables. (line 39) -* history_write_timestamps: History Variables. (line 20) -* next_history: Moving Around the History List. - (line 20) -* previous_history: Moving Around the History List. - (line 15) -* read_history: Managing the History File. - (line 10) -* read_history_range: Managing the History File. - (line 16) -* remove_history: History List Management. - (line 18) -* replace_history_entry: History List Management. - (line 29) -* stifle_history: History List Management. - (line 38) -* unstifle_history: History List Management. - (line 41) -* using_history: Initializing History and State Management. - (line 11) -* where_history: Information About the History List. - (line 15) -* write_history: Managing the History File. - (line 23) - - - -Tag Table: -Node: Top1323 -Node: Using History Interactively1948 -Node: History Interaction2456 -Node: Event Designators3880 -Node: Word Designators4815 -Node: Modifiers6454 -Node: Programming with GNU History7681 -Node: Introduction to History8413 -Node: History Storage10103 -Node: History Functions11238 -Node: Initializing History and State Management12227 -Node: History List Management13039 -Node: Information About the History List15071 -Node: Moving Around the History List16568 -Node: Searching the History List17569 -Node: Managing the History File19501 -Node: History Expansion21321 -Node: History Variables23229 -Node: History Programming Example26035 -Node: Copying This Manual28712 -Node: GNU Free Documentation License28972 -Node: Concept Index51378 -Node: Function and Variable Index52218 - -End Tag Table diff --git a/readline/doc/history.ps b/readline/doc/history.ps deleted file mode 100644 index e321526..0000000 --- a/readline/doc/history.ps +++ /dev/null @@ -1,4808 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: history.dvi -%%Pages: 28 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMBXTI10 CMTI10 CMCSC10 -%%+ CMSL10 CMSLTT10 CMBX10 CMSS10 CMTT9 CMR9 CMTI9 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2005.12.06:1546 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: f7b6d320.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 -% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 -% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 -% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 -% -/TeXf7b6d320Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand -/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen -/period /slash /zero /one /two /three /four /five /six /seven /eight -/nine /colon /semicolon /exclamdown /equal /questiondown /question /at -/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X -/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 09fbbfac.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 -/TeX09fbbfacEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla -/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam -/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon /less -/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright -/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l -/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright -/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi -/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: bbad153f.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 -% -/TeXbbad153fEncoding [ -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /circlemultiply -/circledivide /circledot /circlecopyrt /openbullet /bullet -/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal -/greaterequal /precedesequal /followsequal /similar /approxequal -/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows -/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast -/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup -/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional -/prime /infinity /element /owner /triangle /triangleinv /negationslash -/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur -/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection -/unionmulti /logicaland /logicalor /turnstileleft /turnstileright -/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright -/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv -/backslash /wreathproduct /radical /coproduct /nabla /integral -/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section -/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef -/circlemultiply /circledivide /circledot /circlecopyrt /openbullet -/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset -/lessequal /greaterequal /precedesequal /followsequal /similar -/approxequal /propersubset /propersuperset /lessmuch /greatermuch -/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 74afc74c.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 -% -/TeX74afc74cEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /sterling /percent -/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma -/hyphen /period /slash /zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 0ef0afca.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmr5 -% -/TeX0ef0afcaEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi -/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls -/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright -/numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft -/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h -/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash -/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda -/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup -/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj -/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe -/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMTI9 -%!PS-AdobeFont-1.1: CMTI9 1.0 -%%CreationDate: 1991 Aug 18 21:08:07 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-35 -250 1148 750}readonly def -/UniqueID 5000827 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 -4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D -DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A -F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 -8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 -03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 -211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 -E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B -D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 -6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 -0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC -1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 -298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D -C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 -433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 -1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 -1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 -E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F -9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 -BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 -40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 -49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 -4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C -4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 -35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR9 -%!PS-AdobeFont-1.1: CMR9 1.0 -%%CreationDate: 1991 Aug 20 16:39:59 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-39 -250 1036 750}readonly def -/UniqueID 5000792 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835 -3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203 -046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E -C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A -A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2 -A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D -731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B -09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1 -49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B -5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B -54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C -C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F -11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AD14F1CBE935942AEC -D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A -109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 -3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 -C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7DFC9BE98C04 -07AB81FFA0DF072948F163C014692806D9D0739EE9ECDE57FB6B4E8444A7BF3F -57BA77A5B85C09209D100200D1254D1A955F92899E0CC2F0901F01F8DD6EBFDE -0501C3A8645283E8FFDF47BCB83752A4AD5C94CE1F64D664B0583E69C9ED9E2E -BAC3FB641A7B838DD8D9BA1EE40DE683F5B694561160D08A58F4C53E6346CAA5 -58F8EB6323884F1FA776B161890712BF54CC0E5A54FF1407D8805BBFBDD39BEA -8F1C47E7589E3C04DE43F3F9390B87C81A47FCAC3BCF056E2DAE0B266479C3E4 -55AD44629ECBE69C17E4357BA1E0AEDDB614942519741E52D7CA9C0E229AEBB6 -E0AC8BE5129AEB56EB59DA82DA56B54E8E39E6B817F5EF1F8BC7AC5A4DC520C4 -D494811451F213EF198092405D82ADA72C249F6D5D2657FBC6EA372867D2021E -EA6828FC107BC22B5192121A59D527187D990EAE65A72B2FC47AC650AEA43CB3 -20B04A91AF599929E03670D1E956BF56D302DB0769E91FE4021E0F790980A242 -A5D76D024A11EB57F9A84A040AB2093170D8C9EE54296BE826470077B39C4CE8 -2702AB49D06FACC7785CE175B92B5C98747613A7FF87D62E2433603C4F122CB1 -305D9F4913F805A2AFABEBBCC99F7F67A60842EE8677976428B7F6E150C93BAF -6D4B8085C2A77794527F35FBAB758FEE0DF77CC94A56CE73825EFF0AF966BE3D -10046B790C73AA615416079E5EC150FC6C157E62ABF8EB6B17857B8AF525F1D1 -E39EA402C5E795C9662750AA35EB853AD3EB87AA78B1CFD3F3F926E6E75B0A09 -746F816E651862466008001BE791573B8C05AADB4AACF9237BC0326CB0C732FA -8CD0F289CE02AC1453B2B1732EC190DA4C3480E397272C045615709130DD125A -DFDDBC4B2D2745824DC94F5D239D95A2E4379982515952A51B9EE6D00D71A3E6 -F6C5B93F5400B553154512DC0DDC57D92BFB241617C83068CD7EC9E6B0F9EBA3 -64685D3E6B68149A64B0D19B3558EEB7C9FA389B206021014FB99EC18CA67E19 -7E589382E77B802FAA0B79AA5F3BC1DDFABF9113D3AF85B19E0F43A27C2D1E62 -1C7B580D573E9504BA119506EA424273DDECEE01FB94FCD893BFAA6FF0332CED -4F64D6EACDE630BA4A8E41B8120D8DB529531D4ACCA9ABFB6A27CE41029590F3 -46AAA9EFA728FC6492779AAD249D9EFDE27A2D987DE0FE1D9E4D7A91128761EA -FD0A89AC4FBC4DADFDA502E7D01292D85EE63E6422615C6FEDF75F9256C6C3DF -F7BFD47F477A1B93F5B8B8C950449856E34C36284F0FDCC05635F173341D509D -8DA223987F6BFAD2F6D004368D9A82EC77207ABF8E4801B59A30CAD6E04BDC52 -6C3068E0F4141F6F76D655F657AAFABC87E78C999A1C40894A5F776E2F868907 -376FF64C0782BD815D39FA2C290686756807E888EB002E077101F36229EEF79F -5AAE4D00AD85B4913CE4FB7AF667FD0198A52016A7B58B09CA5A9D4DE3A9B333 -28F623199C93E47E09D70AD3D2AABE3BCD6EE9EAA8B8D8F3F42FEE7BC3D846AD -DAA4E31B62120EDE8B7DF8CB5BEFB6C5350ABAFB27FFBB57D312C4192EE98837 -5F959B63A6718C983F4072015EB8A4FACAE77EA1D6233B0AD532349F0CD15335 -6D8E1D99D543ACFB5B381FA56AF8B223EB57FD674B8484FFFF2BC0127121F68B -4A43ECCDE282B294B1DD39556DE0D73592C2911AADA2DCAEB67A78ECE80AF5BE -F54C5DE76F128C6BF010D65270B58334575309D907CBEB138A1E3CF889CBAF5F -83368C5DE80B5DC665C6A7CA4054A673D75939E732ECCDFFD617677299A0EEEA -FFCC76EF9E237CD7EFEAA6FA40029D9BB2BF563C969195353C28BDBE788BD14C -031216D5E46BD3B144A6E5859C8747677260B4E07C35FCB1939785C458CDC0F6 -9EAB2CAF77CE96DF0F44BAAFEEA51A0F455964C3349ED7593742237A8FFAB3C7 -4A7A976B203664AB65AC996F8A961B3D6559874FE93A808D4E19E0BC84CF4BD2 -5D991C4DF859F136E619CDF1B5D88315FCE55684B8A452B657C5275609B61DD2 -5C2D7476288D9E8A04DA330CBB10FEA5829EC3E22A7A6596C748683A9B038B96 -0ECBBC13DF9B63C2B9989A1D1028B1426E48EB1F3DDE0BE63DD65CE6C80A6345 -2060E5F11BCE38AEF6ABEA5F3591D840952BE27B3DFA574AB3B6406B020A519E -81A34FFAE360C9628D88C8E006A926884347A87E576344DC249DF32FE14CF02A -F54147639C5F5A2C14DE888E497D9F9E62256AEBF70D2E88EAACED5439715B98 -FD09A5AA5AE1C937F82576953C724A0B8C8E2BC58F75840E87A87782DD3CB1DF -D6F3A2421354339A04D2F1B2A2F7B13230E06BE82ED286CEBE37DFCAE4C6DF0D -28D11A05F0C6A1A2DB756E508C0E7D8C9494D34A8ED76F7ED51A1C51E3EDF913 -345E0F296474DA42C2B148C48C647DA813EDA97F5D39B8B9CC8DE806774C5A99 -72BFC97D7F1D51388F8F4E4D31BA1A7B3F81EFB20DD597730427DB06500E0A8F -61B27DFA7761110EAF5F5CA259B6DC97586421AF73A631866648B732F7A8300E -9DDC21ADE33101788FFFCE3E9FFC67FD8A343DE64DFB53C575ECFF188E123C69 -75A4261C1735884916BA454D3EBD6162807B3C29BA48E771A731ED54E43E2BF0 -31DA4CE66B1CC113ED74F04964DA0B86EA8D3BFF1D682DBA606B6D6D0BF95544 -DBC524EFE702BC1FBFCAC129B31581D7807F762471999DA10374D4684E59AFF9 -DF7E03DA10D3896011C433A70889E42BD273FFF5616390FAC757B1ACB0444380 -139037855FD194E58FACA991E96337A8ACEE430875AA1EFF3B7A022D9E56CD0C -FD5ED52EFFB79B72241963E91B1198A2E17745F07B36B31E1BC580AC24AA8B1C -5E8F59B7E19FFDACB14199B5CAF4AB2EF223D59199B0BCD9C6DB2399A144BA03 -517B2766DA8D6104CFFC0B7A29B405C21FAD7B9ABF356A0149CEEC522ED19839 -D861BA710589FB46F2A52AF26D3B1E9D9664257FFA6594C524ACDD43865FFC47 -E52D2AFC3F7C4AF04344ACE67F36EDB52CCD754FD6F93482D351D8C114D02B5A -AF11A38276CF1C8527CAC28B97427963542ED96B9E79D82C5CD157CF83E7B379 -F0044C578BCF872D940FC6F4B68FB21A50478AE6C015C18B69F01A5A5617D54C -0321981183D5F53DD9A27BD89747FC8D8936F2251F2A9290CACADB37B584F448 -9FA0215B6FC33F5A12E5A7677AC6056E67A6E881D32B76879E77CB62B596B027 -275E0C63744064AE2E4330639BA92FA33936C30C18C4997EAEFF4912A8E11067 -359C434B98256311E87EB99760A3CB7ED90210172FD107D9B7881788E3D22DE8 -D7D58E3550D9A5CE0C59AF4117E34458F4628D734056751BC09D337D49629907 -732455C410D08877E333D0CA430AAFC7DC6DECD3DC2B9C5D382EFC464E9186AA -3C747CE4BF15C775ECBED2C410E95E01D4B68177CEF4FDDFC18A43ACABD890A0 -99C27485DF967BC6298C9AF4AE53DA28DAC11D5B2B88CB5DC9375DBAC099D39F -0AEFE1A15D8661B59DF458951F9A962851F7F0A36BAA5D1EFB36B8070A6A91FD -1C229C611E4F0A20954CC4DFE892F45FC3DB43C6B5D9B539675A28F7F7EAADC7 -0CE005DC7E2B3EB5D83717CBEEC50DCE10C80C3D5BD889BF05484D27FE296F43 -8E67B1DB1C3858874955449F7CC8148930F85B2EB2ABCAC14DBCD75102848360 -434C53100CB9E0E227B1B803D1C042FBC72AA6CC7E968AD34F753A9B31045985 -F7B813CD552F3FE8C7A266013E54E661CC6E3357475625D69139489455541C21 -02E061270EAFE3B05FC5E40C363890799D92AAC2CD67D65ED6F8F7DE04F2BEC2 -E9925CF98FE80EAF13329579C78F938EFA6248144E3F04F0A815851614D02DC0 -0D2D62196135E06AE1154A2F18B3D66D1BC73D513425D6AA7B41B56525B59247 -7BC8D9A40CA3CDFEBF237C63B3E1EF554742CC8BDE9A074659449C96D424BE8B -8E49EABD5915AC84F9D53F0A7FCFF6370C7AD77FCE2CC87B3B380A7A8C2A4AAA -7D0E0AA4D467A7CA592484851760C94E0ACDAF42BE0A45E50370BB667E1101B0 -24D79BB4CAFCF86414CFE39B5E6AEEEC9466BF34F7A600E245016E8D8D1FA756 -1E45FF38E5B4484A6292496398AD3F191F7116F117E49C3187612C941FA46CFD -83058920874109FDF29FF2A9F663D90F3EE75FE9549CF9B7314BBEFEE8499EBD -CB561F6546847AD610C744F459F51A73D435B5BD2AD351933F8E76261D9A819D -C65FD387F113DFC3D4FCF13CBB563C6DE69E7347252258C119A6147DD86C3672 -0853B3280BE2C0ECE83DB14317BF4ADCAE40E62EA1A295C693958ABDE0B544C3 -3B02DB82485FD45B0A5068F623015720F3F53BDBB9C8AAD7466A83357E0BA273 -AFC6A6DD60C0C9F98ACDD44D0926CAA24B76112A9254D99AD577C28D5D6E96E3 -386240AE572864DBD7131DD6C8892B79E0A3262EBBD68ED9B42E5D076DAC3354 -92F05A01C056DED791B9C71B1CB72A23FA86C96DDA2DA640D259B9C1F2E3E9BA -3E115411F1CEE748013A60EBE3218847B20185419E1A8E1F2A1F002E4DA1261E -5C8285E7C90C8A2C976C595868D43A6174968368186E1EA63DB4E9A7F7BF3F2D -0685B921A21600B0E291700FC74B61D5F010FA467AA2747328EE08F94C838224 -E540DBEFCDA1FF5B397C868A11D9BC794D06ABA2FECE7C71F1E0F5F43D33D18F -6E954D3C7122648C6DEEFAA185E220A37FCCD4848996E4C2E8570D9C91755C07 -D68DA8E12D814788B6C5CA5E1A2B76A39712A9AB568848A3B3BD4F43BE18915E -F0C1EDD8A5CAFD3EF3E3199146EB1624AD8FF3A59A42BDCED9B2A4DB651338F3 -539BA9081C360F5B1F1055775B2950F144C41E93CCE158DA1BC638FF2D0A3B16 -AE48F309C87EC1A3EC548F55AF1A67C32B1716B56D70F19DDB3D8402E294C2F4 -8B7145400EC637F4E74A4A2C3319A19D2C8B6F049BE419B09E02A14CF5EEA11B -F466B5BF07F0D25BA30DCBD7EBD036B4AAC76A7BD4E4E801549A2CA8C187CBA1 -D6C6E8F774EA237FC79AA836C86740C79196747ED857C329A240DF23D75F9398 -FE330C56724AC0D13D8B08DDBDCF922218C6B4CC175CD5AC99ADAC896B84A802 -B40D36B4AE9E6DA1FF99264B81B5BC4356CF8B25E683FE7E46C1EA3F3CCAF955 -D08145168C9051DB46B41D9A5E6C6AFC3BBE43B06F924CE25A9D7B63F311ED2A -6B186DA5FEF9D468614918AC257745FAAEB3632C851F048628CFDB29C6F3E60F -2C6FFAB377CC344542782671C3B06F3223E6BA4BA20C48DB3AF838B9115AA881 -61DBD8A6F278105B2291CBADD3E2B05BD72746C46B3DB93CC6D78F5786361D8A -5AB534808BAEE7004E43E32CE00AABB15332420F25FB746AD50F8BFF19FDDCBE -146449B64900B0D9E2877A6704C965FC444D05326392F006DF818198A292E9FE -16AFA046317811D136E15B44A402B78843F3F4B397D285716B07236EF0FF2026 -BE9F30206779B2E1EE287238ABA302152718D25567C720694F8D7854155608C9 -310B9C4326892FAEEDE57B9E6AA558C1E632DF9E4F3642324194CE92F31F394E -18D39EB934133A47C0CFA879585C5B446A3B371E4C331E728642C8ED64754205 -CC6975D7E395AAD0B54B68F421B49BE2DCE5C89395D40D166347CEBEDE8A7DA5 -5EB9F6385A65B176E7D47D875163E4B22B17E54884DF5B51828821673F90013E -7F543E2CE0AB355DD9769CAC32347F5F69D71FA21459DF2AF5E191AC313E46DC -8490A21791CFF90C57443C2CA11599D5BBEF581140A00BA471690BE5C5221FD3 -EE8102A8EA43D166F5F530581CDB3E3F2AF38C70FA7760EB6A2F5E53E1AE0673 -550178AAEE7E1FC5E4489478CEDBE4EDC181D1EC1090F6F4AF1B514629DFDB07 -AD3B95A20AC32C3D8B386875FDCB4FE166AFCC310EC644DD24CD051E0ABD8A8F -EF3816236D6A8DDD7BA106D76F29962E535C2F3E5447A1F2CF445F5C8A588FEA -208397F477DA82261A3B642837816B70FA39F82D9CF69D957F11D36E1C35B681 -37BBE843A5D1B6DD7E1ADA05DCE43C273E4B1F26293485F7930FAE7C9AF55DCF -C0AF7444304BE5D68D31B3008740B906D873BB719AEE71A3FD41C44778E32944 -0A8123583530ACFA771E3CC02DC776FDD6C5A99ED857CB344E12569BB0F3B358 -B541746DB9BDDF953B2DCD7AA701984C05210B6EA6C7AD0D2C99BBA5A4E4008E -6DE433AD469234776162F1E17095824693AECC1BE92416D5602585049BCEB279 -FC3F18D5C054901111E95B77554B919EB92A6C337CCD739D0DE40654C266373E -4A2262401E36DCAFEF09CE046581E9ACD43F7D5417C98E7F4379827DDA2B8D6D -A1F82179F7ED427C4CE78399B8C470C4D224E77BA2C57C4F262120B62217A3A6 -5B4C46504BBACC03791A3302A29D9F124FF7A08CF82303111AAD48EBCB7E62F8 -C8BF32D84F7DBC129A1B872096A3703C9B041C8743BF19B6D2B0B22AF820599F -93181D0C91EAE7540E17B0718EA0FD3443D887740891AB8C4C2D3CA3C505B548 -FEBEED800FEF69CB12C8FAF6662EB15A9EE695424930BE8DC2FCA22201F033FB -252F0365C2CB7352EA0400FD21F1F100DA96AEE410826D07F1A930C1E1094F9A -E57AAFD332405CEE40A2D5159483E3CCC12C339D9492E4BE419CD1875B9E3645 -DEE7B00256BD144A5A743D4F21DF191A30ADC88AFC1A1401AB410870F874090B -E98B347CFE36AB22D68581C47C30A8C6095E8163E1A88995DB89770CD427825C -D66540AA957F6CFFB26A05BF1A5581B6E50735D101EB5301EE8DAD2B371A884B -FF281829B836B6404EABCE30AF7F7EA135F0A7BE66E4F3BD2B55ED233B3277A1 -6DB62DB676980AECB2413D86B4CC2BABC18BAAEA8990267B7E52FEFCAD821884 -315182678DA1F36544CB16E0829C408843000C29A1F3221B120F14AC4BA3B18D -C491CA354747E96FACB7DAB46C0115F3BE564F3435F7DE88536297BF6F30063D -84AD309FF1AD8A97717243B29C7518F62E9F83DC0FD73EA7876CE05B6D526107 -7533EDD59066091B7577DA2522C1F29BD369C2AB20223F581B9C553A37FF0132 -0FE0971845D56D48053014593CF50EC45016994A36E86DA7D06065C8CA3AE16E -5E860B970683E00F91FD93AC644D7114DEA31E6E9CBA1D76EE45D119DC0EF0C8 -39C3E9ED52C48C00B917A21160BA46CA3C7B33F696E3564486D5CC2D9388E34C -CAC3BE8F7998DC89C3068F542B6D9D8D93E68AC73BA4A44E69D794F6035A2658 -27A6692346CF918338CEB7BF710200700ACCB43A5AF13E84865137FA8B1CF338 -AB5260F08FB5371FFEE92CC2D9BA01AA1BB93490FCA55C1DEF6F1D73D6D3F93E -14EE07E85AE637B4BBDC546452C6D76B8AAC96288BE5723BA0E7AE9386476D10 -4B9A4E58C16EF66A16456135E14C3801CA43684EA28C58B9B5934677A71AF428 -29F1A4015CBB05EEB83AF5FEEA38FABF9FAF815622EC45486B489DE574084B48 -8A35739BDCB3025E8EB0F3A3D83B0787F0E6D599AE490455AB75A79F59AAA612 -CAC364F0C8370981A33422CCD2ED96402B1AEE1E90044ECA7250077023655D73 -2B75D1E0A7B4CFE09C00184DDB3111345ECB8F39C1AB453F19AEABFB5DA03217 -F5B99597826B9370CA481F1D15787BC7B4DC7C29D267DBC055C425F835F844FC -9253C179DC53D60ADBEA2D2B2588274F435E84F40A106BA1DBED09407888AA49 -7D3E58A45B7034B4BAADF5461522871A139CDDA2B9E37855FCE7C0AEAABCF0EE -E062E1B6053B1B6A87C30E8BEF2A7337BA97D6583651711B281D7D657FD55F68 -7052E9F69AF5D5AAC8FB2A63C560103392E0D9BBE5FE727C61BD74AF45294FCD -093A8B2AD2617DDDD401AE3A9AE01EA4D1444642DDBA84031B4B5598AAD8D76A -7E38EAD377237BB0BDE6E4F10AFA91501A7D177B07FFD936FD7B5441FDF2F3A2 -321D37AEF9DC0212B6F8DD3FAD075FB7E2178BE642E86AEA49BB2DE0209BC8AE -DEF9FD626C27B1FEBB39E25026E530EE07DA0016DBDE509B02D7113906F07403 -CAE5A5A0DF4E9D890EF34E201B0E14E3C6CE229260B4A08B81F28D941C1117BE -1A9476071EF84055B87B28D1C3B40450C89114342F42CB995AAC941F5B1E730B -4919FD646599151EC05EA2877C22D5A79B2E8B8C82038821A63C4A463652B9BC -29DD00004A701F89B8378E71810C615904011231F6 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.1: CMSLTT10 1.0 -%%CreationDate: 1991 Aug 20 16:41:43 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -end readonly def -/FontName /CMSLTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-20 -233 617 696}readonly def -/UniqueID 5000800 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 -0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB -4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840 -8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079 -8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4 -B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F -ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858 -C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F -EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F -2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60 -4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370 -52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D -38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA -00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0 -B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D -CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF -B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F -802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE -32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8 -00DE382ABED85350033F8ECB97398E4E0A75D4877A107F6A909D0C76D14F9A96 -8A6CFDE3FD9D79B6FD82693A9F354BD2ECF30C6D99F7AC522F8D6C93EA214F7B -3D0ED77F042ACDE9414264C0698E86398562E2C640DEBBA0734AB4C3ACE3907D -CC79E6B2C6C3C3F9B01526E8CD98237D4A9B403FF8CE3132222FA60C196A19BC -A2393AE6935C0F8B67FC1D1A13507C100403B61A82AB0165B072581059B844EE -CE34C714DB54843CA29B306D373EA67C2F6842FC3FE75898FB80AE43E689F641 -ACB7715CF595C8ADDF68D8D5DBF99528FC4FAE495ACEAC9E0B61971641EF17A0 -4015E263840C96C1F2ECC22A3368F9E0A31475185420560CBEE9639AB9280831 -69636C32D1F3E397FF45DD97FAB9222771EC4C50F45E8DCE4BB761DA258F936A -1067924AD9A066E11FA841E0258039BF264DB97EA12311A8AE9428DBD5A0EEAD -12915888C3BC3E25EF203BA7D30C9D7ECD8A33F72604FB9DF9DEB133671C993F -DC7628AC78C3E93D3441733E247F4A364C66C78334B1C31FD803FEDC7845EC70 -593FC75B7833792AE449CC2712A3E054148A9EBD8AC6170E14C7284C434CAD61 -FBBE0BD31D7970A6C032BB9A12E164759735B18471D2E9E19735387607ED1E5B -56CA84F1874F59A6797CD8181B0EC05F42E02F27A9F63542254DE953559CAD95 -9F4987CB5A72A329F4E8D07A23DEFA2C0A9C4CD8AC65E867007CBF7D0309BE28 -9E515728F9495D1B5F3EB89A51AE836937E548CB10DA7B969F7558DA4CB29E45 -813BE23A40849203DAD5C8890394F1EDD90074E63CC0D6CDCE6143A153E79A9C -7556EA3C9D7CA44368B81DE3B5ECF4791A4E8955ADE6632B22972A5F8B5EC694 -1EEF90BC65E2C91643058C323CD53CC4059CAB8EB5930DE530817C6E4283E53A -210C7BCD93B4E2EB9A4530932868FF6924106C3A889A9B0DA120949F9D24B2F9 -8B1D9EAD4F1B84CC9CA63E7E3154A6D42A338564B7FAAC6509E08F47A207F933 -6F4A1813D7958F62EBFED3361E6A3D45A2DC552FFEECD0F18E60222219ACEC20 -45285AE5EF96AF299FB42C9F516E6BA7079D20C9739D73972DCFF9FF27FD8D59 -8397137DEA913CCB5A678062F02008D5780F8BE9C7928F7F6CEFD68BCEFAE707 -91903D42A7068C81CFA224FD71380A04959471DBD86E29945D101B4388D3A602 -7C6D4064720146BCB85DB7184C77F01C1D5A0AD5538FADCB48D3B3C39602EEAD -D7611D55DF777E114E5EBFBFDBBF7C77F311801F40061DC2CBDBA9F26FDD2745 -CC72A296FA4BB1E5CD41BAEDA4BCFCE3F6A21699F0C8349BCD63D9C21F268461 -D8F1264444E9F6FBF93690970E6DFD201E68D6991B21201990FCB84BDE9D7FB6 -4A4E752D97E1CFCEEC9AA82D8B6AF47569D87C2B3372575BF5E84E0ED1F76C9A -6E6F6343A50F5728796F4EB21CE80020436D604A37608A43D74C1E8989E43473 -4469EB72EDE6B70938B405847455024F33E52134B08A3194F782F5FA47ED0EC1 -BB6CD75BADEFDE8155D1D9B7FA2BBBC56190F00A6CDDAF4A4CC7EEEBC0FE24AA -7AFE725A4036C72D827D1D9FBBCF98313F2CF1159870F7A111D8C55B97DF77A1 -93D2BF77CF3FA9AD36114D778C7CCA8D1C32DFA37B298ADAA1758772B945A6EF -90C44A27B6CAC3A3B4A43885E9F6BF14BCBD877AF6B498D0BD6FC1C7AD0C5962 -0A0327A291FF7278694DEE9E55E882D08D162C2297671685F9EA8BDEBB060977 -CF23C27B1036389C992B3FECAEC85C06816E9DC27D37CEB3AF8B1A3FFCA8CE3C -9AE090A3B8F72B3BFDB2AC87509499FB0C5D07A76A213E0579B9B48269500C37 -2448CE37E0488008B687947345E1A934F79560A4BDF44C1472D18714192F7706 -F71A3A1ED9A6928E6609055B2B1A049F481B37C4442C78A6FBF91949B3E9EF3C -453B442CCA9E973265604C673752465786FDE0BAECC038104A9EF6BDF2F2F14D -79DFF55430837C0111E882DBF56674AE2C2081C1FA5558CF34C6F1B0C16795AE -541725E0D6329A606FBAF5946054FEB12CCA4575A32A49625E8886A253D7F438 -E4C855F2F04139FB6309BB7147C7ABC18154AA559ECD0A46D70B8F87F5A322E9 -AB517EDD481831CF66B43A6DEEE50E150C19F45F7500F07169D4F7922FD24284 -93AE172849E0570942758D2F5C57B44FE8A939CEFE3E7D708FB8D245FBAFFCB5 -E6B51F90101493A58B7744FF0D135534A2ABD30E22F3541C7C606EB006277A1A -046FC6569559070DFEE59180284A8717058C2A0C2302694FB35B619731A26E6B -ECA6C4A99F1DC6636C148411089A56902F9381A05B97C9C657FC03715D34BD3F -25FA9A3CA78D05C0EA643CFDAF8A4CFD4AEDCF97896F257068516DC6DB23F783 -2142E05DFD8F96ECB5BB268B6738DEF2540751595E1A5612A4688E0D0D1AF9F6 -737E036A0129F2400C05AD9F8D95B01A8743E72EAF700F4E1ACD9EDC1D5D0CC0 -733725A6C604ED2270E0D27677259609A67F5F59246F3A187A74FD2DD8E94F17 -CE32D65DE64C2BF9F5AE2230B0CD64769075B74044CD1237EDC3DBBA2A0D51E9 -5B45FFE2447C2AFCAED3647B2AB12B68ACADC5F3041A85F43BCB2E60C195ECB8 -54A5D979F7A672C978E09777EAED15A2BB20D08C593B327CE89DE8A059141790 -F71A34040F8249BD1F253568E2FE11647A66A9DDD647180BC39BADC5AF42E64F -316EBDE2B19D26E24FDE3105DAF9F4CA01765E4D7E623D77E988A301458C13E4 -D0BEA87A09B2EEE7DEC079737BCD5C0DE724472800E03BCD16D8F9A6B380C7B0 -B75563584CB753C5B2C0C72555D16E638ED3BF3883047A71D7F9B9BA46F335C7 -90B751ED53836ACBB3DB9524A5F6E26169CC86A3F805C63D027D3D161446FEBF -E83E2377F39D154881EFF19DADBDCE48D6F3100ABB9C5DC617F3BAB482E4F570 -DDBC1A9F98201E40AA149083AAD5FBE908FAAEC7281CA1AB5D1674DDB3F8E867 -F4E311DA26C71CFF71080B03844285754575C9F94132C6F43A92553E922BA580 -19E418AEE7E71432EFF5994FD43BD4FEA2B5C70480758115CCFDAE38470C8A69 -8EFDE3172C30D0E8BFAF666253ECA7A93AB5DEC246F6DB6562B0D0D9A585EF56 -342E6A2891370C21A4F428682A1C1684514266051F9875875C64745BA8DE1680 -68DEB7407C1DEA7DAF8F7F499F123E7948C1DAD3844BCC12C835A632036E94AA -0C59E2566F2F7AF26CE5C87C975C481539AF17EC77B1B799C2C1C46C966496CA -3947C252153B9303EB31C11D0F1415EB2B4DF4CC55B081E514FECD172D82C0C6 -4CBF6ED2EA9DAC8F80563743B20F5D4DEDA1B60629E885EA183DB5119A06C541 -13BF437CCD89EDEEBB8D21CFCBEAF5C3C1112B4710BE66660A7D3726B4AE5FA1 -E773A77E18D6B3A02A6065467D452D75DEA48803CDC1600C089C183E68F04513 -F35FA955DF440EDFC083ED21F4121FC2CBD01D3B6D36504142E7DBD5D870AE81 -495A7D4F4B8504F5F87CA7E246EE341CDF20DC499FE279D8EBCC218CBC0D26D0 -2836C1C124D109F2D697BB54444952E5AF538B6514F222F693DA2CE3BC67ADBB -8CF143FFEB552224BB54C70AF45663B4CAC25BD25D514D3FC4D011EF9D5AA8B1 -9B16F5ECEE40488512E15798315CC2A85D604BAF68A3A3F980DD04A17D0E02C2 -702AE3E990DA9EF2AAC4957A3B6499771E8F00E7CAD3C207FACF32B372555025 -5392DBAB9E806F516866293506C3A0667C995BFF9AD8027FCBD2560E7BBB27DD -77CFD1FCC7B7BB072234CC908D7FD87B1410008CFEB63AF0C4B69BF22B75BF71 -6C811369BC4BBF5F410D6C61A12239FD1FE25363312A1BC595028157A185E9CA -308D7752DA09F6908E1C76A1BC08D254B7D7EDC295A6FF1658985D64DE0B9DBA -BEEC85A884D80EFAE9A66B7B577AA734E7E662341D2FFFEC2851A2BCF11DC560 -74F28DA227F1F29AA27BB7088C1BDF4DB64490CE3D8D99F903AD9331161E118F -CC75D0DAEC6AB9F63934371929EA2577CC16D9A2B0D452389FACBDE05B6C08FD -70A66B7C309F4990BF21EE6EE2B3B7B9BD4EFCC8B419499D4A9C8120FCACDDD5 -1CDB568EB932C74C8AA9D52B5C7B61828D696B41432661FC659B122FF69E7110 -6ADC582B8312F1FF10596833454C0FBF05CACE8E95EF9EB53119C5DE28B449CB -971F604BD8D7232C2723A155E37DD5519C6E959D365215BAC11AD54D30E42801 -B93423C8C028EF1A9B13773C624106DD59BA15F4252846B4D677F7D71C9870B6 -6AEF7D061AF2A03ACE5A05D050DC3B7CFA03E249C473B3D754A4570DAC910326 -CF6D61B084A54ADAA03A7C6D9B4A70DD94BE6467563A7B426A625C6CD1645E15 -23A707F0E2E119C1230F3BC3109EE3344962F90E37D679394AD3BAF2D557DD49 -4DC2AB31723955E9EBBC387154AA21F407F7F8F8423D5DCA8938BB7C22A65EFC -C04D60083E7B001031B088A00093B9530A7E71BAC40A5CF652849A77F6999752 -246D794648F8D42A2BFE5F5E4297F92991CA2D157404B1D46851AB529435ED05 -781249F75606BE08CE143545CC8077B25DDD598A8DA2D679A4F4920C4345DDEC -907CDAF694F6DCC9BF3D50C70E089BFF04A77A7DCDA1D76465D6C5D152C8FE5B -6772AD632900AAA71EFFF3A4F90C9AB755B124BF079B98C0B811E2A364AE6A5C -EAF99631D79BB7E144ABA2819811014301CE1C562BF38F9E58B2A4EA8EB8F72F -4A53F5F08A7FA95BF0A988A62214EFA998AADA81E6753161E8B32B45D4209B5D -64DE964EBC65220E146FC73BD34E4AEA2D4643453CF0FAF78EECB4B0539D36AE -853BF4635A063EBD1C1C04773886CFF56A12FF6B3F0FC7C76EEA3BBDCA392F4E -E64DF93EC4AF5D2528E66ECA77E134EC3D4368E0AD8055D782D5BCE2E43F5830 -F34AD1D64B9797DF1416046326290DCEDF3EA07175381A8C1D268B5A6E7C7C86 -4AF59EE9A71E1042EE5F23D303DB1B0A940D7C40950B4F7C60A78AE637 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A -9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F -B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D -42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED -F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328 -A2C69F817061D6C60B121EEE844CA5008F23DF08D999D8C635946BF53CDDEC4E -059481E167C2253B9F7EE17916C028D30C626217C07D5C81CB3DA2E154DB5E3E -3E812A739086F78F17DA8B363CAE0CCCB67D2814FDAEBF43DF0F99EC06DD6286 -D3E9216952E5416F39B2FAB5CF61C034D2D759D4BBA9270C30B75527A790435C -4E6326684674D41BAEEBD0DC2FF367FD5E7F9B1F50668EB54DF00F6D0FD060EF -580CECEFCB7B346839975048606CD88FD88043E9E1B25BF945AFDA309B1F93A7 -59D38F69DE485852109B8C12468CCB7E8757FDF71A4A941B11F0DA5643922EF6 -826E0855F0EC6B7348949F80D7D4734B08895C8C87869F612FC30D3D28EB8D9D -1E79B7206E5C88E5A65C469831FC61994FBF7A6E6F2D3653FD6259722E05400C -BDB34DA6F7E9B79458609BCA2C8EC2C0F99BD924EE5AEAE7FE90C328D2D18430 -08E5BFE7EE756FA078667201149F362918E52A75CBDCBCF913BA20865A8FAD47 -6A208F16730FBAB5195DDED6CAC43EDA6A697D2595A5EF262BF747DCA182C6F1 -3F561ED5C6BF8978681B815B376D1EAD4D27A33A9B7BC8F3FB317A9BCD83D9A3 -53404B9D2E52F90B52BF3749E1B269FE1FAC5C449F3E60D92C64274AB011C9F0 -FC4B1A12DD044036479AD76E44AF206A632BD93666E90B95FDFDB3FDE9975C5E -5BAF9CD833D8FE18BF14B6C00927B7DF4F981F4D0982F7EB7707551D48C6D4F4 -9E9DA529FDCAB1F9D627343667C95D1F0EE6D4739A43FE779013BD61CF131046 -728073E7C51504048275BDE248EFCA8501BAFA0EFD16343AD840C11E8E93DF97 -73DBEEF3E23D6EA9F4285F4B40B76D09177873D07CB0AE21A5760049958EF076 -8B4F0BE92C0AA4B42E51B348553CA4A7D95AAB3E83D9EF3F425B7C19D62DDD24 -58AF2C157533F193EADB02D0EAF6FBC98A249AB08CB8DB2375841257ADA88D21 -3CCEC7B699B0776378CB8341BEFDE52A5873F871FCAA5401747A0B69942160FE -C17190A7CC63DD4EFDF4286CF819747445A99B2A62F6C1FB61F8A334EA2BCF28 -896C3E0EAFADE5B5E0B6438A5AEC205208BA94B5B0B1F98A0DDE6AB389A05A1D -85DDCE6D2E82CBEEBA36C21DD0B6D7AAA34C75CCC1C9C74509ECAE3DC0B993F8 -59A839F732F0E6F24BB0A3D324BF69CE4651594329FF786627C888F6329EE8D1 -CC2FEB58D7D516709901A873FA447E728A249922ED3DC0FCF0AAD744566CEDF4 -5AD20891E3771A667C625C1F5D35ACA12E607A500D2A512F9E1EFA810BB1CC8F -00DFDF692892F94C02170CD1ED7D1837038E9381E6114FE2212E6F5366042235 -281C80B962929EC9A32D127C6BF290BB2ECB5E45292BC2354057BFC547D279C7 -7A841E3437FC69664069AA9509E325AF93D148B1D025DBEFA31C6CACEEDFDBB0 -EB57451DCD25B9D37534B4526E89825B0B750462A5F3FD0943F40560508BDA21 -63207D78B199094BC784B0277EB656F40309989C96AA23368780E8B5ABCA54CE -6CCA1E86DC9A2F935BF5AE867A6CF511D0BB330406E90C1C5EB93164E709211A -C4C3BD3DF34ED4AFDA4270389C8E24D87BA370118C827AD1AA7E9D64A58813E5 -0233C0F5ED34862DD74D805558B4E8983FB43AE7B64E3F1955BE2B32C1157407 -801A0FB59E2B2D6F9F16225CB8D4E10D7B7F8C90C06A5492C052318359F7F0BC -4C715A3C21D7479D8C290532061061FC9981FC5B8A8D01E6571FA77853BADFC7 -EC9A89F16A6D75AFE20E0B31B2A699BBBB6C8FE2A3CB43B2494BC6CE39663ABD -D4789EA15FE947A5F30D933BAC442B28943BFE72C66FF26384D23306454040A4 -72817FF4087220BAE3FECBB5050E2D2C206E5AC0AD978E6B59D167F7550254F8 -15FF785D7F6EAE5177853F4E9B3FDCB2A0CDA0FA67D0A0F0AF73413B1CDBDE29 -BAF76A74508DEDC3EC6533101611B3AF3FB854021BD89D4F595817059A5CFF00 -CEB4CC210F7A920446AD9C83E5DD84041CC13AD5A0419CA99FFAE27C2FC69971 -4DBB0F1AEA6D8D88605C4BCBBFB93A4E52B7E0AAB3DC3498A86BC4604D4C3575 -899B8B48BDEF6B13E1CEC5B0A9110ED9B1E2FF42F7F17076666EABBB12110BDA -D88D8938B7F61BB974653DC31B448784EE202D733874CD81BB31C1BE5C78D906 -1408C6B030EDAE6C39E6ADDBB7846CBA642B5EA337A6DBE8E708468E1FC94C2F -D0B890092E4197C86AEEC94E188CC00EF9539548FFFCBF41C51794E79A258F10 -39348798B2FBCCF53D786D3AD5D2C6C9360B14177E8C1C9BC44CB9362C938C0F -C09F6B5E959F0A9E57336098454E62592F356B40D05FD132CECD9747DD11D9BB -5DBC68462F9701B7AD89A3A9DFEE129745CD92FC7A3CD14E1C385D3221CB23AC -A6E06A359A7E1443BE82D929FBE2331349FB97FA3DBAD83254A92E22D6C95894 -FC2CD2245F41D24A844544C49DE32A4F21C661690EB1C6A1F7024B4A427A6D6E -6612157ECBE211C3F2E4A7FE08A9D5A219FEF5C21FD5AE9FC38E6DA6C5AEFACF -A236DDC128EEAF37CFA58E9DD31968ACC4540809D083EA27CF261493DF467FDA -614870CE334A5876BC87020F8BEC20C12CD808E431E6E1383158D8B46D2511F9 -0750CE5A4A07AAE523390230FEA3511D2230993C40908B61B42C50EFF921DC42 -F22D7557BE4ACD616B196489E88707BFFD3644C2E49F015D2B8BA75A070EE256 -FF459F1B41788C61592AD09D22025C69B1231C9A97BF59C567E651AE86D80428 -43A517362D5B0279F76183E64767CA065A07C82588612CF5691340F649D3ED54 -4EA7E71CBAEADD51614F3CA74A6A761D9E1D19EF7E76D34E6E74347C7404A22C -53C887FFD6F83EC590A626BB72B538B0B8BF02839BCF3F2E926A84EE37A536EF -10C079EC0530B59355EA2AE74707F87860185E01A6A1578EAC52902703131EC8 -4115BB2A18F6C062FEA1B16A635CCE2467C34C34E197E89C45A8633FA5F7EBA5 -475857805921FF836D146335D2A0C0F665DB2B880A4E1ED79F03DBB89AF73F18 -07FE54C20106C118FBF8A410AFF0AFF397E248846580B6CC3C42A50095D221E6 -F6E2CE4E880AA773B718C89794E27E6FD1D20287707819C3668B0AE01BD7B1E4 -761554462E05D56E8A259FC97AF94A2BFACAC574EC90BC08B3EED027E8C4CA46 -FA54E53CA4794F99920F6494CF6EF4C0B6C54AE303EF4D32F27F2676C7CE6268 -51940C8FDC40BF16DD4622D803F232AF0255E72A189222F4AEA83E4597E8B9F0 -C56DB69A5A7C0CEC09BB794152054BBA9844D936C6792F9EA17319D0C69D8417 -1A8847562AEB2E433CA94A4341C8781B5A0702C469049CC94E028E881B0B5D4F -89C3925919C7577B93C25D67D8C093C7DE834A3BC0131394740996E4D6B233A7 -80DF5A380A78299E92DF0FF33E8B8C0E9E81283EFB2C284B8F18439BA4CEE60D -9BA146A69B57CF41BE979E49A2B90A878F96CF22C81CB7510D56B9AA2B6E60F2 -02EEBBC41A5A852607EB5C00BCCDD117C162A5F1D7441FE4260901D9AED49BFE -2D9F92B8A6A1E6401BA6224C67A6FA778348EED53ACF1E76E61AA6159A2E9543 -262B9EFBA99819B1DE43D3CD4D623CF8C00515292056AFEE78A2B351D7460FC8 -F8D49FFCA4E45AB4A12FA0CDAB25E084EA60B40B660B8F29B64F0B0C04F38D89 -C1AEAB5C160C90FE0FE02836143C579B76F9C03828A6417098BAF9B4C85FEAB4 -4DCE99E55643ADC2677025948FF1DAA1E5846A0875D6A463BCB4FE13A5AEE274 -1FEF59E21CB0F17DA28BDB4D2F8D8CDC46704A33E990FA9E4B50B3A58606C36F -B10763DC2E4F50981EDAC1B6DCCF1415D150AC0D97AD7C415317ECC4B6B98C98 -240F9715A25F992A1B7A4250BD36D205CFB3AD2F3F153205B5083916C5466B25 -BCA0D30D5F4E3C8B08D7B3D3597FD7E931FCA30162A86B7305AE9C6AE03B909E -AF9CE0909560D719136EAEDD8B2655644FFDE826322601E457C7A0A8F73BE730 -03506BF446383C1594DD9D294390F35957FA5FF5F60F8DD7B66399D808F23DE9 -0355AFE0A04FD60CCA0E56A3A4BFA0DFC316C8B1997682AC063DF9E6C6F66EC2 -E094F98F5756E4A25DA6695C71B07F51167CA66BC3F432D280094E1856CBE89D -B349ECE305C9EE15067D08E4A64EF4484E792A6E57EB2C859A42DEA616178A80 -132C796CA06218388BBB5EC4E262F1682C736B7BFC06096508EE75272A7B5734 -8401507757861EAE30F5B1BB4EBC4D5CFC4755041549D675ED0F08F84BE8804A -C28CAECAF527AEF5172DBAA077CC0D4ABA31A2A58940406FE0D83A0EBF0F1954 -E621D43E6C71455AA3471857C08E5BFB0270A5C991BF7A13C2815BC19FE4DE38 -3C0201C795AA113648425D04FBEF58A4FA9B39C1B4CAD85D07E5CB402A41B015 -04EA0985B6CC772E401B7DE1403FD88D4E8DD82424200DB7B136F0680289010A -379AABD0DDB60CA784849B9831500A7B56486B66DF6D18AD92A8705A7BB7A422 -6A61700058187DD41385DDA283759C8028C6E6F08D83F8CC701E58BB22D8F7CF -FF88802F9CB37A528BCC6FEB7483631402B1BDDC6C1033856935689A29649154 -2290057E12AC15AD1C1FFB6876033DCB14918F2F14508612C84854263CBB9971 -1D83CD39EEE4CBE8483F8296CE20C1960241B4DA55E0B865B822E8C325390786 -18ACA7C548ADFB111F2070A16883075BE56C6684E3809115135744F7E5651106 -2EE5E6A9DF571D01ABACB23F6FA53555F1D1CA8A8BC78D8C017ABC45D2BA37C4 -8B0DA9EBF0B505FB34678C43FC1862DE21ABD217A96E869ADC14B416A4E68006 -2D5B05B8CF9FB94BC82DE73E420DB1DF38EB58B325AE3F2181E508B7440757EF -A743E92B76EBD90E748E9CCA53D3FEA9F317574F60706E7DB8869DB5D4A10ABE -6B37AC6AF1CECCF9DD6683E0BBFC74CD76145D9CA3E18930A5E116CD8650CCB8 -CD0AE70FC9EC9BDC5952E41CD2CA7F274E03BE671C0764FA74C3462902CA726C -296F3B9C4C7A649AD23E89D1D79F4E61872BF34A5681D14F7437D876C9653F11 -5A6CFD1C92398579F5E6EFCF85346A95D1F1862C6E081059A116F2F4B0BB0414 -5522AE3AFAB5C0419A21D158853C90ACA8816A973B1D3EB8132583E70D9CFF93 -39F093298182BDC1D2F9BB3DCCC5F1A697E779762B49771E357E99E56CCFE0B8 -458D8644025AB81FCF125574187E0D975EF42DB0736EB1D9EA27ECA4FBAE87E4 -1DE9FB6E9D3F42638048737DE6C89A4E0EC1A21C51A577785CA610D9C201F205 -987594ADF811D7CF5C7B78505F296A080442134E4F60324BDDDFE5D7458942F4 -FA99DE4CC8DE3B4622C92F216ADC31816E7E1E922E4EFC6887A4BFCC28C4A790 -BBCD0BBC12B726DB85BC1455A8BEB843B32CE2A7AEC5F6B066C8D21D754F97B9 -8E9DF5F61AFB7B94C33BF8BCD218E726F7243A5E7A64390B70C95135B444FBB7 -42369397865EE5D9B2D9B575877ABAC9C6CE59EE395103E14EE1AFDD31701409 -8BA2BB985468960AAB94F462798F1B2B86D2055BB47C84286345E51C929CE8D6 -58A1A083E7A23A63C5795F3C4563A5D7D7A4192289D43D518F52A23784BA0DB5 -F97DC933EB78FDAECF9BC9F049AF415F9EFFB0AFD2DE84BA8CD4F63CA5F6C488 -73CC3625D497200D7D26EAD733DD62E5638D363A9E34EB8463D4213E746882F9 -13E8948B4F1935597DF34BDF3B20FF3660182D8695644138C3AE7E3E99E79755 -CCEEF6F8395536C29E675D3BBBD24C1678FFE64E356A86C142B33E3F921D1E62 -41F8C698C13A94209D1876E090C23EB9DDB670F2BED3D4F7BD5CFB8B40D8193D -22B051F65EED5BD47E1D788B00E9F8CD717291F2936F190CDF798D47A4DECB4C -7CAA1F85374316B1425B76C0723EF4B73D1BEAE5B7D62D7779BF6D2EED8B5DEB -7DCD1015F8A75D6EA8E0DE412328D443CBC9DEA25C8343DED3B3C7201ACF32DF -5E7CA143D3EDE9315B199364EBB83F79C156B44B4AD267EF71E39A570B951453 -36F971775F67DA78449E480D2CCAE56F1CF9BB502217060003A54970F60571FF -8C4211FB591AD10D37A88E368D70F46F18653A5DE3794834BD80F96678BE1B87 -F587780357A378F9B9BDFB13915F38184C51E127B26D7587005190EF2CA8106C -7062334641CF3AF71F084D7383FC5588CF0AADFC995FA89899497611D1A06BCA -69917F530FFADC98F672810CB8524E7B8B9A81D6E1E636018ED9C6A511C81C18 -94AA72CE1C11DB0B8154C12B31DCF28B2F7EC49949405BE689F0C54ACEDED54F -F7C13099CB92B197DB63C1B539BE4206DCB1CE8E1ED725C87CEC4A50AE3C85CB -6107107DC5CA03AD63126A049FAC98FCF5EB23E744410065B519E1354FB8E150 -B3EEE5A201E465CA3C271CC74885768446EC8A8F8C0DA1A389853AA8B82559D2 -A70F4B4F04C80F0879440F70701247B9AF44AF66A9BC378373E7159E46D5C4D9 -FBAD7413E1359D52CA29A8AC6E29727CD5A65DCDF073CB8CD7709D5808B13E37 -3E5CDD794F5E780E169FEDBD1918C71112FCC4708EA9F024A7592E4B24EB2892 -053FB730845CEEA345E5CD538787E5AEF5014E5D603ACABBC5808FA630E9CFE0 -E27DF84092AA6C913F01D43878057A46CBFCFEDC4E403F2A1EB05A0FE0E138CE -87FE0401623EAE6135D6E75F695BC8880CA14E83AD535A6A91FA5B3E96A0DA60 -771839FFFD8E533961E9DE55E203468033F54CFAFD876A7BE8901AA5302FE8ED -20F7290B4FC341FEA326530ABD626919ECB6DF8995A534631AE68EBB84866C29 -E7BAFF0D8DFABFA4138F10EF9142C2CB6ED163C0DF31594D0331B254F63739C4 -9C86287001B2E2DB0C479720D629AA8DA67752ACADF48F7846FBBAB7126FF37B -5FA478F0CA4329CB167693CD6E01BCC5F45B14B4D8D939E05493A313D91FE691 -620B176CF3D98C112B74E05AB5FCA5E4927DE8363FBAA3439935CBDC02DFDFA3 -B405E769CCCCADA2156894A9AC8D9E5064EDA098F9216A36886421BDAC6AAE7E -9A41A1E1F8D06EAF5B2634C421F83F3B393CE9101AAC1CEACDF1A8E062BBEB0A -35BBD77311DB45D2DFE80C5FC40BA7F164DA6FDCA80C42BD47EDFD127BE6C854 -F8B7C6183C92635179444246239471F53A07F9BA9624159E4E5B0E62D3B6A325 -51CB065E3A70264EB1643C682B0BC8CDDAFD999C4C5C49D0C082C7508B10CFDF -0B97FF78F3A7F2FBEDF798FBDF73FC049A4102E0986BD80E0A8173D78F4FF64D -59F821EE9D055103B29C8EF5ABDAF4B7703C93F2F51F3501723EC21A18256319 -34CD3E50796351385A0F9E5D2ECAA2035BD818DE969E91BC84F9CF728D7089F5 -5EF6D436FF1B82C1EAEE12918614FC870FA778A6997824093E0C2F22540ECCE2 -AB9670D0300ECDC0BA5773F3EC8B5A5B0A1A7589B582286769C2E1B84CF79561 -0ADDE0B1550181522EA254D719724DFB464D9CBBB0265AC65554A708C1B77C20 -532410B1398105EF48610E51F7674E6FB0A36EC7F578636E4E4C1463FC099CB5 -BE569EDE7A60C017E95531B220E3CA0E534DBFD549A187255A77A52C6C77294D -F6DB3CE2AFFA9512294AB88D753E3924A5991BA8B458A96B4FF576C8F00E06C3 -6936DF540A4981ED013EEC9B56C47B25641D639CFB2B285C05E2441259546892 -02BB04B24AF9AAE71BA71D4A9BD6C8B8FFAD0BD41A6D4CF9CC6C20CF5B8F7358 -A87C170FB6DAB203C59A96D8B68690C92022F39A70F883AAFCB078CEC81D2A5D -BD5C3A391ECAA6228C43F2E406B0579DE6701CD9AAE58393F5E7F9E56BF195E3 -1F76B78F4710167E3D9C19D7117B2E0203BE1763295063C3FAFC0F7163BBCB48 -F6A27E229696B92D877C5626DE87FC163E3B0F590B0E3EA053463F339C814882 -7D0CDEB24F14E0C1506CCAAA1CE4B14EC2DFDC4A4D87F5B42CDD079BCCBDABBE -21CCC132F23D67DAA62DB74529B4FDE5EB634F0E3FD77408BADDE551AEDE6937 -0670EC7E277FE19BCB4B36B4831DDAC191A308CCF7086C04EBC3C8EE6BD1687E -9E678D5490DAD1A746319CC33707A386316C5152C4A7A0164CD463670A534D9D -0997BB2339DC30D328753058602C3A0FA9BF508C0D955C8BF29D2331B272FB07 -5E365F2A04A74594FEEA5CC21EFAB0C5EA5D602DFCF72E35ADB36F9F5B75DC79 -97774D3D1FBC40C9A0E2DA75E81436F267D75DCD4C4FB814E380F118C4F5F5F4 -15AA464E902740759E922DB75AAACEB6BD0499FDE4DA1453B1ED979AF9F18F38 -A2BB21E4140CFAA1DA2CEAF997F4086F34BC7BB2DF69FB857E21576B5ED55511 -3E1113F174994B4BA18500443766AA8285482A391121FD99CB940C23625911E3 -6553A363FC97C4FE91285BE00A8043517AABAB1B276B0050CED46B53A9EED1E2 -078749595463C192B6442DD82E4FF60A8038F9279B504FE6415AE3E6D380E612 -BB95CB93CB48E054032EFFD4DE2F3E0B2432A6EE6A9245243BD61AF4C9723F14 -26ED79C4B2B0A8AD2DB51D0A61768B3324A2D896CC47AD1F49B3520E312ACAD6 -F485C6FC31263ECA0ED87F39D13D32F5ACB9B6406CC928BDE316908106D348C2 -DCADF8C50737F4B745BAB96E3C668B6F5CA01274F4A6D16329EFA2E2A4C4D08C -5DBE3020DE859BFF20970F5F5CD0AC8D7F546AC164B2A422512EF01273DE9283 -AE697E98738A08612E06CB85F8DE09049DB661B000380A3EB776BBA8D4058892 -EC83E019A74E3BC8793C7AC7F370ECA6FFC8EC6355CF4D8BF19699E2CC2B7670 -DCD34D5916006DB7DBDE93D5AABE5BEBF20C2B1216FDAA48848C4A704D478771 -415B1A6BB2737CCFE9CF0E8FAB134A6DB2540DAE86EA3150E051172B87C62EA3 -4A89FC2916F0AB0941D9590BB8DCB356E1F2AF650D2EDFABFA0FB359B6C4560F -9F1D3E467685E3CDECC6A75272F723509B0410D5331F76DA8315B3F9AD8CE15D -88A45A535BD433E00515568A1ED887AE4ECAD35D66FFBF8508F253C1CC437BB0 -F0D7F17FC58D13BF7978387C65261BE0CBE9EBC9CA9F241CFF2C03A37CA9DED8 -27E4B64508FEFAFBF1F072D9F7C4C552E4431A4964B1872D3A7DF842B1890119 -03C0467D143A069A0A83FB619329FB8AB390CEF29E76C3B6E488C9C786B0AF3E -CB0D8EABADFD0C59AB5A7BB8E19EABC8C4DB1138E37A902378B6571CCA48171A -C4C7D04527B76A317174E0DF7DC50CA7DC5F4BA0EBBE98321FA5A7BC4E9167D2 -E2FA85F9AE8502A760B62838BBD6930596C59BCAA879ADE70BE761384D6AE09A -9B0CFF658BDA93584A31DD715DD1718A67F2D7F3FBBC75135B90C90FA4BC8EEE -F565EB19A1E92C67085D57124A85A6F6885518FDC363072E82A7043C444E2C8C -144EA64398D5AD4039D1F228469D5D0EC725449D2D12D5DB3C8FB9E38399C7A9 -4A80CEC20EE84E3FCA86A4008073C2D6EFF3D7ACDE4797C6146B6ABAD6CCBB09 -99EFA2EC0C742F7120F05187E6005EE9203FBA5CC4BE3AA0E7CC707EBF5BFABA -5DB5E786FC88CA67E06F6D504A7CCA4ACC7002F48A0F0C48903EC136850F0495 -4D042D2E55077888D1531C52AE927AF7011D311CBA1BE836DD755476578966A9 -D3A57A609487750C136DF0B646D8090BDF84474B5B545A8C7A6DF1F3932D8433 -D31BE5C587F84A7B03363A3AA801574F210D44C7EBC04880F67BF44A8173890A -4422CDC3F3F2C15869CCCBFFE19D912A026FA8992AF3A9BC8284CEF8D1D5236C -C6038982C697C9770CEBB680C66B60D3E9A34D140B5C6B840CFB5C99161E7D3C -7B9CF4A7D1A4C50E247E1B8A383A4F2E8A4F62DCBAFCFBFF0E8EFC9C0F35153C -332E1214E9FBE8BB86AA65F1D9DA16B616B8C781E62C2FC61DD09ED83C5F3664 -28C9DB214AF5DA7A5642C0EC18BFBD099D46AA66BD4D36180A9A27BA8007ACB6 -2FFF27E8561AE693635014DE406C91C0F62B5D9CDACC4AD391889315EB536B90 -80F1CD15954C19416F20F907204E7D9D77346E9BE3B621FD00034F57664FC8C7 -1B164486CFFAD0B0475BDFCBE08D5FC6E602EA4BBAE13B0739E5E12CE867B110 -84248EEE5A98819C2213D557B61F8673F75BDB8B30EF39578F46895AEDCBF4C7 -FA865C930C810217322C383CFDF7C5DC75539543310BB2B2412015689CB6B185 -C2EE7990D16322C569FFD5A984B62C9D70789CDD0EAB73B2C1B9FC4834794457 -B27E1967217CFF0651D927E80A97F63A264325F3122B609A5DA01C1370568995 -8BFBA22CA4E98C0F52F6539297DEDE027B43F7C497A266EEC2BCC41580EC4181 -C23CD495527AEA370920A6C7F25739B934E2A9C369AF17C8BA1081AE371ACC64 -93130A3429A3E7488FC6DCA1824F9E38E6683702F7BE40D8B94A8B26967A709A -3F072207F8F5E5D3DD1A33F48FF86AF9D7A1811CDC2B514D310929D059B78720 -83AF376F2D28306A26BA16DD0D2D03E11219A453A299EB7BC67008D3437378F0 -CE28C0A7F76AA4269201ECCF9A41D62D826F8AFF629C83F8286138609E31B6EA -296C8FFA32617DA4327D29B6BDB26AE44D3C2A2682EECCB1A3D9BB58024CECA3 -66135BEB39124B865DED7365A4203F98FB75A3062D538D0901B3325ABF1A2AC5 -348262D968134AC8A65139CD3F60512E9AB6EE562BC6150A2C82ACE44C43B6A1 -9B1908FFB320BF7E6E2692C3E9591E302CA42E8C7D559AF6D46C15DF3021ECB0 -ADB9D8772AB897B00C603EDB98A1AFD99F224262410CB7AAB3F80F1A07EC99EB -398F16E0FEA1932A344D7A6D92DBC26CD262626ACE8D617AB8FD883F2000FB5E -62AAE6E450A7FFF2ECE3069FB0F58696B762F35E3F551E4E8BF2E0BCA256EAB0 -E1098DFC31D2EDF4CE4D7BD6A478A8CC74A71C4D2B54BB66E534731447375BC9 -B8077C2166A8C31E14A73EBAA23325BFE1ACC9ADF4C6B9D5339DD8FFBE839709 -0A27E30840EF99E72E889F61B1DAC331C871CB2F14A297E14C77723E9192271D -8082ADF61193D6A42FECE24A285BE83437A1C3897C2BFDD0DEE8CF7B606F32EE -BD002CA9D590C5D12B49D05A26018C453400018E08FE2E3B4450B78CDD613F69 -60BCA4635E34C5A4E3C02930E37CC8A6E778082B14BB5C522002CC74FD9B21C7 -62A519F2F9D98CA11563D4817191A74CAA80897D68ECA8E373E820175F38F268 -C48B91276D0F41022E4337F8229B060858AD44B163F9E56ACD5539B2A9934798 -27ED0063058416854C4A288424DEDAAEC8BBBCEE76DE7B443D4E2D6F371CF670 -96655CE9B18EC8CB5024D84825FB6F2F8C831855BEDB0B2650E13F947921A91D -E728C3DB8DC0CE25A35FF4DF2400ADE317AF7CAD468C3CE94F647124747121F3 -9629DC9EC2B8BEC5E29C0161F4BD6567FA681DC4610F878EC3DD1C8047758127 -5837BA93CFCDE473F470ABAD9E5396A8A97D78F5A3EE519A51FB172A72EFB614 -77F51F1F55BACD353FA7C830D9F7EF9974BB27CE478D68E2C11310A8A83BC7D8 -028C165314AF960F45CB8B8D1610D4014F9B6DE03C8CE6D0BCCA6373A7535519 -D52B7A8447337A4199AD5338F1B19257A2C8948767EAEC66B1DC839D679DBAA3 -025D9A12304F0AF9A621A03752DA6FCF6FF8F103B3F8AAA319C467D9B0BDDE23 -90FBCB5A9F0E53DF354D181A4B410153CC5FAC52282851EC97EC6877674E9411 -7907DB40999F33CEABB3F9D73A8FF97C836640644904A60216A09D3FDCAEDBDE -FAF13E7885ECADF69B3B3A8C7C48BA5EE9DB4BD6641A254B1EA03EDA77185954 -DFCE6D7663227E2A062414CF06B7C5B4B1CF54A7B2866EDDD893D279DC2E2DAF -FBED736E3A79A72E602E4887CB0D67FBD1D2996EADB75C48F9835776AE604FBD -1BB7120E428867967A1FBC57994DA71C8E8D3026A7F2599C072DFEC0AD08783F -946C382B6C134343D4BFB86D23AE5025EA4B36045B8CD72F0C5C60F404CC9F69 -BD8431150A6E598118A1555D87222563AF1BF8586A99DC57D57BCC9977663927 -0BE9BB80703E1DCA16EB9D3F4875DF55B6E1444F71583259E1AF45621DB86300 -ECBA0B07FA9F73FC17799EF8AE95783C168E4ABA576D48C8005CB8F9AA012321 -3D3710987E0F63A71E5FFA0E19365050160D26D2BC4BF0DFBCEF5CC56FB8867A -CFEA19E4F0C335D9DF403E52148AD098ACA0DDD9C02546B36F06F6D3F640E40E -0742315C2D9822072E7A6F320AD549D6333DC707E7EE1EF45C34C422FCF071A3 -5C4AE5D9FCD4EC778CFDA048745B741BC17422367EFEE454450815842FD08943 -EE13C6C38B11F8895139D26E7C559C68E8C8DD827F759564961A9157B4B98517 -B93A55BF2744E3E92CB12E6E971C924EF183AF4A683D345F4B20DC378719E8AA -3E05DBADA8FBC490C1963146F8C057C64FC894B7A14606E1DD0A308B13D8EE86 -4C6C75FF68023995D33E113A5019B6D481EA33600429453F47815F417EAFCACF -6224BE0B3012EFE7EA729E7A4311C49A0F876B739F35B8AA9A8D6C69A4AE35AE -03BA6A731F7DC08BAFBD7C4114FFE951593B4D3BEAAE057E450F43E143B82555 -574B05AF742DE8D42C9A92D32EE480CD06671C642554B440768B071E7495C8B0 -2E8B1CA6F1FAA2FF9EEA25065E1D8FC32446CE916DD1F4175AF24ED37D24BCB6 -B55F5C81321A82A11042D1C01A58FAB6E649B2FDA27E258A235D6847B01B98D0 -CC9B15A30C35874E2B5A0976B232A3F549AEDFD7B1A4E11F1A21EDCD65214BED -38C7CEFAEB6C9D36517908F5DE580781FF13C11519244CED34DBAC55F7B2349D -6ED7FC4822CDA966ACFA78AB532E76F8F8AA50C2AE5C33B685AA33CBC5605222 -7F1B46E8E1281F39821291401DB8E68B25346BA84696AED6C6800A7D48B310CA -743948B4EC7F6C21E7E0932220D3B3861F1DDE667359B510AE27578E4EAB1884 -84B21E420ACBF0717D031FE5D8CBF9AC103D5616A29B46469A5182167AF69713 -D4DE5A1E6B269779FA834A39CDA83A1AF169A9481CE31B941F40D2AF7128D9EC -0AF513405D1448E329C041996901161ED6D4F7B8E6FD2044B7B355ADAF5520ED -48C4FAD1394E6D03669D1BBEC48808B89B465149FF642E76C1605A39AEFDA61E -0399871189B0612305357495DD4D72F9683A41E334FE8213D40BFD8630B4C71C -A1601AC3AE2533B31D39BA2E70B585DB806E82D8205173100C468F5C2302637B -CF65E7DC255DD861D3633CE2541AFBBE0F6D88735EF80F48D95E9914A797B4FC -3A78488EB034B7EBD7AC0EC3B1CF4BFEF57DD9E3CFF172FF38D9C9690CD75E16 -CFAEA6105902810790E602842BD16436B158CC600D7C49942F498A364FF47FFB -A6678DCDAAE1EC32FC04289F070A93C192F172190DFCE5BCBFC13CFF1BD72289 -8DDC2CABECFDB9F7DF9FED80031C7805F52C3D56080692B2DFE103084D9CF109 -F41E3B1996BBB4934AFBF6199F6495F5E35104DAF1873BD33340DB4E110BE18F -C67EBC1B79A420360ACD2554C5C29D8357CE6E681D767D0BAD46BC022F257C90 -5801F7A52E3C450D164E7C303E6EFB6F899F115DC1BD20652505F6F733183F41 -585524AD75F9A90DDBD46C5FEEB77BAD89877C663EF5C8D3D9050BA851F2E9E2 -55C8CEE530CB81AA6E303CE0DFE240334570FBD39A50714EF05E1844FD338648 -F34CBE3B92CD718270610603FD3AD63A5030CF48C2E3AA11E054E105EE054F12 -2329B7966CDCC12D160739EF5F94FF7069D508AC3801433EEDB02DB57A9BD9E8 -5191875BB9EF249ACB52AA1D8EC2D4BD27998BA65847A929F9C4C03775982D15 -A5F3BAF94F225C0EBF4524377307383331C668A82D552949B61A3A3B3EDCA39F -5AF0DE18F09CA7D5560F1337B7E5090417C7CAC2FE4459A417B8D4789E721B8A -2185C1F6697E9FD0B640BC0B04821C93E26D2C01EAC11C81CF376F508CC4C9C1 -F0E81D216D959A130C5819D99A50DD9CDEA60AB95B7024E2B5A4A51EA90924E8 -5E825ADB2F302A04B2BA3734622DBC9A6024226C3E17CCF4B89359D08DA35C7D -EB8945A40A1818A9B3D3C8456A9837665CE0477B9541BC11C05B6AC8F430D3F9 -1D106FE932BD93EC002D46AFA13F411C5FA6ADF3A44C6580510DEF798D119E91 -18794470FA5A6694F68282BAD136F0705E599E2BBBC79350902B596DC15B06A4 -3F32DA3A415B67A5BFFEBE01CAE0C895E7C87CCE12B5BD4442300527FCDBE763 -5BBA21CE602E086A475C1A54A6CE2ECDF1A5C6F9099252E24F947ACBB9A2CF4C -FD92F3CA959748844585C354130E592211D39CFC0C736F273AEE4BCB425C191D -85CBD4ED9A11E841BDDBDEB1DAFBB07AFB459C3C7C1EB9985EA4886170A8E345 -2ED764D40195F79A38D0BD3B10806AF6ED520FE0E728A2DEBF951EB1D2094FC2 -79E2E4443A5A496779580234923487723A760F4B7B93BF088B6838F9ABD5E907 -D717EE24D3DC0B927D311DF68386769012FAB21D94F564AD4714E5F1778D568E -EF783C9133B03F3DAE41404CC96FDC88816D8D7E40EEF397FE47C697637EA250 -2B735D200B801E14FB8173EAD8518BFBD0C353F8799147DB8630BB04CA5F2583 -B4A76420CFBBDBED64B1624486FB5A0514E651F7AF489790EE4D95B8D683863C -9A36DC8C3DE90C5E90CD82093E377D619CB06974852736555CC55A3BD95B534C -4F0481B338EFFB47CFB9F16617728E11EC5B3583EE3856344E092289D8D89A4F -951DB5C51B49DEBD07912D6530DDD4AF310464CE75FF6E315A06830C62D45688 -488F114BD47B9C7A167729AA3DE3C7E8B111E420C7BA4BBC343D9B64D50DF5C4 -1C2FF51695F1E6511803D36789F3ECF99120B9CC7503CB7013271ABD88C660B8 -5120063D9AD988729736C152BDC6A29F2D59BE887EC71912A9774C1A7BF2B40B -BFA63CECEE88EE5797276D89CE7988180861A50B1D3E62DABD3686E0B94A20E4 -55B88889FA2784B4D2E14D7FEF07026E323B1B0582E485839662879D193540BB -BCE7AE45D77256CEFCBFCE658676209DDAFE6874CF079B603DEFB729F1842E81 -4E169DD973E1E1904EC57A4342A7C16812B75FC4F753A8003BFE25368AF5E02C -76E5790C61F4DD74A432C71DB22B86AE3241358DE92DAFDA95F5BB2B4F7352DF -D47A7AF1DBF95E29F30AF79E6569B9702600C804E92D67FFFC1A74DBD01A2773 -F4C10427C32D0BD873ECEB3128B5469943740B7000694D1A1A89B9B5F3D787C0 -D559081D2CF9A9E254C0AAF7AD8E5ABCAD70B79C81624FF1BFE218883C4925 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSS10 -%!PS-AdobeFont-1.1: CMSS10 1.0 -%%CreationDate: 1991 Aug 20 17:33:34 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMSS10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-61 -250 999 759}readonly def -/UniqueID 5000803 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9 -D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858 -D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723 -3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6 -0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348 -44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8 -46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13 -6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5 -6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3 -16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4 -1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED -286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872 -A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477 -713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C -3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE -3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5 -034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185 -9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A -12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA -901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68 -64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5 -A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0 -1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9 -342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007 -6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F -107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5 -C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102 -65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D -F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B -A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E -8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6 -44748E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -/UniqueID 5000768 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B -61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 -92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C -EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F -43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 -FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429 -DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD -3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A -7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7 -CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A -FDEADECE61CE2731FDDF7FCF2AEF7CC2B1EE7095F483C2597F66694FBD2AD81B -F68FF2E378BD8357CD1B60A1CEDA2DE760A98868ACB45CCC8CC2370FE267830F -B795058E0FB0EB3C625259C36BF9AD2EFB5C64A45797E18797CE1A2C0304CDE9 -9D88E11E878A721610EC57958C7E80A5E78226017A263288DEF5D335199E8F28 -787DF769550AD33E15342FC5E4751F8865AA66E78B8CD2388EC3618A619AD302 -5760E9F293085CB54BBBDD47C5ADC3F479E39A795541ED8CC921D1B41C9FB1CE -57B1340BB4BFAD1329EE4EF2DE599944404B7DF94C759037CBE96073FD77DAC9 -B140B4580EF178A84D0746276D6E667E26671117EE04102304F2F599A423A687 -53CD9E2B061D02D54EF56439E33AD985A84C1CA8F6666CF7746E0DB19A79F249 -AE1F7714AE5E1D6723C5D3AF86E6ADC9F2BEA6A62C3C03A67414A99FCCCFEB42 -4EE4BE9FC8A530F06879F46889624F7D704EFCB951C1DA1613D55D61D33F6213 -F12610A6F071E79918AC289EA5A3AA9049229902B646FE14E8D19DBE673E1D7C -76577E34ABE80ECF2F5D6E13CE0926F0C9B11F5E5D17EC5986042BA2AB6B1EE9 -B54CF450D616DA46373918953438A7BF83A5707CCCF26590A7EAD89B5D357947 -0B6F8BABCE6FC66BF2AF462C2CB99B5A68F1A2C237143FF92C2646B149EFE040 -41F97A52C48474684B9EDD0F3D0F3838AFFB70E7F7FF8CB8BDA06483F8DD04F8 -914B752F4C116BF243D31CBF9ACF04DA93BDE4B87D181C42111A2C90181E0A11 -9E87434F46801D6CFEB350467A78A899A70DC8E12CB2FCB376647F5A155A83C3 -77B72A0E058550E0F60C273A6320B331A6EA21B51F5B00B6A5271C331235A8D6 -FB9BAF99E4565B1461937DFF6818CCB8A8483BB54E58726C1DE836B9C4706491 -422F243DAFE6BE7369B09D87BC5CE3BC8085344D4C845A45AA9D915695F9BB8D -9B06CA358A3A330694E6D269BE179704DCEDE985C2D886B7B063AA7F521FC8B9 -E79876B9FC0EB9BA8441E3317316AFA050E3668411CE8134224945A30F2EA5B9 -A5DD581A67B9ED8497F91589BC155957FAB5540E8BBBDADEBCCD2F603DF46B05 -2BCAB7A7EF420C9B3F65FFEE9BB27A58C0EE923DFEC5353B929C620B3DBE5907 -1A9A5C6FF4159148CCD2E6CFCC6E3C177C7B9B13E9D3BBEFE3BBE38FC35F2ABE -5EBDA74E0C1A3C6088F9D4DEF480CF4159D21CC2053245EA9EC1BFF1FE50185E -D3E3B571B0993AE6EF09489BAEAA2C651E2B36599BD91EC9CF3807A632FD8242 -987A4BD933A232B6B87B4DE659011DF6A9662F41F92406BA64B662E39B31F32A -26E6383E35E94459E74818A1079EDD7E7CD7DAB678673AD6323A17E88BEB2179 -001A3E25129CE05627CF59CE93A0B573BD76012EC927D1C1192A4AFD93425E59 -AAD0956F5C7D86B041209C43F812FCAF2313A96D43C46130D2A97EF3BFD5718E -C9B828682BD0FC3A8C1DD860018349469AE8C381986C7320BD5A43E9D8B6BBB1 -59101E0972207B00682D78C7D0D38BBD88AF888A1D40FDCA4A69FC37A674FADC -B42C18CCECAD4B7903E604DCA338B1D285C1FE487F5908E91D24581DD7E2E06B -F0FC950B0BF19082B1089C7B425FF511C296C50446E70F27D06E1507CAF0D0ED -7DD1174A7C4B7A3C7AFD5F839A29623D84E230EEEEB8447E36922B89806FF2C8 -AF69B87071E0D539B09480BC55785C8A9D80A46BA1248A18471B33D92A13595F -0EDE6193F5EBF1709D42A63E773ED530EB0B04B8D6A1831CF959644F27D6448E -67AA52FE371F4FBA8269324A7E8B0E41A605484F6865BE95E17DC2C4BC1FF8C6 -6CD446D36AE4AEE4FA368AC1C040829CB2B306993080C60257834B13D47DA51C -C091CBFB4CE934C64703826C4EBE1A51B41DA786A6A52A3247AAB64EF62554EA -E506E462CFB81E37D2BC162273E26308C11057A6F4D3CA089F1D7A96B27EEA60 -CE265B2E1C4ADEEF44AEFFD1D93C4FA05ED77931DA0505228B03B4D63FDC6266 -B0A1BADE5C91E895BCADF2091E7BE64276CF0B3CD653149127C48600BF42FCF1 -49812AE035389822288DD5F4196447D266E737DE7D84AA2A1EB338AD0FA8D70A -EE35815425EE181370751E1320C7DEE6A4FB3C3118A7F1E5CF0E5D3BE9F34A5C -E22C4C864AD700BD51025FA86A225F58EB79F4F3A875167E88623E8D8B297333 -7282BFACDC57E51AAC431B40F30B5348393D8705829264BE437E004CEA8DAC95 -C23756E2165F046D62361632E44C10C54F7A0F569A87E2C814B0CF44E1E30032 -A91F58BF9551E9B9EFA5D7E91B0D5D19111DB04DBCF488D3E41E799C3141C641 -7ADA4AED435F4C8F7E3FE50C83E1F8AEA74720D1742D5D51D400490BBBB383A9 -B997B337E2B3E21DFE4DF383F8EE183A2CF426C8AAB91A083C7B567CB1729DE3 -0CF5CEF028388B1D8C5D6CF58752D6261F07DBE1A45526811F4E16EF0936AE24 -EB4FE66A6F008F525660CCD5B8C1DFF81D3C3B90569E1D02455D0A5B69C676AE -1100E168882E1B027C80E13D91B04945E24E9CD66BB2D8A472DB7656217C7740 -478645255E610ED1660A009AC5A6A59F7276598F53DB7ECA14D98FD8FE49243E -987625F370D1B018D89396152EBAA897EA46DA433274E28DF1F705BFD767D093 -F92B3F50F54F0619F3847C60DBFF60107C1B4FA5FA6AEEE5D53163F185EFE0F2 -11D22F0C863BD4D11A04445F241CFCA40B5250C646ACD15126FF98F6A2CDE37E -D00377785349BE7C346F790A3B5B2186A853B8CDD82819231FA5B5FDF25915B9 -6A206F5CC7C194AC07D09DDC0CD806A662AE92945FDAA10AFC8039A221B96214 -214B719784E9A12C9FD5AB9F7329249FEDB3E9D40D3A88330FC39E426795AC2F -4FD864AFAB653FC435957BDFD52D34C3F3A4522C716E55E84337B5C45E6BBBA5 -3808AEB1E1B60900D7A8C5F67E3FEBEB649BC52A0676C541DED315AFE779682C -30EC72067C498E1664F4F223BC883D88620D7B542DAEB0CA003B3B171ED2EC0C -B9E7AA59C09748AE95451E181185180E137013F6BB5D8F3592AF6A397DD70625 -5E4208BE09C2935737333652CE9E4D5ED5EAE7828E66FF712BDDB256E1E8BC81 -7B8714D29A3391CD25BF8A454864E7D6B532A9CC83018848408174703B86D68A -1A5CC929AB9EDFC761E19294E9201AC307E5A836482047D0CBB0088C22DEC3E7 -A543B962151B9BAEDA8415DD0B033756CC0F098ED8043D9DC258300DB9A634F7 -C28CE3903FC903D398EC69BBDCAA656F53280FA2C4A4732D5485F6E63059D97E -25C1BB3BC0FF5C49F10D137D7C19C832325A60E6A15A33F2EC4134905059DF64 -4454285D9D7DA92DC963CE154116CF05BC3A35E6673B29FBCE645743245759A1 -F4C131ED6766428B7AA5E7B6FA0FBA7418B620EFA4B837D6187507E00D14C8C4 -ABE61125830B95F8A4EA8E636EABB5B7278A960A761C63DF55F27E310869507B -1E7963245669FC6A6F7CC0B47E9092614EB3124F590941F75F1E132345439BB8 -CDF5DCE540ABD05EDC63F5B6148EB75EADC57A7DB8DC6AD2101C616480A43600 -E16B14CE6DD00F559641BE7C03E6ADCAF332BFAB42426A32A5EA49C08095EA9D -D8CFEF2CFFC99C6AC54B2BC381E00AFE9B3D29F16DC87C475C11F1E5CF52C004 -09FF20C7E7D90C5078D61DE6F307D4EC307CF2E593FD96B8712FD0A0F737A8E0 -AEF09E129E7A5C2F577B3F1DF538D90CBACF1B30DCBEFD86A9895D44FFFAE70D -9660A3F8A820A466CD431C9C2C06FA00CE7DAE4419176E35616ECA9AD2239A72 -EDB1EA56B4CAB9E9EFF8C3E22729261965E0C060D9B15A8A6F761CBA35887E01 -428750FEE2A583E314DD21F65B8D032F3F7F0C6A7CAE0AEE1169BBC762A0D1EB -C4E42C18B827A986C3AEC866699699A8318E88386646156CC3CE3F3A47230269 -64EAF40964EC1A52B342C551EE1518EA4C6551C3E9FFDB4F9BC87743D3A18D71 -F60486A40A75597BA69674C7E9B71F1B3E069062F8A603DAA823DDF0F26C03F2 -E2BA5F18273C7CC45CCC040C1E0A01CBC5E3C964988FAB19D1543A2C69F9A241 -36313020AA851C4EB9FFBB39CA7F46461AE6CE7FB5B5F2BCED463E1DCEA983AE -4650CA2D8D3032046DC15E7AE5DA2B6B7562BE28F6B36FF60720173B6096F93A -36994AECF7B15DF9E1E1A7FA36E2515393B4E0A1A5DB4D7414EFAFBF04A090C9 -9392F0A2634955A3E1CA3D8B86447E48879E95DB4F4092EFB954FF00DAD34134 -4506914914E3FB81CF7455F3028514E95216CDEECF6EC5917E1277A6A3B70B34 -E5EB97B91922020E06CAA774324AE2E29A516F28FD6E718502F8EB18C20A7627 -FA3BC8E4572972D906A46CBCF77A87912D5E523C9C205BE2A2593B0114AEFFD1 -4154E62A82CB766EAF4564FC746DE08A9D89FFD2E9F0A79633555D0C8634FDB7 -3E8F0D78B440DFC00C5B02E4E22731E82FF4110F4B1C697D9285C881E8410639 -C6BB1173197B2AB21C27FD4381BD540C35F56F44428D756B2CAE216257ADF5AC -294B1FFFE9F0DAEA3FDEAE3B206556EF6044879DEE2E0359B7F03214AB14DF5D -DC4B0586328D5EA1248876600D9227D627B4B54DE7C4324F438BEB9C3B176A15 -623C28BF6ED326030826EC104DD31980A04FFB0B5420632DB31B3E96CFDA14F6 -F5D59582C1DA4E9B9C2F054C1468E4166F88FEF3C197FA50222BC3EE4629B9F7 -00BC3DF48D0D490F17185A03C2A5B36BCB4CD8CD53B24CAEB00C5C3F82974E84 -228A32F6FC48B21E5AD6778D856E914F7D133BB316969E5D42D146CAE8F76733 -DD146D73C7B983EF91329D39D83B21BF916D27CCB0194ABE686419F565450CF9 -83B3B1205B9F393C0D832783F5C3BF538B365B232163CFDA95C43351CC77CC1E -3834CE8DC52A6D4AE99208EA5F0418E0B2AD004352F4EC28735EE7C5895CAC30 -CF5851B221E40D124D1F7B4326454390C3D35DB4FE98BDEE3E35F1888B795CD2 -47543AB21EE6B1B14A98CBDE3AE262068132C55E8DE92CCFF3B230BE04E29516 -8B072B52001F766E26775BC17F3DE4FBED085570F010C67BD861E39261FA16AD -537DD595AEF258E579784CCCDD714018EF547FA81980888CA777FE6DD3F1ED23 -1C4AF7E15CC50E6FB2C4C9689E0FCD12A79A9E35EC43B53400A8EBEC365D3D80 -766E50660757A179708C6D33D83A4C6B964F7C89426FC6B8E56B62C18D5D0D38 -439DD18A60ACFF9FF4AC30AD8672537997B5E0DA80D6AFEC5FF084057BC8146B -E3B8FB430F0F4369FA1CED42DB88219946915759B06D45305C90EC757B3C540F -E5CD32B7A0A3CC5463BB9107338601E092F57313C7AD6148130F394E1135E1FD -BD1ED3D8DC1361D89CF384DEAA0DB95C45FC78FA5CF5A5E50887C486ACF50DE7 -83EDB18AB747BBA8C7D7E2314714759F1D46B13B69ECF5898FD1C2CC5283B113 -9D4E8071D17759CFCAABBC01B266E471BAD6717A8CD101E98A3C2AB037DA6F41 -1AA5BECEC0BAFA3DEDFC486CDF0AF48EFA9117087326975186946AD2B1519D95 -4EE8827EEBADA88A44C7AD29D3BAF35C3B81FD69FDE31DA47D8EB2BBF4B1DE58 -EB5D3B1C4466A670CC3397679BD09BF4AF56C09091A97F9FA40C4A7B9D0ED0F3 -5F7F0DD7031A6805EAB6EE1B6FB2326C7C54E716F388FA1D9D2376656115231E -24A3538589228B1D74D78E3BA2F92401F929EE1325ED43E274761717152B407C -9711C4EA0F0430F835CAD9B7E2048C8B05EE8A832C6E571171C7127DF003C557 -FC6DF91C41C53E1BB27A388FAFE3E47BC0EA5EF7E6B0925704FD522906D5D2A5 -49DC34ACDFE059C67B057F415C32DE5ACF3EDFD41F89C9ECC9C51CC58FFB2A7E -EFC19D8AFCFCF0EBB4758DEBDA39439B18AFAFC3C5A656A83F30AAE799B78930 -C056596AEF43E473B3AC6E0114759A2048D429A7EEB8CBA7C9CE9E7A8493AF79 -32354FFBA5FB27F24A343C608C5AB5CB6FCC962DD46A60E7BAF1FEF39011B500 -5C4C1B195C22F668D2B9A8F6F4A307BC3BE10B58C500DC01753241FC22197D9E -2E37437B4DF008E4868B39C865B5DA92AB147839FE3E0F5AA329F901B745E908 -5B5B4ACEA87701F16A7BE07B0B5B1D59BC72AA5D7507CEA5A3A331F085D33E45 -2710B96F2A130FD5669CF15FCB986C9F94E67F5E6382F4830B5AEDA4DAA82B47 -797A2DEAFC0B851C101CE4A9DAF6DAB63CD22AFC1127A4DCAFFB6F5C933F8D72 -04F778DC9FE9CE6E7C93E1AB6CCB82A5D1C8FE0AC18FBAC2684AA87592337555 -5F3D53E2A9923FF626B74E7B0C248490668E0D11F1E2CB576D5ABCF9FBB714D7 -961A55FDF0B26D863DF9937494B161A28EF983DB65636BF824C04055E8A6E75D -D3A22EDC7EDCF47EF5DD95B506AD0F876F1119F58EEB6D838C9F3E1A3F65221F -721EAD4FF3DD74355745F8BDAB5FBD835A87546A55C6C1648C2982AF76E8A760 -53DE528A5D0DD02B1F068182AF324251654893A61F3A926B6C0AADAA4D3A6613 -B4E703B86F1C3591761E78C86ABDFAF9FEDE1D4523612C2F461B06FF27B96A4F -E7C6761DB1CB573DD6F76880C1678828CF3706C85B76F3BC292741468CD682B6 -C83B99E5D047759A59F106BF5A21F6BED5E2557F9F3FBE911BC16DE30E830FEF -66DF51B9D28D6D9D49BFCDA1D2524F83DAEC3282A869E0FCC6D1422789055A80 -1370617A02A159DFF29350EEBDBD941A6357BC79DB69F0726AD66DDB5C8B4B50 -C49192B86374085B8382E2FDC42C314CB58A2C46BF0976A1D9D6A365FAFC08E9 -330CF2E2F3B26F6D997F56C565B113CCAE3F3A979825889A7B7EAEC1E6521E8D -C7585FFFC2CD3AB2683792C61570DBA2E23C9B66354C2AF757913E785DA632AC -CBAF1AC1680B13227048D5232C722A84EBA424483E2A0156B538490A0DDF1435 -CD7310DB183F8C941BF1B203A068FFCDE19D09C161375FDFA300B84110531D1F -735A96C6A2D7F55AF41EF32A81B44907FD0C922EDAC6231D7A19868F4A67A4F6 -E9DD38552B2E56879AA11FBBACA27883CABC44676E22F99CED0E47168D692B61 -7221A595656E7981D35117D729F9136089A3B85CB733D06B0286A7604A9D692B -CBF2715BCD63BC5288943F2F1432E086165F4F86425FC03CAA91D933E5768E39 -62B1EC282DBCB5DE928A51074C2584A6E2B49C67BAE7CC71F893FE10C89ED1E8 -7C3DC2E3FADD3672D3D6CF95DFDC2D9248A6040E4291D9DCDB0A680AA70700AF -F3A63FBC3818FDA1B73FB76BD1B21906B6E7EDCA248D1BD4863B0A438AED4707 -4D775B8D9664E118602D16D8A89392C1E5BA8756B52902CC65002F71DCA33C7B -71BAF36DCC0DE4BC9D11381C5E48 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27A350233112B0A339366B7373CE058456E0E1F -139E2DCAA12133B5B6017B0E08E776403F967AF719E0161CDFBF8BBE8490F57E -53C78E97517EF7FB7C00035D601CAC8F4EB2F16F8765614227C71C390C32E960 -FC7E9B9BF26D89F808B05C2E483B9171450E4CF3A8690E3B6B1BE17C36157131 -89E42D8A2F51D4CBFFF07F50789D0603806EED2D0A9B5E8B7CC0959E57AA8088 -5F48BBD28B37BD51EAC7264D45CD2BB8B6137529B2B5DEDDD7A740458F045922 -D1A14E07A9E9FCC940D89EF56E274BF533927DB8276C3C0DE704CD8EE4010F39 -365AF1E3665CE873D8D1CCABC9C69A6BA8939F170B873994330F32963C330E9E -70E95D62A5C4D2D09AC4B8DC7C837D9FE7F5A0D4D082743D038D458D90740478 -2A04E7693C96DB4A91CE237B8ED9D9F07DD4FB4B701891DCF294052EB8263EAB -5FBF7689500DE29E1121A4460B725C793F71E79A58BEF6EFD29C6CA85702DCF4 -CD2435CA9A0CD4A1D81C15602B768249EFC229A2EFAD0BFC7D5A8BCDA1771DC2 -2641AAEE34E58BF6A236F62E2FF68B3D9E7C68FD5D104811925266AC67F16A32 -9B1EBC55089A05E3025EBD787EF14F4E053B456205C8CE2E24295401232C0AF1 -E01BB90B390E2DA8E42E624C32F3D68ECD59EAE9ED878D07889C7FA8C80E0D27 -527E9E0C57C12DC1B10508A039CEA74CA8BA027FD8DB0BC0356DDB161357C983 -3A144F697E1407791DE270911E25370499A0ECD912B9974490F2B66AB541C9F0 -02DF28DA53E7B3E21299192933DE13DB56210B6FFF3953D09440A8A043987724 -6555A448EF5A54023D8E6CB060F41BA6C3C8CBCCD856FAE2C86A1A0341D380BF -3236F1B526BF811976506A517AD5913B0681D45D284FA7EAAB535507CBE0420D -E457EE415EC91B8FA42F9AEA4E63ED29DA0BDA7A7824634309E57D721A422806 -EBA4D2DF543A0050108FA7C6104AE75ABD65EA7274C12CDCA7FCFA6C39F8014E -3FF49B8FDA5FF5956B72F581DC7CA6A860D2BE2C522ACDB1012E622D211700E6 -DD77FCC8AECC89A787D2F047F08594CCA2DC2658D2CEE3752854AE62F5AA846A -E022FC901203388B0FEEF795DD5BDAC0103B576E5C8052A696B8D6B3EE6EA3E6 -70E6B2646715C9E74043ADB3ECDBD95A5EBBF4AA112FA800B833CC7FB49F8E12 -35B98E34D63EAD6CBD062C1AE5742C9209DD34458E39EB8655E6B527FA848B86 -53984B3E009AE9D16AB83276141F2ED66D8668A2D2BAC65EC966102F7A8A90AB -3469707A2778A2BAA4EF3EE6CA7CDDE0B2D7C324D5E17D8D3447C7DB378C2718 -FD1506535B0DAA1FF41130E8FDA53CDCA01893D9427374A0F969A7D69917D208 -370931CC09A9C208EADDAE21563370D6DCFD1E591848685A16CC6D9E7CB721BF -DCBF09EF118B1D13C0FDAA909B281BA48BA7AD6C7A73A0AA5A4F2DCB93E51912 -51AA351E1ABCCED1DBA4DF7D97253280BEA5C4E123D6C2BD88C3F361437144A3 -B9B93F0C89748A06DCFC12D821107C2BDF700E997D75F69D5F5E9ED4F1C1C474 -AA0E18D6D9F021CB238A01BF3FCE903663E4049D19EA3C07707E779367B696C0 -50BE98D3D4CC8F356F3B4ED8B97BE899A205358552A39355E7C672FD88B94E04 -6C593496F77783ACBD92A642CABFD0AD4150A5F7D7970C02F30CBB0F947AC53D -3B78A010DC543131E6128AD18C9F9D3030101E269EC58ACFB223C121763BEC1F -C3A2B8ED77E75395B2D2349A2CDA54A740F0074309C516D38FA7D25E14B90B47 -8D919C4E0D57C84F717E297425F4ADD0853749B9A21418E8BA34579F9816D46B -DAEE0D92BE78A093BC2846AA3FD7BBCC226C417C6ABCC4E194A3BB7EF01DB553 -DA2C3EE963DCFFD81F9D28788B092D0414BA913E25585D8D884977CCB9CCEB84 -5803FCAB0A16B77BDF4F21D22C850CC32F5E5883453A34FC12F50239DCA3961A -F4E9F1EA81A6FDCEDC0A4A053203D165BE090E639AE340A1775358D00F40E960 -CA1B852885B0B040D76D61F3E3AF2F525ABE6095544DAB11595C5B0AF5E0ED37 -443A7D44AF469C1136C8E4670DA0CE541B6797CF9199BFB907E4DDF141CCE2A9 -BC2F72401338CD90749FFEDDF626AFD2578388B1C41AA44A033BC4F51469257C -193A2B62A6DEB712EE81A120A4774D7F601F1FD25B074E94FC85336B79A9B4BA -66B807F0FAA7A0A65DE3CAAAD6326F110FD7FAFEDAFE4BB55CC50AB35B7DA8F2 -9F4F4907DC451EAEE650D67F0623D7FEFF4252D6727E16FB2961167639A6CC6B -AE6966D7F2B86F558F706DF92DFD61B07DF1B9D5C4D5F6AD7E1F2DC34FB845E9 -D151F2435453FEF430A79F1248DBE9BACB7F4BBF181138277208EB4E01D46963 -9D38E06D81EF314A8993AA7EBA9BAB51A02F9B0A38AF60EDA811C1BEA5A2A538 -E5A5834625D892A0D4EDBD50E1A6F7B5326405DBA2AC5E67987A4E68C761DC6C -4DC14CFB81F7E64E2ABA70BB34214D39DB1F786F410B0AF211D95850C0D7CED9 -F7D421D1432CBF4E642D41BD7306F89AFFFBE22BFA3CE0C0C991711C475472C2 -87F2E0EC27C8E12F3C8198051E4EFB4BFD7D48FDE19DECC18B7A4EB5FF3995CE -5D5EC2AFABB33F50F65C541F23FF7B3428BEECD8F4B6B456579A55A91ADB1F9D -D32CA440884D36E77E43F532E1A558A28D9BC89492EF878887E8D1D54EFDD0A4 -148DFA9BD5BF57DB9F0B05ECA64165D6493E079ED13D6A4173C2B5F868484262 -5A38C1763674544FA86A017B2CCA3F553F33D2BB50B1C2887A4AD18BBAD03E0D -66AA907D2C755BA4FDFF7AD251439DA0ACCDD0A6A9BFD8BC74C0FD731918DCD3 -3E5DDD3B97D2D8B15A759F3BACF7F2D6C7A1DCAB9F5CBACA46547EE4243F46FA -14559105B14506779243C4D98BFA9BC319BD3BA9ACC048038E8E8B14BF49881F -71AEAFD406E065B3933CFE3E4C08D5CFF2AC90AF8E6A96CB802069CDA7AC92F7 -DE0A370CB5AB593E23B2B9037B44DAFD888C4380C1DEB6693F5212919AFF44C1 -FC66298FDE6321E90EA3C985AB96C7E600B50506D9DFBE405803B02D3E998D06 -F9B7DF3C098BE3E489DEDC21A8DD358C1DA0D5390DF317ED309F6AD082C7BC23 -EDE9EC51636D4711CDECE391FBCC0C5277DD5614E955631DD349DA06D047202F -BD311D6D70303F437EEA0B65B90B8345460F2BDF324FAA2C7A8F206938312C2B -63B4E7B51DC727BC7F8EA99509C97626D5CA84B3CBB5C7D65BE822C31B350695 -24E93E904C0DAC7BC53B0920B4F23FB0916975D5A2AA52177937834EBBD82B96 -0892D32316D48ADF29518E4F8CB316CD650621B1A021F6855C2A3A84AE6BF42A -9DB4D209EC532D8ABC7CA2289FA635B14B5C5C59EC3DFC0DB504615236D106FE -98363DF080B162F4CA4701782AB53BCC0C7650233F5F7495C72F7523440B44E6 -9842A608A4550932671DFE066FECA714C054A80664CDB9272454A0CF4F4CF071 -E0ED8A2103FCCFE2FA8289C2F588CD2348E33D38A12CB75DAEA71A5D9DFC9463 -CD7DC1C794AFCC65E597460E28FE42B871C4FC8407AE12AF961312B28D4DCB4B -42172E242CFEAE3B22838711999308990B6D49AE7B65D9469F4712834134CC21 -FAB9EAC1F23B2C8214A1F00F2B59EBDC8F77C08F6BA6A907D05F614F6DEC44CC -C80993966950BB43BF8F9395BE2BC0C2AED92C483850227D254E2856604A188D -83282CCF23B170C8EA1F01FF9BF9CE49934B1A613491785249B9740D9583EF0A -1640869CE4D4FAB60F60D8ED862326817A50FFF03AF0978DAD2A356AF78D768B -2A12B2DEA9193EE82FF34CE1075457D4F325609C76CFFF546E59EDF5B389CD92 -459CAB05D6DF84254B85E1C220A20BAF6A5D81BD6A83660640D2588354281B88 -04DBADA8203A1A609DAA208CA8D5596ED8392594597441E2900CDAFFA49FA51F -D65CC39A02AA7CE7E4869A58D29D37F1C659F3A323D7A91F60A61FB54A39B266 -DA47A5E39B8BBBC317A387DD18633A054B2CEAF502B131E618ADA606486B749E -C6E64CA8745820C560988AA44B30B2CA0A3997BC572F50F0CBAF5B9CB612474B -661C4211569B1A9591557A197CA580B2AB4ACE30362D08D9793743127E5568D4 -2783C4CA7C07E20B43C749AEB5FF0C21883832A0FA943582FEB3B5010C99FFBB -A0FC837C27FDE910AC56577FA88F3FAF575687DE5A90B95835154EF384F00D4A -01AA0E48209DD042AF03C9C7BEAAA31E9BD00AAAE10EAED451C01E377606428B -B0672BF8F10F7526F84ACB5446528023E01F5E5D4AA4EFA9023492F03F60893C -EA25E14FC4D26478710C3DEAC1E534196AAEEEE29D266CF2BB9B80970B677353 -C97D691545D78222988FE902865F14F44C079CF7C14ECBE561680EA1DC4A6FA5 -7420C58C4EEC87315A4DAF152222BC979B0CBB4EC17049F677D1C2BC31ECB5E2 -9DB869D0C42363DEAD89512B3560AB65C05F21272A5ED159300C13FA74BD77B2 -D96EF810EFF4F64A864BD09C258EEA32603CFB5DF407AD61DF528C6D6A6D0BEE -9AFFF0D60FEE18FFBF841DA43AED3480DEDBB652AECACA1A4E5CC93D3304873E -EBDFB49D16000ED8A04A0F88FB1CEF1F847A439DA1FE93957A5CCF9116EE2FB6 -1EFA6CC5A38D4D855098D6F59427FCFABFE56583078E913516620B634A7BD0BE -52324D15609D3C035A9B53594FF8395969BAC155BD01B0209AC49279D4BD5667 -46D80D6E54FF98D6A7C1EB07E11277D2EE26DB98BC69411A414AF9761F7AEF27 -DA1766E02B76E8BC6660BFCC2DD4344DBBA0098DCB2888A6E243628D30D45183 -435DB3B91480428B4E44A465FE46B1D554D723AB1F527F9AD2DCD1806996425B -00FE8CAFB659393FE9AC0F5A896880949A9BB8F476BDB2903EE2CD9036AD07E8 -8BB8DF5550FCF873B348AF96B8CD1C9CE8EEA7AB743F5B3FD659EC6502ACF722 -D5D76A0E6EC89FBA669BC533C930310917C153F567CF6E1EB802A90EE2EFAE7A -504DE21454974868FF67C8610815C4F69F28EF80CC396D4604756E74C7943E4E -100203D1FF1ED3788022A0E9337D23BF9B0895A6F7294936A4FCC386FCFFD4DF -AF48F623C4791E61D7E32C9E28A3DCFC4106265A0BF1832C68B2124A41948CFE -C1B0394614736D14CA8AFEB7A6130BD8CF4FF7A5797243C6DB868724484C460A -ED3005C22D75E82D090B3649F0964532A1A48987E2F7E138A2BB55BEC5A5F82D -FBAB6581276C8E608350AF950651784A9CF3FC65BD589F13DBE1B062C6A53FFB -BF3E541FC918AFF48B538C095A4F227E02250F737A3B261AF3058D3D632E30FB -C79ECE7CCBC15239EC5BAA0CE80D730B7CDAB94909A083EDD5EE662D052DB314 -4F6EC57CF202478C32A06F41DB65955BA4BFB080B8979E257486F9201DBEA6F8 -446CA87E01CAED0D8B8923101CB2C0B6A3569E06A400268F4150CA9C72519A6A -C36F67332959E4D760876ED149B6C42909017CFEF05B776B81911A3B3E1976E5 -25BF0EA073F443E4B448EAC699FFC78D8C41D2035146596E31AEEF0CE4CC54C9 -83007A8283BCBE5DAE2A9A848B64008D0FB672904CCC43ABDBD8378BBA54C367 -C6AC47D9EDE1B848B3FFD68A652BC3DE67F1BC4C119BF07601B7BC8EDE2DD9A7 -EAB5A340CF47871AD3022A5896A56E03A6E25FD960F5128928F49385DB23D6A3 -C7FED79BCACE2BE339FA2C27A24236E3298B1A5F701043EB83528C972C735FAC -9C9A065E06270ADDE1503A42C4001F33661C98403F4BD0041C71AA7282A577D3 -885D2394800E0FAC158EFDDDBFA151D74742F21962F40BA1CAC0C4D1F24C0246 -FEF440341DD25E478936F2FEF81331F8937F04A6D691B235FC3875708A4162DA -1C92F9795340C36B1D34DA7D1430466F8C15D41E95434EA889269BADD42C8E57 -12CBA9FC3144D21C57E5EE98412B073147B6B117B20E925AF141CF455B1513C5 -97ABB1BFAE357A9DF3FA0BFD7D7226B878CE3413E04F03FD017FA179C78C51C2 -3FD10BE0B3F18834178D3085F15D19AA0F8C3E6447795B47E86017F44EEB4963 -C806F86516E1F0B4A7FA3A64C55D2C03727AFF10957B6409D2F133D32EAB06C0 -B612F66B4C881D59C78DC9EB6AC60F93C2E96A2B79ED573EB2978BBC0098D828 -B3FDA22E6B5F779D67DEF54714CFFC927FDC717C6FFE14F90DBDC42075D598ED -54810D8993180BCC5C41A4739E86201DDB5B8B3E80EB68FF6ED19973801564D9 -F4E48CD86224B10B4304740F8CD2EA890E862AA3BCD0B8041516E74BD0221A5D -26E073049279B20209ABD297DE5844AD9C61499DF968F5B9AB5D3BAEBC36256D -46805492265F75F906E1ADA46A08974E4F230A52D8A4D84C70194649ADF9782B -187C449E5C2346EB97298557DEF216DE9729B71B69D48EB018BF38259AC98860 -9DD729939883821E7A1A64537E2CBEB1E6F11A50284594B65D130A48FC73D252 -7185FCD35A3EF61F01F41251DB285C37B8541846C47C7845A0A46E1B986C3788 -A3E7E3E99F151F5CF98EE4BDED2B4CC64303A4900E73B070DF660E927022C641 -1A0D28D993F850BD82078EEB4F9ADA23EE8AE0CCE66F1A6D076E44890DEB5D9D -B4E8B15A6E58B4E09DD44BD0ECB14825D8C4DA0E7209A930812EC636DAD9EE09 -301888CD25BA944C779110696016D7B3E6FE2E9DC4A1F81A6F61B932E28900E5 -BA43EABB709B33E9E856BB6CA7A33FA08882271E5C2F8F12F8A0A673B6F42D73 -66DE9104027EA7D02F33869E0F06B70F64018549DC99E4B50A7382EB1A36B1E4 -907E8F54A59D4D832D5CC333D1B5037B64D1569091780BE317D9451FF583E0B1 -2D8877EBD3A0EFEA9A0330D31642A6784223E955EE6CB5CA803CE68CECB253C8 -44F74677782D40D6D5DABCA5C244303CE41B1B3CAAF862479453D3AA945D7B83 -ACBCB37BB6D87F134A815FF024D0934907C991D20DFEEBEE22B3966D4CE79893 -00AA038DF7367147556383CE72E85C2144D84A8B13D66722B8AC2C636367CAA3 -1C8D2BC5DF468F47AA78625C35A7362DA519CE31946F28AEBBF16D4983C7DA5A -AFEAF86F93E25200820747361EE02F06D5109415FB7EEED188310F0B9CF93E1F -DA929D2FA47AE4C334948D0D75609AEF71DFF8CD11C7312D81760509D6530898 -26E4B2E7F9B1B5EC94D1837F25A7A33BC6748574303DD9B08C8FC223DB659FE6 -13C71C29F0907C36E357A0A81038F944077383B7536337F074EC7161797E110D -1D8856F64C96DB506CA799197D4579D94C8DBA0D276205EA830F92646A4B0700 -5AAD1B29C58EB222833E8E48D1A79B785EEFE59B11C8A829A829C975C80EFD63 -D47DC9ED98700A3D555807E4844F5033DC6C73266DD4F25A6EFC304560C917AA -3BE805DEDD3D787797300EE0CEB33CCC4D9A16EAAAE902B986E2C4FF864E2D64 -19EBFF3438035FD9FCA2D9B0C3FDC17CBBDA433544D27E81BF809C89CA30F36E -D0AD52D33CDACC72650A96E9CD8EECD7A8D50296EB4897E99F28030DA0F2AE93 -7E4A94A87CFD3388642CCD8BF26672482473C4DAEB3D20BBB23C0A97EB3AC5FF -CF4A8A2CA0EDA2E686EB1E669F2529B027F5FCAADDBE3F75C384B769D09EA28C -FACFC479964A89B4421C932E4A1CEA3FC5312FD56A3011D6E25C5C6086883930 -704307CED7321A8DEA59338DA843D4C9FDF58C0611E0E53042CB19E04C69B9F4 -ED385B3994A64E1A5685FF6AF0D6F8FF4166483602D28D8E18EE1EA94DD1AB37 -72F1E331DC0E46ABC1131A2CF8C3C08D33AC7BD044F4232724F23A9135FAD97B -52114A426195C599A3182461AA4E126F1F445FAC9B167F418E172DB630C94782 -4E5E41E0F6315516BCE49EC4346A4BB307893F98B46B46D42113614CE9DA96F3 -6A950EB081E5FADD29F930BB1764DC41407B71D38449AD35913B2787A1A1BA62 -3E71BE24713598DFD96BE5056B7AECD3EE16850B66F6384029F144E19D06A9EF -4598B15534147880941D0358CDC52B6E08A2D907EAFB536B702C8E6AF76D7F11 -4018566762B88560CEAC97F3DE8AF834AC196D7CD3C3DF440150E894D0A53E6A -E687B9FD1AB8CB252FE5493CAB2990CF11AB549155DCA114A36B64BE7A835749 -3E86907EB95D9498BB04DF38DC85A34CF1701647FE2237F9639C0FB578D3A4F7 -471B2F21B787ED260775CC8495B6C852F4CB3CBF4F5A3452A29B97B51A4CAE76 -DF1F66F292BB219C387C34399A8415772F7A5439EA3A7602FF7A6AAB74EB1F73 -88563F452B5F10AF6089B4562FC1269895E6A3DEBEFF589643C60640DAF4839E -BA525A1710F2643A456E0DEBB90CD2EF2C75EE6DD31C3251451F41EA11372717 -9BF47259C422A4C596F1D76672AA27B57E7F903F785CB394029009859931EB4C -42F9B7A6B1494704E58084978DD2033EED656FC8BE7A2127FB7D3DFCBB0C6B6A -F9A598B2833CA12B6F9B2F0E253D9652706C4E12A0376F864388407BBF47CA5A -4E47A3F8567E7C360B6AC74DBA73F686B318E5182B14983FB340A08010170CEF -6D92BECF86958FC7D409ACCE13CB5DBF5D5B215D7DB86D61EDAD3D9D0FD969A2 -4532689CA7DFDFE46CFADB5ACCBFC73D6FCAAEF1304EAA37D0C9392FED28FDEF -0D9A1DE83CF6C344EBFFF0E47CA8ECF053AAC4D8064254346D1F01AA8CAD860C -98D0335B6F211989DB72E96889B2CFA81D424FB75FF678B426C414477F6821B0 -E0255646C15A661E9DD18514329842474F0105FAAE1D43D5D738D5FC84AEE185 -6212C0CC4DADFD74488F6BDC88EE33D2428F7DA04A30C6E543FA57A13091BF3E -C76B5C4475A66B8148046B62C8B631E7074AC229FF199073FA8F8799C7D602AB -B95CE248DB1736315B501A0EC560C61C695B372F461C48A506F3F92272029DB3 -13B23BA5BFC29991759B6DFCE5C3186284D4F7EC85348B61712690D709410FB4 -F000D4D59DD639936C25254AEFE481B178027E06CBAEA03EBBA1FCA6CB8AE2C6 -C2F83ABC9D871308AC30DCE86941AF19A3B105EEC3CB4AB9EE20846A67A0EA46 -FB57F71714203FC56A476BDFFC3135778FBB28104B539C4A54D244E8D3ABC7B0 -A515BE0F6DB3AE9D9FC964328F79045D21D98B233FE73EB7898FC48C4908E729 -BA6B9562CEE5965EE9F63D310BADC9040796736B4952CA489318C9EA8948D466 -56A46A3F3091A58D1C227CFB5E8C3D3FDB6EA6B4A16D6FA565335AD569B3E421 -4BA3627D6049E6C87A1E45458A54EA574953885CD8A7CFF065130948DCA0EA63 -B3B1F8FD043AA910C138E1EB546FA676A29AE7AD8F1928EF6B28527053445480 -C278117432723F3DED55BF3E09CF8E142C517A3787BB9DE2787D2CD37B5326EA -B4C1CDA63F2EEA8F55C5989E35D88F5D75E88C4F383570329C62DCB9186D7AF5 -8FD22AA953C1E21658C9DF0985B55E088CFB7C7C941A692FAF215935A38899C6 -31160CCAE51529BEA466951F1BE5776DF69A2019C33A6428BA43F6662065F16F -4580B2AFDDE7E9D32D6545BA96BA2D2710F5FDF8C9B3044974BAC9390D4F0FCB -E693434C32BEA67C69413C7E01DEF1257879C7E044F553FB46604267A1D77750 -2320FA125E385B8CB7C56F70F05D81632F2182636A401C79F97AC61C5ED3F44C -81104E60175938287762E1B5B0A9B595FBBDB7B5126CA287BA9F4CCF583B1CD7 -74B38884ED467AF4E1AE43555BD3FC71BDF2C4FC041A8791594B410699263DF2 -0B10C5356437BB6CCF6952A6E23373CFCC1F95731DCCD869E5F7B394A8E585F1 -50D14308AC6EE6AA201024040EEC1E55CDDCE9DE74A3AF1F42AD918CFF7F0731 -2B3734F389F6B602CCABE9C13F529EBD194254192B0C8DCDA14E3DA68B3D0654 -3140A875826F93973FB04D64B22AF5B1504D81D677A6307CD0D2EB57C448F2AD -1C16C5A7B1EB35A044F20D2C4BAC9FB1CE0ADD7E1AE8BA3457DE4BAB168141D5 -DBBB22C31E79B151A815D4CA3E44963D0E28C34840B7F3C596354B3CA3956C95 -4148F24AFD08883A36A691630A298AEE757B92E02A862556778E6E3A2041E4D1 -1AB4580E5FDD4841988B8B7D735803876A4D5C898AF6856321251DF6D42CFB3C -7115734998020F9E6155E37CD7C2464EB42B96972342F12440451A23F736284D -C9B98FF4B58E07E35A12C42C70ECE5EF8DAF052EFD32BEF574B67AE003DA2FB1 -A7433ECC75D79D10D2F32C90726C97E64F754529F7724EC8644225C18646F309 -D4D7F22894B3DBCA226473866EE2E9467A7847CD62DE83DF3D68DE2EB993A031 -2E858D3DD47422DD97F257E0B3E2E5B49BC9DDF0AA76463FDB5BF5243C4E64ED -9C308B167B35B78D2BFC33F087CF8737CB5AFD3318BEB0F08F03B373FF6533DF -67F9850F5D0FEF6D4394D888CFE283EE50C32305224699E71A1D02B2A16DE21C -EDB0A53C9C5E312B532AAAF067243D88F5DA40D4FE0A0A2F4385BFF34FA9B5D3 -BE1C1DD5065A386FB88CFF7A8CAC4053918114683EDE4487B7BB85D1AC4EB927 -F1E1A9CAAFB3B23F4ED302CD7D12AC365C69ED004DCE51C729BE9C9A0E9B8874 -E47ED7F9565CA1E5AE8C0972A5FC37CA8A023A3E728C0EEF8AC72552671D500A -E3D619A309A53E31AFA37CDFD3FEAAAFF7E90E69C96CA07DD0DB4B89061452FA -8950FF79F1565BF8508496CD55806A62F111C9F46B7DC15EE257D317DB135816 -E42D2BD7EA95D0B6BCCBAAC32D267350604D7798E1198F03B819E80D165E0C7A -0DA795D1850D48928450B7F7967D58C8E8930A452F160BA5A54A2B7D45F9C8FF -81CD1918ED808958B9AD4B07353FB328A69F4E73A6804FCE3132A0DF069E25A7 -F40D4B133E0D851EF27A895D04451EBCFE8B07C05095D9E8D9603F8A5C4AC797 -84196B9E09879EC026894A20F217A4BBFDF13DCB519321910535F4BBBD8D31B0 -66253B27C034FD1014A134BFF9393201C8A1A55125BE0EA4EA9B7F56F2C038FD -0E828902CCDA438F91250C47306AFE4B8C5016CBF360C0621F402DEE13302A66 -9F1793E6D3D352A24349EAAA8D9B320EF85560A935E2A4D2D67BF4F0FAFFA84A -0FAA45717F23855D19400A1D823C17BE7A005E1B5AF9388A2150E14CF7F229A5 -07096C67460B989066D033C7567003EB6FC8512DD685E44DEBCE8718B1408872 -40226BB9D8D2E2E3409C100401824AEE6914BF53123B7F1D367688D2F3E90CD8 -B2E2FE7911A5B6439D7D421E59EB7BCE4DC0B8D09692DD02629A4A40500C6C83 -C27C127120069536BB5A08105C137A80E112FA949C7DF8F2A78E89169BADA01A -F444837C8EDAB8D31EE7381BDAF2E3FC227D95784F07ED0C2AC12234D81A07D2 -0B2E26D95FF19FB74DD5CFFBB705BB286C09DA08F4164048B9DF68C5751A6C64 -3B053ED842F997E75A75BA9076985E27E65C1B256B7AF6541BB257B908133225 -C7A7608D62E9E0D28C4BC1FEAB3DCAC226D44F02F2B6BB5D786789E9AB51BA25 -9EF0748C3BD02385391A390D3DC2B49422EF5ECF8A09998EDB111847D830744F -0FBAB1F688A9A2FF26D16A0EBD334D53D323DB863B8CFAC15C6E48131C4BFC68 -B8038C436F156BA2657F05C9524E8F8BA4DE9C0C5CE3393927F1ADE80359DE51 -2686AC1919CDD6244D58C099125C87A6E27D0CC62214B0ECE2E19AB7E771E099 -272FEFD178889D220E763697AF056160B54EDFC103A161CE16FCE42A1BF4106B -46500819C85E7668BB2B9DE3242A7FAA558993F4E06DB47912801C79BDF6C10C -502FB005913DAD8BB35F210F2BD6225C3E9C0D37D599FD296B0487E8F373B28B -FF8CA001BEF0E6F9DC29C679382EECFFAAC4433C1116C416A6AAD52097B105BA -1C18592A38C7C97782ADE3AEEAF808809F91B144BB90197900D5A88B752A322F -99AD6FC16629D1F78E9BCD372310FB5C33F728971CD8CA9555D81E199FF523AF -BCCCAAEAAD8E951A6D48A704B4D89A3D1065406B82B00A6A421E25E79D147594 -6446382B4028943CFE86287A666FF655DA13878D845BD930CFAB8217EF2DB874 -EE748A9464B77AADA51319CD18C196E4C37F23DAAB0B26857C837761182EB3E7 -41BBD9FE52371D4576012FCEE98F20B91D85C7F0EF8D428DBCA7D0B0F9A93F9A -8369AF11DD05D35395BA5B79E39B969EEDAD31CFC722ECA91D7A5A3E437C3068 -36F0319EADD7AD35C6383706380D6E5AB63FCFF28A9A21F1706772EA74C40F22 -59C5B338356AA658F479C7E2E7C4176F2105D7957B43F9FE20ECF7FED5CC0A33 -0CA8F9063144E480793010ACE37E3F577C6075138D131576B56F8302D6E4EACD -1C8E02EDD061BAE820F90FA7C2840867DE92F2783410CC56199C1FE7DF9F3154 -3057B95CE752A30B7BC4AAFADD5BDB3FDC04D7D40A74444B1A135C1F96682188 -BBA5CD3C06B1B84BE01018233829B4A78C54845CA06C20F1C86B1D31207FBD50 -DFAFFCFF029618CABA5782488DCE6D0FBB3C50F27F44E55504D9DCBCCAD6E99D -49E3F8CF3F9F597EAD433F7E7409FD15BDF7AC32CC09A23259222EE3690F3C7A -AD0D44DD92DEC93B9C5EBC8571DBD3B80864BC0EB5379C0A4AF50016720FBE36 -8307FFD35CD365241A4CA0D7FC015362A3D8AB49571448461F5B497BC4E8AFFE -C8E9C61CC91837D1036CC017588B4E3944112405379B6066F3EB0F2D7B0D6C2A -90E1CC201090A85690DACC92F4BFB4D4DA42D4262DA96A4BC78AAF804CE39863 -8B8DAB0886C27E289633FF58CB49AA3B67B3AA0BC0EB1B3B8B44511BDC19417C -D7F8272481C7D12424A1C1473749B9FFC50B2BB1649D2AA3DB8439BEFE38F70B -A1682132EBABA78E41833A05662A690B77C18CFFE6EE308D8584B7247174BDA3 -C64AF4886DAFBC452E2F431AC0B02380FBB2130C0CDB339309EC1C1929F8AB43 -57E8F5D1A47EFAB0CEB2B5E01B2BA8D81FA1E63606342E47DFA92679E6FBFA47 -C93E3490A0DCC5CF2C5DF298F81DDD1B646EF8598F821380983D00BE3C2FB456 -F848F339BA6329D23C727391B84EEC670579F39F3263F5E535960C95962F5A16 -2C1D5A3DD5FF459041C153EA2E549935449D7FE37C2E1D058F8F80F41F2D5C80 -972EC033F5B87A6B1BD65A2BE9A8576D30069745C1DA75F072BB492A212EAD29 -3209E08C3FF6205097FCB14111933252708033589C8AED0D1A28CD86DAB13EC3 -18859BF08EC86D751F370377CC0E724F7CCB632A4B115D2308083E2B5B8F2EFE -260262D780EF5276AD5CB5E28D73BB6920A8C18D720A4CDA52DFFDDFA2BFFEB2 -31900CE110AC33E086B6DD0FE457FE29E8D010C7CD6D0C6BC2BF9021A4378731 -77FC26E244D06CA5FEAEB6A51A164335F29507E1BE86D75A610012C6F913E64A -DA7FC95E6BB98FA90E399CD9624699229172E6D2AC88D61C2D0BB651AEF862A1 -FC7EDAEAC0C9BEFF07C533FA1FAD72E929275EE1073D32DB29EE477D4F1275BB -ECF7960D5ABCAC007A1B9BEA2E555D02D7FD2F8DAB37DFB612F6C59D0B3D6159 -88938E23372FD48E2534EE404F327B53D22AC9A8DD968F50ED144EC1B30B4222 -BFEB70376DBF1C5C9F7BCC1D765953E76894BBF009DD7E83BCE3D56AC4099153 -E5E147B7F1612E84935A5243AD8C420874937D4662EFD9717CF715D68925C2DC -EDDE5070407F7210CC3A141AA6DA723E7B7057130728972EB466F0EE63D66BDD -0DD680A09CB69D4D9978556790AD98E3A8F1A5FD15571A4B607DB1EDA51250AE -8256180D00411469F2C4ED97CA517CD8EAA731B74B7055FA21C6ECADC9FE18C0 -21D063FDFAED57B276D51B33042B2868CCE630771DF7AE0DD9E26C48892FF1FB -332FA26CB639A581FCFBE19CD022A1B770922FFD38A6AA5E28EEFCF3AFAB7974 -D963F2BA5782C765C81C3535D453667165F6593889C316CE1DB54A4BC928CCD5 -9948E7B7DF992073D2C334130819CDE861B60B463E55F17673BD244804C6E376 -59851D9DEBBD20FF335EF0F32CE99DA138AF75D3C03B72CFD2084253330051FC -F467C0B06C413F8D71316835AD963600C6E2CB564FB392D6A68DFB98D5A2452B -45C6ED8548A8D5068B434A993B745F7C49F9E5273636066F2B726E52082EC848 -825A05CDB19FECC21628C80070AF0F80F4B1D858FAFECDAA1C5C689E8AF110F4 -7AC324A037E89A65113883060B08020A1A93A816B6E69DB90C3AC9C2B378A277 -C6FA2AC6FB93ABD6AD2960BFDECADE173AA9A512F2448371C9F4A944D623CB2C -A53597E7D01C3D6C4AE282FEC4E8232A7617FB535D0E8DFE5C80CA13782327E7 -E581746D460E8040ECBE4321720CB8A6FC181364439F41D4D08C8B7E582C751C -629F4AFB1A7A390ACDE76ABD0B162282C83E410F3CDC311C1113763D0C4D6C92 -36A117DB6A5B259EC8ECABF53080B9D278CF87BAF14BF5D7AA9ECBEC98EFD0AD -CD622F9B4D6A92B5C103BB7D5E97F863E2594D306A119871CE7C5CD6592EB0FB -5338FC288D23D86D493F5AA886155AF1847FCFA0E92E84A1E1BEFC4076F43350 -56E42CB16F7543F5D057D3547E49D75E2CF22B376BA9C1E87370651DF9EFEB07 -91DFD4B59E6A99F45A962C5E021D4EFB3BC1F63953FD6E09928A551C220A98DC -4BB366A4BFCC58A7B314CF9902BD1FFF53551D19033D8C4D28952ABCCC62B468 -C61A97A76C9CB68B8FFFB8BF91FC96E1AB49D2B161F37A25CBFBD5D4896815E9 -4CC17385F5BB185A15B0B8413FA31E2CFF6D67F74997261568B94C2F85DEC393 -300B794EB87E97C7769BD6FD84CF81827FA260BB161281E7F75D1C37276AB529 -5087F4100BC37879DBCB97723EB71A3A6A40D923234FC1C8348C184710F40DB1 -0B2C0A6DC172FC28BFAE2D2B2B295BAF3CB1A39A6D5A4A73FF52F080D1EBDF30 -3D9434BDE34FC62441911BF2F82FE2154E76A0CCCEE232A7DBD1A22511C39624 -22C76972FD5D299DC8BE9A2BC8BCD5FA48E8FFE729844C41AF0E53044BAF93C1 -36A63F4BE10178F9296D2CA93A8EB0E76743D8EF16447E7A3991AA1BDE4B85A1 -4BBB15378434CE1865218F9EF95F649A6F21B7AA8E75CCEEC717EEBDFD14F6F3 -EFEA304CA35132B59B21FCE65B13326EFA5736DF81447F675118E512E631C747 -2654D4BCF7890CF072C39468CF9B5A4ECE1C6DB0F4A4728A9929D821C7599FDA -454A6930350475791CFDDEC6F9982A6CBB09E45B75EE0C8202DEB19B74786C51 -09E4F90457DA1BFB94CA77A3C6C7B346314BD5E2990DA7DFC78EC75897C59FB9 -1414D259A9728D14327E5BB151FA2195D80D9BA0A852DE19383AB17D4D6D9717 -144DB34ED80B2910C4F442D4BD722B7F251B938114B4C0872E874C3DB20F7939 -368A79C3C46A13E5E761E397E5A6B3E8BAF6836632D2FC7A1B3252D81D41904D -13C65774BC8DAE4834C07CAEA4AD04DD6CA8301EA1E20AD4E9C7701907385036 -2DED96B06F5847AAD5D004965F255167231BF07E1FBC6FB101B73F8620765755 -9262273AA6F111626AD38CF86788269CFC4B8611C55AB4E9675EEE714CE2D305 -C9CF8E201CF812702D0DCDCA8BF76F04DB029FF56F7AE4EE3064BA785148E822 -7592906D2C27F043D16A13A48DEF8482193ABD5A45712B0D5ABD3CEFE3BE93D2 -DC5F98C33CD602BC65F3D02EE0007D6057D81B3D3291877F399CA1D04547A274 -322C8E4739543B229703F48F02C6B1945F5F537129288B7289BC2FEB01339565 -40E6DFF827D1582F0B84D517869C7465D00D653C1EE3EDFD9497BF86D03CBB79 -25C4D4D7CC74C6DFB45CAA3EC5DF90A6C117AC984CDB7643B906C6EA625BC933 -892FD590050090C94C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D -E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 -337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 -0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 -472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E -A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -3318B32500F76B1038FA6122C2AF6261B025BDD004EB9575D102D625A351A20C -914D7D79EDB0FE343726526D57A9A8E3916B437A95C895F542DF4685E4683CC7 -5729A4B41F0C51BF910AE542A1270EAD05AA2FEB6B95C3C5D068210D457D1D9B -9901C8946E0E7F47B23BA12743FE43A1E7DD18C56A6CC68C5E4A22180E24EB3D -2F5A6484A170FF45D2C5CDFEC7958ACD37C305412BF2757630252907C69FE044 -85724CFCBA4A85C02D4F9BD5A5405E4C0FB1EFF4AF9CC41401B5ED407E78B0D1 -5C0676C625A5277809A8DD0E44091329701D8ACE4A981EAA0BDFEB0B26110396 -B24839B5C59B1FE13EDD5D4B4E7893CD85A4712726BE26357F427EF53B157DCF -77791447877951ACC19D5AF1C2D7375BE53F8AEA5E0CD8A2A049A9A010F44016 -9628A12E5B6E740E5831CBBB715F036066DA33343EB22AA89073787148760EA5 -2D543B42DCD6EE8CCF825D2517702FE270BBEAF8E0A66AE44F449F50768E82B5 -2FF1C533720E8AC2E18BF0674D88A0E4F0886D945C07FAF1986E1BF838C45EE1 -82E2BE8223231B396D5B6D92DFF0856AC03EA1AEBD993F54CCCD58CE6464B075 -EDB4CB853CA500A8A20EE43FF3CD82392656D4FF38F76196CB51A342FC562563 -EDD69C2C184172D19C7B427CE4C129CC61BA35BF65FE6D040B5311884EA16C4B -0123A05FA94FFC1816637359FB28825C2F87715E1C40CE71329521E7C7A92012 -FCF11D3C94E9BDFC43E18A19EB6E1A8821473D6516B93247B1A832735ED606C1 -6116751239DD1796B4921B67B731CDF45FF38FB615067D07696CFFC6F923D0FD -24EC833922FFAC22BC4B1E0E9802A64B069EC783F250F034D41623C5DAE1CD7B -CE63EA49C9D1893ED2B49561573AA2A8B1DA6988B30FB49A68755F65A792A42B -F2D921E87B2E130D22ED26833FFEF003C8D45B7A060E2039B87E081A69AA68D8 -F31902E1134D23DA8F948BD1756B54919DC4117ABB32BD4E8F3E26B57F0239FD -67262DBC2A0EF4EB5F318C9692EA8AADBD4448CE15DF8CEE63FADFFC457D413E -2558832AC91C10C6C268EDDF2D00E9139B47199E2CA386F0821EBD9589C53A01 -663813D56ED0E7358AB0DAF4C3308924A727859FC812BC344FEA19C3AC00F9C7 -48DFAC6CD48FD3E28645458464BFC984D7081CE5A5B5ECE9CB7FAE1BFC00063B -2EEBDF0E19E8AEDE76CE2EA7D7A61CCB4A38B3C29066DEDB13D30BA7CBA0BE11 -29CB91BB723DDEE57E94E9D82ADE3E1E8FCC275437E98C727EBCA148F56EFE2D -1E545E514F8E81695527107ECFD91090BF23C2A3C760E5FAB9E10D88E269416B -79DDAD372757EA4DC7A12F41C4A87F34A1BEB66C02BB472D766ABA60F2257132 -43772C6378C18F75F0BFC2F6B7FB57FEB5647A0A35E1EEC41115D113D1BB2118 -6E60A0DDBDFEC305AC9E46D84EB1296C9EDD2C49AC52226E64F213E5361903E6 -4F213111934D0B2C28CC638CD1E15D1E21ACF6F1CC9481B9A890B012120E08CE -5D57FDD7A07337AD22726A31A8DA7465504566DE14927A0EA88AF85F396FE7E5 -DCB9C32AC3FAD7BECCC6AF79FC16F39F94903687CF39CA0CDF1A3FD9B10E2FA6 -EFFCCFE76E2C8A60A37BDD75E978304F473FC03AF2ABFA38EA9614012D76D505 -965CEDDA91D3E53BE06A0919AA613E76F5B4ECB6D0274192BB85A7B1A9F597CA -96CCD0253BFCB69E8184A92E705C71A0C1F51B1DA24C53C1A358673BC055E067 -2FEB7BF9C8D3E1455174C03ED1448BAE5AC7128EBE59697E4A24B3BC6461A8DF -3FC5F3447D7CB23AB6A0722E7CCACEEFC178E4841FA54B0ADEC7354B49EBE023 -C98B79953D5AF990CF8D409A2EAD724635A20D53DFD46B9EEC62BEADEFDD0A6B -EB64F0985C5A8CE0E95C6DA596094DC5EF1D719E6B3CD71A7E20FED6B2967F2C -365B82E865F225697728E8D302FF0FD231A2E71A78783CFB3252E748E235B7DF -8EE1B10CCB5B18E66A990F6D20656DE153CDD47C5C6EBEAF8BBD23474366D296 -8D07C370F2283013CE6587D8E9F65E334C4F96991A54012516FBAD8A2FD9DC7B -A2F13E74C01831C6D6C10FA3FA1131107D3A77CEA31F5E57485E52C2F566EADB -70475F61A74AF672D624C1DB3B49CB827E40909CBE10E5BD3F0D9F3D2065A7A9 -9E8329D75B9B65B0674BC1D3EF63F7B697A80B3EF103B8F31868FE00259084A6 -06CDC3515915293B0B3856F80A8CEE3322B68BFBF39144223F0FC8B80A1CDEB1 -6D2371AE89C9CA2B77FB978F6F2DDB2E628809D233E14384C00D08106D5F68DB -2259D8DE59F69FCB8458A6CEE232139B9F72FA3A101D54A9474A9BE8A3CDBB79 -64613F90CD7814BA8EA766925B7B37311649690F886A7ABD5C5A14FA72E2F004 -D43FD246BF83346F2D49D3708D0B37B9A7D55B241D6381C6F488A683C8212420 -A68A690865DD17F17CD579A34EC3318C501F1B0F1237088D7E1F647A0641441C -27BFF16E1456BF253FFB4EEEEE08E3A2E2E39A524CF2B7DD391B9130451F7C10 -FA1D754E5FAEA63CFA78618FA45B4A0AAA2AD482FABF9595352CE99103BFB9B4 -529BD32968334005D9EA26AE33663A323DECD7462F03F7F2F07F015839416F08 -EA006ED12713F24DE165906A87233386E27AFC8E45963EE3B7E03E7EA67C59DC -709580489C6C255DFF182151042A618DA8C05670939F0BF62175ED90B3745DCF -49CD881F0E5041DE1B89C636D5433C4EC6DE0227ADE952332674A6C57677A265 -BF1A5F7012582EBBAC5FCC7C3BE258D5020B60C9BFDA7B236919B58256BF8B36 -3922A6793B2FA4975B9B9F53A0EA212CE16B4D2B67956F6A939FABD3BC1A6A20 -97D8D1655EC1AEF330B189A459F24D7BDF1B4BCFD7DD180AC9437D10DC9D4489 -E53AA776C956C4F1C0C8E04B8A06F4A958C41877AE3A0F2DAEA2CBBB07009274 -6C703DD40F9DCD63CFF5B98B7AB8D5ACB3F16FC70BF1707721AC1273D7978996 -34E777DFD5199187BDA107F865E2CC6B5C0C08DCF04509B91602C5750C9A5A3F -BF2AF84BCDD33233898EF2EB01766D985BFA326ABF0080AAFA40E9992CFDBEFF -8599696D621940D7AED320411AD515FF250D1BCB9772AC63E703FDCB19C12E71 -18305C430C05740EC063B5E4B38BD32A7044A8FE10213A4C6AD11C25F640418E -A1DED2480AB59A077F69AD4E201F41D83CD14018C23BB9AEB7688C15A0717E2F -0351DF1CC6B5BC43FD2144941FD045916C9F5404A8D18E2FD74229C673FF3067 -FA7516B2214ED5AEF5E1E1F058313F6A5E30F3B6691622009E4BC2A80D8992A8 -1531F4F79802F3158818683CFE8C05EAB46290B7BD698C96E1FFA48BBD8DDC94 -050ACA118339CE2D98A7E3C3B929E90FA8CFA62D7F57AB3B07A0002AA2BC5B5E -6A623EF048B442F587A40A2EE804E72EAE3BD75B5D048B721FF5915C45908AFB -D28E6116AEAECE7D57952E53E9DC16396ACE32C717D22DB3C38708E7E7C99BD0 -29C299E8E32FE619C4048E7B1359BE4C5B525DCDD9382518D857FC0E1A6E352C -B321B742C4CA32D74E62BC421459FB2C578CCAD0316A1A4A3C631D9ED4B0F0D0 -6DEFD47F6EBEC82B2F680E300FE42DBA525E0783040E515679FD9E29412218E0 -1F9EFA394D0B7F665AFA72CE42B7ED65D4144E80AB7369C74E9F84B2DB3A6FBF -8CD88C660F746B452BD99C75C557C6F49E68593D068CF992854B996327277CCA -7FB50DEC7C17263BB4D209B6A0AEB0D45B77B6DA31895055C392AEDDEFA1FF18 -FE2F5CF4E94D68FCA1439FBC32FDD986AF7A947694F026FA9A72FAAD00C06022 -5E61413D3FF06FC2A74815657666D45C797D20A294ADA0255AB7C6B053C21464 -9B5C0CEBAC0B282A4817F068E86CE1DFEE0B0D2D243077C18D3E134CBAA7A281 -8642C76C1DBD0059FDA73A13AA8DCD378E9CFB16329B2EE2285D4981A5C8FE2A -A44B3C4130FEE029061A7AD0B4E4E069BDAA1B97A28415203CD47B45B47ECAE9 -F8DC4FB177B7E0599EE0250DA1782D51269E826A15964938F59083A7C372B380 -0E130C5ACB824CB4EB9DCF09449C17FC4ED66D2B21373118AC780958C89CE3E5 -16B89344F7A0207085A9C60B48C57A379BC463BA2DB695C27596F089C541D635 -B57F1304F4ADDF3BFE4F6D4F5DD4807597EB9C1F93E9C451A73AE9FDEAE39BBA -FF36EC5D920B4B041903960E0F301DA0DBE6AC89578C15D396FD7D30E8B5D452 -5834BEAB6319555DDAAAD16F3208E6AB503D4D12CA34CE5421B65747BBFB8EC9 -DF3F89B704B8330E54353527EA338913843930F131E6877C06612C91D7CA8EF8 -97B11BE6B46F984BA88854EDFBC412054AF5D0954BED5FA40C80049252E2943D -794252A3A3D8EEC5FCEEC42202BDF237B52C08880C4352986ABF812BA76C8572 -00334BDFAD40518AC034E6CB8E5435D6487EA268708F9CAE63EE39E456420DC1 -56C3A41545A7835D921256A203ED551E79E7F6F9903B4BC1D2D83FEEC81B76F3 -BE19DB4AF3E6BA14E5DCF0B3BCC2B0C86CA2630EFE89D5790A1CFD0C8D52514D -87573FBDA73E98B0301D2CBEA419B296049DA09666D498203B3758E098FD37F9 -1FEAA2F0C8D49AC5C6C8E04E8087F29150E50C0D4EBD9857EC8C587415B57424 -0F0A3134584BD9FABCA8566AAEFF065F46901BDBB36DA1DE58CD70D6D4DBEB05 -8EF41261CF94AD09A6A02D5D89DBF15F9BD641C6B82773EA38B6392C9F5132B0 -C3707912608756E277D253FE00E23C4B535862A0C99FD7435B8C19AFE3ACC5B2 -B37ACA7BBE0F65273CDC2EFEEE1FF43A511CAB373E873520EFB4D2FBC6FA4C23 -A11EEDA078574C5980471CFA9CCEA5D59F1297C71447FED173DC62CBFF5DEC19 -4EFF6885ED29B857F2DE2312D6F14835FCE098462E9F02D701D0F2D2A94AD756 -E375B950B593CB132D1EC9146B53CC8B1A057E7DDEB1BF9CCD1C88BDA332EC75 -7B7F019180594638792A5B935D7C886A6E6572529DAD20BD16ECCFCF31517608 -207CFE03E8A7E87B0F29BF4363FCD14C18A6FE7CA3974D569BA9FA2922445E39 -BC4242CAA8ED91C4CE36141010A01A17F5CD160F4A1A7C4BBBAD67D9868CE28E -20EFB97C2B840BFBF5E73A98A04A8DF558E0453BB6A561F5779E91262F962712 -E18F4E2FB5E918AD34E797A7E25E87DAE39E4FA81DA40702499E6BC39391B23B -5FCCBE0B273C3AFC1FB64E8B6B8AF4B681C868A01E59A04E02231BB8407CD182 -F0570389B4B39CC599E03C66E5C5D03BD5C0759F5E476BCDB1122C3A689EB3ED -2731820B2EB9F46CA40980EE69E6EE147A2854E8DD060B3AA21E096A8E661CFA -7ADAF3BA20F230BE6BEEEE59D7B037F421BA2377BAAD5AD9DBD2FE236C16ADFC -43473B792F9AEB1643576AF86476F6D19DC980DB1B5F4FF4BD385B629B3E1B79 -E3DCC0333D6F63050ADD53D3F84579945DFACE63744C662A092F7C756262743D -FEE700588806241DCB043B259CDB01078E7C6BA126212597FBCD841B555D90E2 -F79EB9ECE179909F7C44436796FC93DFA327552CA8ECD0C19730B9AB9C9FDF8E -97FA4066CD918064B53DC4B8A9F564DCD00B476F761BFDE9F605DE2CDCFAFB6C -06A1F1274B9BEDC5F2683D87A360C4A0549FA3B864416418D9EC75CF7F1EDAE3 -E0E0590C59D3FA8B42C22911FD8244FC588112616346C1A2253F600D0A8CA5D8 -086CDF8505DE847C3321EA8D2297DD4343C5951B928B95E999ECCA8F7CAEE5CD -326AD2F300C8961E317321A4600B97194E384F84190772F381D543EB860C8EF3 -ED0025344C08CE76A5F768D7217951F3B8675565CA2417349D150B5805BA9089 -792A6135343F1357644C50049BCC150EF05FA7E788DA9515BC0AECCED86B919C -6862BDE04DB76AADCB7095DD3AD72FE7FBD375A24526C7E0C79CE575879EF500 -DB261BBFF7076C45E03FBCB17F10CFBE5CFE712AA9BE70E9C1AC11BBFE437E0D -E0811F6D24971DE9C9F7BF0867D7859F808F3A34F9A75E4D64E0F186DFB4C9A2 -16F2DAB020BF454B68B5FF7BC79A2B26149C80D88C258D42B82C0D8C4D2C497A -43234D6B8F08C10766A237A744B63090BE6480DD3BF61E52A77B24AC8E9263A8 -D18859783FB9D65C991C46C57A3782DB9563A5B8129BC9C78CC087A0A34AD9F5 -383D8AFEAE4EE7AB8DC18C529C0CD79E17EB290206AA872F248E732A1D1C9865 -4B45C50220339B558865784BF6D2D1423A78CDA03B3BB521768427BEBADD7555 -6D180483310D6EACB8CC236F81BBE0685AC8F56795683DDE91722D4A3FFBA24B -386AED629619715797B88D83091D52B33FBFDCBD3CF8CFD9F993A3DFE464C627 -7FA61A273110BDBC9D897725AA5B1593FE10F74BB68761AB1168194879DF551F -B464A4AF554DEB374D1FCFF071BC554A5D58FE9E29E5276718EAFB0BDAEE3FE5 -480D2FE83F12BDA1192C9D165677293149296D8DCD78E609270B821651EBE9EE -17BF9B48BB958181C84B1A455141AD2DC7432074418DEB26FA90B8BE391A70C8 -1A291570EEC07C0D32EDD5D21CF6164FEF20728572AEF32EA74334CA18FECD9C -34E76C798D187AEF66B51A0D3AB9B396CDF64B80EACE6CB50A2D91FCC0E7D6C0 -1FAE443EA3F8774783238C336E13AA8EE581F3555DD159951D860628BA36F573 -CDCBC6EE351395A5007B4F1BF2BE5E770A8C4F8AEB7CF11DCB80340986B0EE66 -A03B833587D904D1E903C4538AD6091C4C199ECBD5E9A9E7C952398B537B645D -ED28471C3CA16D4F16B8F9D42E6177D1F5978AF1B35FEE4507E6A90A26B9F459 -19D300A92CE334FC8C653A8EA88A2390760E548C7BB1A81FA23AEA13B7B9A3B4 -95A77283FD0CD439302B1344C349A44DA4A9318C09E841AAAF50BFE7B6B855D3 -4A63FAF84587855C6E96D27C7F32E98EBC015C81E5BBA3B4FD305D1A7EE4DB3B -C578D18A022D963D12C37630F5E41A062559F6BB8DA38F2FB566DE5AD8E85B35 -B8B1A21EEB6668C65A73CBCB57373BA393254F80C8CF23F9A0C290546E849EFD -4510E6CE0015511A5B80C46BDDB98FB309218D3DFEEA68016EFE39B6FBDFDABA -97B81E5EF6642D41B8B67A11FB665CACACD38EDFFEA12C7DF93CAF9AB4638831 -0440281A1EF338475D1198E61A3761C8806DCDC7D67ADF9723093894E47B4D6A -A492FC0F121F69400B03E5FCD6B9F62DDB79478BBA426FCE1CB4AB4B073444C4 -4CABA465C7618519F021ACF198E058494E1E07EDC4E9FE7DE079DCC1EECEB58A -5EFD843C9D7789D577266A3993FC8B975FD7CDF34B73A2C7DF0CA67BDCC32E22 -0F51BB22F703BAF05C1F942CE2A1E19059782948480639B4DF983C394D7E7E1E -F254EC11D4784EA989186FB3FCFC69F56967E78F4DBDD2E42C15E439AFF91B5E -5596DC299ACD88B2A4A73EF2B849E3EECC0AC9DC5F2AFE412E7CD0C1FF22D7AE -EFCD278602F24A45D103330C0016A2A03E28257B8A79AAE1B4B5FB10096FE963 -BA3AFCB41BA533817470FC4E6242A21D7BFC0AA63659627F12B590905B1C815A -C0C4974FD5A7353657E03001E28658FBF3D8CCD38403759B32797118BDDC54A7 -C18752F62DB85C128D88EACCFE237F1D57CB38E5CCC9D07CBB9BF522CBA91BA4 -3C63F201AC013CCCC206CC494286406CB0ACFA548E59F63B9EE7C3C09DBF39ED -355D9849EECC045CD99384934172D4B06ECFDD103BBBAF6FD72ACAE95ECC222F -C3E1D52B5FF630FD40322B025F24BC0328C4F7DB73ACA6A4AA41F00A7EF49CD6 -D89698EF1D4461C788A3A0573AA0A51F17443A41DBFBF64C85A2DDB92CFA8439 -FA5B56016CE952BB12D601BA905C6861A90974970C07DD57CB489D9B7F2BDB15 -D32B49FEC3B2DF2B99D23A8A7FCA361414424D4DDC6040585F3A661FA10BA5CA -717BD3F7AAC86BF54AB116A4C4E293DF0A37253F2DC38833C15D619BF5268865 -10FA87433C9D6FE121AA691D77A4A701577A9BBC488CEDE0D2015D2CDBB3831A -7A651359194F066A00D0B7D848D6916357641344C7CDF2F1156F681DC4B0F97A -320BA45B98E0BBB9FA677E876DA142D06DD926FFFFC6DA7F6EC484D3A803BA3C -08F61CF2ED0ABFCD66ED93060E45B7068325BEF53F6DDF1E48B6145EB887F819 -B39F6F79C70C1658825C28B79561A9A66AF79447C786EB0034890C173185DAB6 -551CD02E1EA6849F75FA6C0A891639F1CA1373A3458CEFC909A89BD6A2FEB96C -7E38010AECB039A33BA1B82A00E9728B13AF760A7A420B1BBF24B8E9713EBBDD -57E5D69259F4B50900FAFDD3EF8AF1469189D24BC646F0F958069A563F17F567 -B1846C75DCC8E5068680E7E893B61C99CEF73F52C4A3FDD947F98B4775A754DE -02778088194C212B1228BAAC6BA26CB133630690D24E2A533ECF1E97586DE1E3 -DC61FABDA612B9548CE55D2413C94815BCC9204E2FE948EEC675CFAFBBD98D75 -A952025DE9217A55B89834E5F60E49494596074473AC25DB530BDEE564CC395E -D68B70D422FC6896E29220153D8172C0DDCBABD1505A9C0D01DF7689E8B41498 -A4AC0B3FAD5A642747522C52187A2E442EE9E492EA4117172C27B25230121813 -D3ABF7622268AEB835199E84AF2C57DAFBC1ECE9EFDEFFAC71E3D439524D9FBF -DD51D65D03A0F75F8E1A49E9D350345EE26ADE5ED627F39F1757D2F98F805BA4 -6FDE80FB63B915AE92DB29FBB7F44A57EA530E0EB7CDEAB857CB13C7B7CAF327 -D4BFC320777AAA5CDDA46FDAC045DAB1AFA65981E0B9EBD8C9CD92F75CAB251C -56C3A5851C675B70AB474C8D2C4E3A844D66F145275865F8F2689445B4FBE274 -A7788411A3216228DFD1C1A70EAB2D803C0A349EF1150B368E2FB6CE5B535D2C -025A601EA9363AF4A961145363D4B02C1D4DE8FD459AF9AE23F8C885AC8E66B9 -F34197484733B5C41DB7F38223CC18BF8C4B4C682C00EB2680C1A47DF7B1E91C -3F94171D98B22A6474FCB4239D801CFF4AFD2EC4810619C04ED39CEF51A45523 -B87B774ECA3B61E32C7B1CEEE65C0281FD3F46697F48489BDB14BF0560E0925A -5ACD0E69FC0BAA13AAD12C5BEB8E6B02EF302EE049023A0839F3501896526DA4 -184FE5CA04D07084BEA4011D556E97C3DE98AA0464918E5DC36FD25F7FC22646 -5D87A66DF8764D70E31D4FD2B8F631D117A106D53C89A49BEE936CDB30E18C49 -C212C0C2DE3ABCD348A48999EC5B204299A0DC82F2495B4EA96E0B4506483157 -3D32E83C83F85100F17EFE625783894E6F0ABFAC2FCD8AAC3EE7EA170E9E3A26 -48D00A9B5E51F69A133E2A58BFFF8D301F6611C72E8AE67BB82158F9A65B63CA -D173C56BA9C387E2BBA8299A1A8EC5C6CD2E39CB828BE33397DCC7102DF7728A -4E317B58094F16992E8C1155D8910425D6E4D468554DD16205CE43EDC33D3402 -C67ADAB3271555EAC089D36EE7F751C2B9FEB4186BAA2239D3C5773395194431 -590D4860F9FF5D6960FDD4D28A5B4E92389CAEEA44CC90C36992D780C7E5D0E1 -56BF0E3D75AAABF24C06A12DB86E5B89F473D30458CEB0A4021589391C38D768 -AFAB16056EC8C054513872A7015038237AD27D76EDD37A7E0DEB20D7580296AD -A70536C4484D0C459E32E331579E923AC0B81B8B7497D778498F98338EF7B3B0 -A564C3C7CCDEDEF299ED4294DFE77D288CE487B10FC63267ECCD88B8F36070A9 -9A3E25FEA50E6BEDF43CE897ED04C6CCCDDE1E6C846CD0AB890126681EA0CFFF -927EBE23E63161D75375E8B320724E6D896AA3467B75C9E61CBCFCADEC7B1D51 -41862525340CA95FB06E828E5E4E44437CCB14C1E92384846181A727A5748A03 -1E58F47C0CB8332F7B5EAE4CE3DA5380ED887CA1837931FDC508F69F5B47997A -4A243B254201274F7B0038CFFAD2EBC6D0C653537C427878606A01B1D89552DA -19EC93A2F36BFA7EBE0EDC86DED777600C6C0235166F02CC9CE77CA0550FFBA7 -7F26C94E7899AF976628ABDDC64F2B3853176E3209CB141EB90D10E62BF95343 -CB42D4E71FC7EBA282C3F52903955611037F74DAFE274AF2EF631A7F89498BBA -0D61D9A744D113E572BAE7EB176E470B96979119FB738F8E5A048CF9A06543B1 -175CFF919E5CDA4FF3533449390B153E5A7361F01813A3F0B35F73C320C48959 -48A6A46F5EBD1D027D1E2397B95B04EDD775237DACCE343B2D868BC97C009E3F -3BDEAA329D265B75A18CC22C4A6B6038C218AF3FDE10EC81D29A5895E573CE1A -0FF3A730510952530A43C1E0093EEC3E1E8D0BA1F32669888C831BC61583DF6A -E30AA23439F5CEBBFA176E8516868B95B0A47753886C56A03A71AD9EB4DA2FDD -8E0C66111E0504F2CF6F2E98B2F244850EB7F9D0588F1D135EF0D54253600537 -01EAFDFCD9219558EBEC100444A4ED143D3F0666A010ECA61A61FE4F4086FA87 -9363584AB6689F6072E7E3CF1386CDD52BAABF193444484B90C6DA959781342D -69F6C37344912B80CC414D3B763314AB2016633D7AD6838DC5DE7169C97EA89A -FBFAA322E5DD7013CD78CCE43AB9C9F9CB4C549AF48AE1107E0A371720695274 -8AC2B221E321085BEAE67A5F28B913BF82C8BE9C8ECC91F4F0E207CE9DAA453C -96BA6AB3F816CB68C8CAA7BEE72D06BB81A4EE0D07D62C8B377F5F84F0DC0C5D -07BE1B902748E92CD91ACF4FA925DC20A87B1D68FCB8BA12BDBECD4CF8158F64 -C786055BA9EE8EB8C04977D513B264CC2553678015B26F0BED0B6B40E9C918FD -CF921973F8EBBE6069DF657140A78B27FECC079449D2AEBC5AD41D096CF2CD8D -99849B5F9B0DA598260C4F219AF1C76D786A086B6926A41D8303BF33F59A39F4 -5B4F4222B36107A9DC2CB7A28DA2F6ABAB02EC4B8360436768B941CD0B590E5B -E8BC36DFB239E726C665C6DD29D3BDC5292201A2D494C53A08B1EBE9AB477977 -BC0F431FC73B4CB24C18E43FF0940577EACC17DF5AA1F68942A97545AD204004 -0C52CCE5F190EB02A982A0F66E5351EC5ACA8AAA3CCD8A29E1AB3F12E5A62E2B -BE89BA28C2B87C2EE9603DD2AE947C0C9319C7E946E11212A45AE94D5520CD1D -4335107FE43273384211882110A064486C74715FC6EE0A08A6DCD1BD4C9A463E -90D973F566C4914DFE7407E1518F90739FD341CF93319E34C5FC2BCC37CEBD1B -84E1D1C16A6C8D89651160A4980327F82AB41E1DDD66B2F579F70DE0F41009B9 -FB28299E902B4438CD191233B375107693A799B752880A5FFFDEB0BA29F1D454 -20055129029C8EC38D9C73622288B3CF85FAEC74DE342A19F8E91573CAEB9706 -7D6060BE1586EEFD709F325722E4DF41D45C24FAD348B246B14E4C6933F696E3 -1C0325BD8AA56F959381D28E578E1C097252F69570A7FD1F51B23ED588797249 -547690741C8C021CABE87EE439B5C16B6FCA3465C571FEC8CE6B83977B9F037A -259480AD370875BC54454CE3A7A8C454A70DB840C51C057ECF53CEF2FC995D53 -4C01 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 -08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C -30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF -C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A -BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 -5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D -43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 -374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 -DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 -B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 -63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B -89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A -5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 -C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 -7B6DF50EE617C00966B9A2828882804DB7477F4A8CF5345B7F3568B4F72BCE73 -2E2AA5BC4B4C70E21F3AD9AFC3B8605A00D67EF9ED1F4D13DDAA920D45B43CE0 -0941BF17CF05D2B777C11D4D844AB20C0693D1DDF00B27D9E1AA2D98A4A06CC6 -D342AD8F644F4787B66CA7D861E7CE13FCDA85C1B0C9F94009768EA89838EBA2 -7818F40A3CBAFE9BD3ABDEC16E56A061E3D8BDCAA7496D85236E8E9F367E6A91 -8899D14E4FE387C2622661DD1B2034C83AC85533A4FF10AC4AA0904C9D965C23 -E5FB21A264242B60B3D723712DB1C7E6CDE1725588732D2015D40FD5DEC0863E -8320029BBF3F90E947D34F99F88CCD346D1DEA83AE8E0D5F898736BAE8398BEF -E547ED0DCB01E5F4B7D8A8485E9E1C5DF63143FC30A0231DB7571CB33503C85B -672147CD91A8317522E45BEC7DF430828265EE5A55D33F1B875A075B423E65C1 -55D155EA8F7C766AF61FD509D9C99C8F38872F703739368548855C0B0FEADF46 -F6EA9A77B68F598BEF9535DEABCAE2F70FB0E4B05DC87892CAB78B55D40624C9 -04EDE7C5E525952635FB3059CC14EF7874E823E5520FEAD85613CEA9D5011918 -2FF1F9F1682DDC3E9B10559172A814DB77E89D87102630AE9502222612D14E8B -18DD83D3F0FA239951E9111AA35CE0FFBF2294C3ECC4F053B1DD3C688164E7C4 -8C965C3474706163EB83BE7031E212DF471C34CE68CF7D70DD29848D8C05236F -421F25279D061BF76853C3FBD8C0DE771F52AEE2C073C3F41476A2224CAF7390 -856B7A2ECD5BF46EF467E9B287AF931E334DFA1B0018C107C64FEF306452B6A0 -A63117B670FC331F08E0EF834B994A1AF7BCC480922A7FDF74F175D4EEA169D7 -1FF9161B866CD6978AD88F4DEE1CCC0C22498A58BDF7CF4264ECCC81686451AE -D285F40242479B95BAA84AE32F97AEA31A3AFC45DE6D8E1589F091413B865D72 -99E9231D16326AF8A2B70E0583D57FA6A389B913B206E6FC8EC71136B1C1EB61 -5CFEFEA62B273B47BF2785C20A2B490185CF414800B9C7181DDD2966D19C0A48 -E3949E779E7A37DD5F123228EECADD70FA07614FCA1420B2BAA0B1552F072057 -530A5EED48BA1E49327FECA2888C40C69426905BD60B960C531822346DBD1DFB -EB71B9BEA3DAC83F6FAD7485BE6ACC31CB469D62EECDBCB3C14CA0A8CD4A72C6 -E516817520FD82D31A1C99A5337F71E1D5632A76E166E68F0757663323A916CB -3D48CF3448F91109909BF6331982658F418D167C9C8A0133DD53D86A930DEF31 -AF0B2E504EA1F94E68CC14E9AD5E49D41E74759BE49A271EF14D62081959550D -057A623838930D0515F701110146AAE3E5D6817E4757ACB14B5CFF85A867A3F8 -3B47821D0F16FB60A0346D0F46BBD63ABB6F00D23AB0B3162A72528DE96A7A49 -D33CB75BD8F637D32A2A937AB39700E30411F9C4DC93A7454C485903F81A5C8F -9F53684D59147F0A783D92FE163965606AA9656E1B245CB21FF345165A6DA0F3 -5FF4BBCBAEB32103F45616EC2963917BC0840669CCD97D46D892BD95D0AFD53A -5384D36F72A3B2DA10569D05818AD1D55C3BE41834B6992072E693BCF656EE20 -2835996FF99A4EB2075B1EE2E20695E8A039D788B53F9467438C53130D7FE320 -B65A1E16EE040128DF932BF0A0B180C838CE7542ADF8AAD187BB769182F53897 -5E84E3F0836C26D7104A178CDD976B87AF041B0B2DB7B2A0B3B98FB8D16A7B29 -335331C128BF78F0E3CFE186C974AAB8F23CDB283118159DA6766E17DEE5B1EF -4F608088A0CED6ED465CA01B27A7E6F1BF8DFDD40C559014F8D65D1894F22CC5 -AFA7F18F38F6ADCC89529BB1A5F9B5CE3A5067AA7B17413C5C16086BA8F1AD7A -0E1065B54F5A0D2511E4E779B2F4CE5E505DCC3CEB98D4BA4F3F28CC7EF2D305 -0656C55134F0EEB77A9CCE3E6151A9CFCC7005ADFE32998C6E79A46D03A53373 -42B7D50641F802F76DC08E8D2ACB7011A6A7AAA346BA6C05BA6B4372F7EF8943 -81E15DD7306E1EBF900220DD72E50A5D55A840C1634FBF4C58F0DDBB3F18CF12 -A99FD758F7A598EA4517D512DB69A06C672DC1F2D1C6FDDDA60289AB9005FED6 -0ACCDB75328F262213699545DF28164F801FF7D86758D7D6AEB69346BF974EFD -0967F89A38E9C392A72A6E52F09FAE76844C66E38809E23BD20C3C963AE64C4B -5E4A248FC50AE2C739EED7AA04A8F5663644C9A597E790BDC148D695D9A09DC0 -4255440738E531DA0610D58C84322F7D88A98850BB660430BCCD0E4366D709C9 -1693C7EAFFF3EC5E1E3E1C2ECC1DCACF547072F0DFAEEDC82A761C8BFBF281F5 -32004366503014BBF94D1FA67491BB410B74B399750FE176E55FDBEB5EF05746 -6316C13022E5F0F681BE0B48DA57A08B9C578AE362758A5AFB7AE95C180A3A6E -BD63388107B0581D2EF6011EC3E6A0F3314D2D5E0CDAFF39BD7CA16D7127B6D7 -BFE2622E9036A97C13B887A808A697563EE375E8BF35184694123A7311004F14 -FB923D3162CF6E18D4101E3D03FC496B4941B24085583DAC124E13185F34BC16 -CB5357031A2EE7D5CF085A06AED38D246553EE200D16F83069F6D5CBB254B882 -C1E1DC0639C7838E8272818E31FC42958EBC9610A02BC76C702F3AAE5FD965B0 -ABDC7E4D76AA33ED2B2672C00146CB84E336C8171DF44FD03768A41BA20E74C4 -E1C8A4B6983D877C4CD574652BC101CDEF68FE7FDFD9890163E9991BBCB9900D -EB38C0EEA027B1FF1EDE8FAF74298025D4E980AAF78F0F215F8A79CC2FE01AA0 -B2FDFB3B62524E85E57B09844AAC4EE5457EBB6E94B26187F6D9C0CDB40DA66B -67124BAE194EFAE0DACFC151B4DCFBE62EDAAAF73D3C35406B4DC63A52F640C0 -1BB69E4DAF62B54A455B08C13EE090695E298F7298D60081BB180725E265E234 -6298797DDE5B729BA62EA1476171D371F441C8E812A78C07E93BE7B54595873C -41802D035746B9913146B8900A0B6A72D45495E9747C6174F425F0D541C4B965 -C93DC19B7DD23028247500D4FC6B56483311CFBE2E3ED7009E0BB448F4260429 -1B6E7F7F51B8EA2CE690FEB9E399C048B8A44BD6427266A531419995F63CA763 -6F33472938317C8B4DF4A08288239DC5CAB08CF2B685E06C025A080F9AE859DD -92AC686E5A6750E1416CAF269808C2B41456B85E90182ADF7C49EC289A584A13 -8F4423E055FBA92CADA57AEECF0B080F588E467A56C0D5BF3E5474C4AE72C9DE -7E58CD7019A120985CA7466E7FBDA1A3BBDA5851F29FD9FCEE6D4C7E83DE8D01 -30717D1A87D9B2519F83295DB8D129E9FE6F63EFA562F2887EAB20251B38F8E2 -FE3B426F6B6E3F9DD18044784D031FE559FF54FCE638FBC4E431A5D2B1FB4598 -0599EB21025127EE5984E4B9547C9174949B8BD298851FF2279F49DDB60CD6BB -C791FD5C98C9F101073CAF431807AAE3EFAFB62C26F20B744BB9C2AB2CA7685B -EA939E79AB343F7C7682E7049EE484026A87422524D7F05E74946EF3EA3D3138 -14AA4D5B84888F0324BB693DCD9D488F11D9AE9033B9542226D09F3E212ADDC7 -EEDF0E695D5FFA6BB8736924271BC6C0EC991E123F2EFB42CD4738C089626585 -D6D9C81A5B600986D34F5746F58BD4A3C6018786F83ADDE80D4AADAC74AC5D57 -92B3B2AEA8A23CD46D96C73253430550DE6A9D38318D19924172F753A925852C -E254E291C75D2A2FAF88E8B1EBC9338CD4633891C274A891C34BDB36F11B4539 -09B3DFFBA7C8F69F130782B2C52BC4FFD73AFB85E9B89D77C0E281656E60DE46 -96AD0403E5FA280B5125386976E1931ABF92869B9FD35FAE8CBD8C81C6761A0A -A58BED448C83D578415C9F3C6651EFF09F06D3232048EDF12BACFB2C79D88C5E -266A3AE6889C188B9C0AA2B08507960F779B4DD780C1BFD4897B5C9D54AFA801 -821C4BA6E0388CA3A7B4679425C777B390518F169CF463976039BF7FA2EB65F6 -C0430AC41C449B6B86BFEAA1FB31141D790F3AED1BA2A996D09DE2C2562BDD5D -5CFA628A96891AED8619606A54B7C29F92922F9523CADF456632E7583DE33282 -B450298AFE02A5FF44B03753E69D688049379A58D9D64CF54D838F3ADBC2E189 -FE9533FA4CFAA739984DFC92B242BDC27A9B2D7EA5B7DA2BD8E68F56D3F9C50F -1787DE3DC6A563E026E0F825EB44E94AE20A166126C23D6C1C50845D69CEDBFE -E5BF8BB1CD69ADB8719E0D323248A16BD5474EB8866B27D076319E2DD94E22F6 -B5775E1C1730A230DF4A9B6E755FE9ADE2C2E52050812566548AB8D23E3FA2DC -0D7D40D41E7FD479139C518C62755AA7AB849147A9DA060248AC709BC9AF5397 -E4C2436DE40DCC4DB45F25A6F13A9CEF167844DEA396AF7F276F3E406429BF4D -77B52727620D1EDEB498AAAF82882A64A536B27428DAD07B65E4F67204F5F6EA -640BE2DD1A4B0C3219E0A4078F4E724C87EC03F40687457FE0A33BC7ED668E0C -1ADEDCB711CE4B6C3FF6C6B795C8D94AB21258B80EBE07D5C6750C31141DFCCE -D040FC0ABBA2F70FCE652DA2B054667AECCBCFF2CE44067C59D9B519DF8D0BC3 -601DF1C69E3C527D3DA14E300AB16DE394C3B6834224E6ABD0D3C5D69CDF3BED -0F1D25B40E43461A419E09EBE7C064431E1A65E38381C3B499DC14A5EC914115 -0EFFA2A0D3E3410C04BA946888CCF34B9E14CA34A9AEDD7EE33A21616222E1BF -E452124F8385EB91CB3B150C09CABC844B3AE4A6F160A76402FEFF88143B8EB8 -7861911F813B9F4FBAC396AA1A0044583B6103CD6C06D835067FB4A805F012F6 -8B4DD3A94998DA21774A2F367BF35DC8DE396F2744AA755FA1E9CC924D55936D -FB5816F04D690C73F9A6745A31F44ADC6AD84E5EED1FEF8C79FAF887254B9B43 -1D7E7D936EA73A6C17FC206CDF381B43CEEAD16372472E1557C331BD84AC314E -0F0DD068CF5614855302073C29D827D25AA28AF4EDA5ADA51E7A41D82AE8C541 -FFBD51070BE1223BC469284BC7202DD0511BB35187CBF51619FF6AC2C4EDFE3D -59CFE708C4CCEF1477728909812020747FCB20542187D663538CB4499E0F1E78 -E7A855D1B98CC60EE8E94484067CB726E97FEF6B73806DA6AE03A03A999CD3C0 -448BFA5D5D84D2CA2FC3FF8B9B0C44EA6301536D468066263726581D67AA247F -2474EC9818DC904B50A6B37CCB054D2BA43BE164D56A52D277ECFFBD89A9996D -ADC9DFEF4206BB16B1D30F57229E17B22ECD569CC5184B85601B8D4114B1CDF3 -19104059BF448D7784AD86A432ACB9E9CA67D1F7E2E3AD1CB4444BDDBCD42F70 -8B0BEF950219F68CA869D4F9154AE0D98A562EC75BDE9FBB9EDF4BD321544151 -918A39D105A812662B4E1D3BA59EB980AD687F300EE7B4864FB69D6BBF9FB1A0 -23C9DE5EB29A2C67BD41A651D37FAC1EA23FDD1A6A03C2DFFF7B8B0352273FFA -00F718CEA4DCA42903F88F341F19E16C2BE1A49073F672970206381B4560B701 -21614EA094C3B2447FE83F460867A432A1665AC8A41E099B63A549B7ACD5F451 -D4950B6ED06EA1420D679616D3290CAA8530E83EDE95826B1FBBF20E3935E861 -E36DF20550F20B97D6055B702D897AED20C970EBA4287EC14B933BD3360320B2 -D39147E6C37CFD7E0434D163D1DACC8D2D3BBADC1E064076F0B7F4C2E113C99B -362F9A6A241ACA27BF0000CBF796C099F56097DC88725D6B7471D840C6641394 -193D994B7B16FF93ED96322766FC9FEE2434BFDDFF5C5CCCD2F7DF30E4942DEC -8AF62A14CAE56679936650E8140ACABFC0816C72AA29223AC6EA810CA2262316 -4E7AF26429DA8E7A8C0C9C76D54DE98150D94A24A44E19C8C33FADC69BC146B8 -1A0C4E676C3835B1C43817DB3513F2366E2105527CD2AF5BD1D06821292BCD91 -93CABE6F6E4FF381D35492E6D83C21645650E52EAB1D2C2E396264BB3721AEE3 -ADD93B3183961B1F1382CE896E4324D0E113D1427DCA1DFF23E7475D31A866D7 -854BF0B6AF6E7E49CFAEF5F75CD92C3ED123B3CE6ED9B1673ABC5F74829B0C17 -5B30B59AEBFAA4F925D790A9608900D05D332206338852516817CEA0529254C0 -D09F7CE1431E27469C14DB6DF763370FBF8F9AED3D5315F1C463D967CC26A75D -B1D3DFD5B5C3163304D2C5C05E1E9DF51B2CE1E02A42E28195349CCDECF8A798 -949B49691312BF0C2A6B876BA470B4A687B302639BAEFB4AF896098EAF169644 -DEBBBB7908F6B2CB7B4B90B3BAC1B88CE0A68FB210411BE55DA9FEA6936E9BA3 -FCD10181D209B546D84876AED9374011CAAEBAF81F3F267EE4B006274D39E27B -F4CAD5E76E753D4B239CDB0968F2826A0AD40CC84E48B5D23783ABF374315F41 -FEB340E77DA6BC30E13B280F7B21B2D1543498E107C625DB4ED729A631D41948 -CEFC84927207FF77235FCC3F72E2BE779B6B60FFDA38B05A14EBFF0436708485 -A11EB6A7EB414994FC636E18CA5CFF432D4B7835CD3472010FFE226B178DAD46 -6A0B0E2AC832D2D32B5994B21270FEAB62F95BCF2F870EAA79A9D5F3480E8F4D -68EBA4265CAB5563295ADF1D54DDDC9071691D996D5D34C308F9E8C440831798 -B96CE92AE1711CFEEAF45FBC63F4ABD466BCEF2299209473238F302B3B441CD8 -4640956EB3A6976F425FDD8A115EA00FBC420F49F00C5FB237013F502AA1C046 -5D04AD291DBA5ECF1CBAD5681FFC89045BD55BA951DFA7B5407C688FB0C42262 -7AF72CF53C3107F42C34FD968A0B2C4F30771A2DF688037B45A0488BD823BC4B -0348ED7DFFE7161060DDE1117FB8B7D8883DB3AFB4C0E7FAC095869A593CA8D0 -D2851A6143FFCB3DDFB78A4C5B2795A7D3AB1355A1CA81133CA7CAC78F112759 -13E7EA15C6C0399DC657B2BE607310747070FF8C3A7288C356E28EADB53AEC9B -47DC9892AA4D9F3FE534083F2F725874F1B610EF85FC6462763AC476243F6749 -F24D18DA615FBA3E0E7CABC0555C5ACFA192C335517EE593D4F572B068DC1875 -16E7143B1D286B6F9EAEEF9AD032357BF686B38DFE9614BED880B60D95757015 -0DAAE0DB5A2AFEDB75628DD65332B0E3E6ED7C9F217D00B5D4748536CBA264B9 -D9AA6CB4C2F91C1F16E3881155C162CE45FB3FAAC36A8AE2395062BA4EF984B1 -5BA305768358BC11B824816DC78C95446DFAC96234AB7D2C50D6C0B9BE90FE36 -1A97EDE7F382702FC6C201C23D7499D88643C0370DB8F8E7762694260B81FE26 -2E1002A9CAAF8ACDFDB6BECC91BC372A04F01E1A66AEACC16D9BB95374D5F050 -6D1C67DABDA03EEB2111E4EE8468037314F4F53F786800511D067426BF09080B -135EF9FB14FFB49935CA055EDEB99DF36284BD5F24D7224BE0936ECE727698AC -A7AE07B29F3F717FA4E8F31C3CA91D7F0497B0BF4D1A13B026CAF29902324471 -AECEDFFB9110B6D3F135E00B28054C9122979968E102141E1B3764C4E74DE1DA -0E2D08B8FF6AA00000E295DE9B00891F016820A9CE091F959CE7FDD0B656C89C -061971BCB9D12CC9938C309722621E2CC6988EB8EEA37D2C8237CE6D1995C073 -168CED6EB4F49FCBD90D11CD1A424421431681242198618390299A8BB4DFB14D -852196DED1751576B6A4B0C4B044560212BBDB44A13DBFFEDC5B55CE9E813AB5 -E59BB6474CB6498CF1372B540BAB62CDE9CB522221306984E4D4A93D66168FFC -94D3D722AEC33B91887A9243A5D3DD6CD7666D6DC14CAB7EB508C0B5803A0F9D -BB6ACBC2C378AC52DEBD5AFA1EEA68B2070514AF8BA8B451247930F88A09C807 -73AB0E8724E862B6E915266C0A77CC027602316C38AF0CB3E26312731125B516 -0CB71820DAE1038D52981B29898E175B20A780A8228D1438085EE12A159C1EF9 -E86E9D2C43AA40936D0C5EC9AC52CFBD266A509E152F08D6D9A4B82EC5714FB8 -04A101407320EE732C09BCA7CB8E7C476D5D89E046690B645F19B975C2F7C1C6 -1AEDD047ABD0D6851263AA0C23BE521ED1A93B8C8914DEC57A12E6AF6652A95B -4B5F74D32A31FC0F05EEB0EFA5841E5C42AFF8EBF4960054A930F1E1C93FB1C7 -98AE63B1A79D04780DBF480BDA2CF13165D5A354D8CF051A2EFC44206FAC9341 -D43AC601DF80A80EEC9007AD0862186139B9F94BFEAD5B0A0457BB8D7B606DBC -419225743817957AB44B5691CD6EA83EBF879D237516 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMCSC10 -%!PS-AdobeFont-1.1: CMCSC10 1.0 -%%CreationDate: 1991 Aug 18 17:46:49 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMCSC10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{14 -250 1077 750}readonly def -/UniqueID 5000772 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337 -900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA -87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98 -076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518 -9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A -FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD -B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9 -CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30 -40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D -C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B -7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5 -FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC -81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D -5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90 -CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6877C1B3D2 -24030F377820DA58F4B95CFE645109F3F1B80DB5FACFD7D05AE2909EEFCF95AD -9CB286C8B6C075CA2267C101B736139863186C193E31085E7C9FD88EF8BBECE3 -933542C85309013325B4BBFE9A5B606780C8580ABDA2F5D0064EBFC23939B307 -08568C3B7F5F053BF367DEBA349FABB9F760C44D100BDEEFBB01F27BFC61FCD7 -5EAC976CB24D67763C8CBC0CB43B872E68A0FAC1127FC65DE1D613223F947D89 -AAFB4FCD676359F7C3A0EE0BE2BF8A912E2E4CE58B7357A05CB75CFB62CD5F9B -9A0FFD1BCCEA877E2C20231CFC0F7E31F536223146F955D34279086878748772 -0C9D158E3B6CA92EA5C359C620FDBBDA421B3510FEE1D118024735E213B8F03F -B916582DB3B56D9E704FF55F61AE12B8000ABB7C2ED781978A31EE30C1658128 -F18A4B92BD9CFD1AE5D7BE8E0849AF3E1B762028BD1D1A57EC7EF6BB3EF342A9 -82EE0D16724928E3A1BBEDE05FC967AB3C511578435D0D4958EBFA1FC32C6D2A -5E1C7E62B8F4BFD82CC2340C95799F57D486E4929F07CBD1C86DB204156E344C -74B191E911E9476486CCE4D2F0DF2A79ED8F8623DB218CE3E8AFD4B42AF7FDD4 -EFC3A7146816743DA8EC34E955861CCDA22AECF0C74D74FA6402503A2088C564 -D44A87245F246DDD847AB57D2AC8ABFF7045341C6D046045516B2E10B85E0637 -814E135E13BE0439644B8FF8A46423EAA6CA3505F9152C19CE0FEAEB9242037F -AB2462A87EF274356B5A4F837542378C61EA932ECFB635E4F69628EB0B1C20A9 -095107E0FE465057BD95C0EC8CEAFFF13F3EF5D9758E8BDA1D55C86A2C3D5985 -1D3B67E8B1F5F93C4CFCC75A0BC8ACE6C7855767523DD6C79E253DFC2D49EC38 -B24AB1B7D2D0816542AAA408176C485E7C490CF18F8C73CFC82E449E0976D671 -950C0C35170514AD6227A312BEA851982650498DE535949378ECF3AE72A0E761 -7CC65648D33C5FFDB48C49AF27E9C7E8D8C22EC491197F1384698397F024EE32 -01A97F70759B69AEB138CE12EA7C4E0F12B35DA8B723C43A525E461887234C67 -243CE39372C4EABCB6B0A3521C7DB601708844C6062BC9A93024395B15519BEB -C56CEDB7898ADF92A9D675788DE3B50A97224C194756508E5C5A4E0B96D6372E -F27AAE34A3F1BA3389A222B51C2A1373135143B80B71EB4B42AB1F09F60ABBC2 -EBA97400A4398BCDAE99C85F0A9C03366E91F1A19FC22670D608F1097AFF502F -EFF30748B578FD8D750D28C60C4250896B87E841AABE6D442FDE4586B90FD905 -FC3D19C00DB4DB6719D58F750811B7EB3D5EC40B69E66CD7F5BCC4131B9CA194 -B27DBB7A30BB5121B7950EC6B453FCD5353F734FAA157D1F85B508B75087EE2A -EAE9ACE82CB3A7D7ECB3DBDD4263A01D128D83B23D3BE98865C90D47C78E0E05 -C28CF793FF756DE91683370E81CF7C36C58CEF19BAAF36A20664E0FF2DC74CD7 -A6271A46FC3848DB589C50A715BFD53716C0B46146CB2920DDCC525BF83D766C -1E45F6690AB28C45CEFF4BF426E67B82E7CCEAC6A165977BA375D14EDE206067 -56497B7E2D1C81ABBF7A5180067F1A698DDBD9E423ED67B72ECDCC2AB7DAF950 -3385AAA4384490E369C9FFCD8F491EB372A80485DF57ABEE2995BA59C397A858 -39318C7638B511AA9A40A8AD69D053A8B05E3DDF93FB876FA5007EFF920C370C -368A2657C78F5ADD83890B4F6890C4BDD2041951D58021F5AF4CB5CF5F432E59 -C8A6F5971D354720EED8352B1FE32BCD231D33BC090BF7E1D731574C68FB8CD1 -FF9A7FFD70E3912B2A1181BDCAF989C9CD7FB3B30EF2D8280C7D3D202A7443BF -F8E44D21CBFD72671DF0D57ABD165A9B4A925E14669A6AB0AA33462ED7EDE70F -D88D4F43AA8A9326C69D94A76F236F85DBDC13DBDE75F590155CCDB0C18EAA74 -EEDEF95771CFF412D3C9DAC65DB3570D8211BE98C27CF0C2A536202FCA5948D8 -7C83EFB774CC1261962F1C3C05467C2F8EA3E8C3E3BD82B1F39639DCEE46F6FB -79700257DDB6172206C6CCDBDE82268E3B5E40CB8E1A33E7C87F386086A3B015 -114433522F9D0CE343F1C7CC6E188A29FB93C2D246670D2F92EFC68178D35EDA -BB2A4BA8355CECBC97254E3CD52F188EADB5B5825FB109E94EACEBDB5597E939 -B7F2BF5A53BACFF6DD24ACCE2DD4597B7921EF21FF911C4812CD236D95C9AF68 -7BDEC554C8B748301EF5BD6BB9C8CEA0F1E505574018CC2D599175E6A9A74285 -1D3DC0E68B0579D9AAAD99EB49D518699990E0B4CD65F7CC8EAF7413ADFDF219 -CEB8F1234D70F6B66064AD518DCDB0BF9E90AB0EE016ED7C323ACA421416BC47 -103D4ACEB453B8302BE7E8679DAC6FCC0BB614D9E312351964BFFD3AD356953F -62F0B683EA75A83461F88B4303C046EDB518E74E09D19115E6064D62848F9E2E -4942EEA7AB91DBFB7644390BF11B9E9DB49C4585B6427979F524419B3FD2E7F8 -7517056C688D5F051C821EB196414E3D480420619B1910DD6F7A12B5E01CAB06 -FDDAE550C11E7AC395B1F480A73430D971889772110A806CCA9B5921BC37AE7B -94105AF102A79E3CDD32C5682043D3EFBAEBDAF7AE922211E4C4C61D37966F56 -17E3FD9A47D40FDDC45D21ADE80F6539AFD69C3AB8A01797FDBB9AC150FDFDAA -736F3E4F149959C4AEE4B0E529F770E5E7EF9D30B040989201428F8399E3679A -01D4FC61B6A4879D4764B23D424CBA11256ED3CE090F1D7F1328BCB5F800C705 -A19A1212A9662D86269420B6C7E6BB638DAA9460FAB9BB8545B427B417FF2A82 -486C8D114468FFA2C45B530D59AE72E7FA365F41AE589E3E1957808F065A4A1C -240AE545A87652356BE9068277BA0B9E79DC84698139D835F3F500348317BB43 -2C59C0C0FF7CAF5CC8350D15CA59101A25E4F2E0CB2DA8E5C094B4934A189DB1 -6288CE469B60FDC50280C232AE7EB1EE123CA4ACCFF7AF51DDE258CE52ED59EB -36DC6C94893146505F3DAD8E3C838EB3C12B13B2AA38E7F43F3139C5BC1138D4 -F1F2F52B5AE4550D3A820BDCADF1989040DD77B8EF5FCD3AC42BF884FD02C1DD -13B24556701E3CD43B48C9FB45E5758DC7571EA4ED3442022300FDC555A5E4C5 -1456BAD59F0CB1D389F19E7868A4FE95AAE7D4236671B1E8B6A9FF51477D68A2 -BEF5BE4E86BE81F0A4C87948DFF006D1C2A47B650B9CBD121D388180721E4E1B -7906582CE91A2A1666208B52728F1B5E4E4943ADDA5F7AA1B9487C207C86C30D -9973327C8F600CA86DA892D70CF6E734552F6E773473FB5713759C730380F4FF -E440E57BE60050CF5C33BC1AE10220B0B9673C7BDE4F8BB596BD41CA7DC19CDA -F27465B9476961AAB3ACE28545F1D5DD855EB441751F838E356D69FD173205A6 -BB52BB602239F612F477DD641A44EA2D556CB113983A040CE61046AB7EB52927 -681AA49626070EB91DA3E2A46FA4A8EAC0468D62BDC73C82073CE5E6BF0D1A93 -DC54F906002DEA32C39C713FAB8EC7342CFDB57485D3E41B7E5067A795D7AD43 -5AA84210EF77C29A319562375A18F2DEF1B0B99A2BD7D5220371078E76DC6D7F -C4D37A486525C5DA69B34A710CC938AC53C17F5E2B1726F0E552F25750E9C1F9 -5BC12260A0B42AF4710852D8537EA7301911AB40D5ADF26C6738DA192B1058D4 -B61FB1A84B12BE4916B85DD6A721BAB7035287AF68EAAB8B0D5AEF45F25E1E15 -04E9C921235D33AE59996DA03B46A81EE6BFEE517E55F54FE65F509DD7F230DB -67D4E212757C099E6DF94E27EEA41B54CBE7EEDE78594A07C86AF80957A4C241 -67F5F5E04B0D190FEEA47562E98351B67AB35C513649FC7177C5EDD9BEDA8416 -B112E0A8C28A45CF9A05C6BFD9A09313413245F9D797CDB56E402EEF05C88A61 -9E5108353115F1415FF014E1E9A3CAD6103926BD42945BE01D8EDF875A95AF4C -E5DB8A4DF4B25E7D25C3BF4CE69C171D21972619EB8DFBCADBEAF4201D299AB3 -FC79BE62A2E850F4FBCF04776398AA2769 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F -21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 -06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF -55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 -B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 -0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 -1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 -7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A -7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 -356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B -19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 -C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F -244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B -AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 -592943209E846E55B4CB54F6658CBA3C0B29796D69D0435D5431ABECF3448C15 -98CA2F36F3659E29AEB79355EC2ADF835CF0886C21B766B9DEBC3950B5B3B496 -2E06D980A8C60305B273232D4604F12632FB4F1B2F9703952C823C098543AED1 -CFB4ECF259A11985F0C944A57B5AFD853374FCF12305601200C2A393E2FC77FD -F78C2BEB83AB223A89D9E231D1BB561CE1F4D3312049F31CD544C39354493803 -D47CF45482054818E8621801A97461EC7BF53C6AF1C38AC90B38342D51C4615C -59D45B92606D0479F43149F2579DEF5A20B4D7D10528E9750ADFC4C7DDD73DA8 -432297E60ABBB72A637231049425393426F66BFC0851FE504E589F13351187A9 -D784ACC207B1F46537BAA5F2EBF637EB8DFD9D24982E2631F6D3A2DA47B4E9EA -0C899DEF82A7DEB0ACDCE6043F36CE1F74BF1B00A1EE0765F497A67B95BE1871 -A8B3263B03D41ED8BD6B03CA5983912E094E2AE47DFDBF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBXTI10 -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF -E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 -BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 -3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 -F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 -C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E -BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 -2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 -879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D -141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF -63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 -4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B -FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD -395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 -82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 -763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 -165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E -57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED -E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 -178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A -4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A -CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 -890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A -7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE -82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 -82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 -C627A8BFEF75B4DEFAF34B44B356A516B765AFCDD3F5475B1F928731D09D2170 -B97E40F12CCEDF4F6BB3756C4734F6E98D74B7E942A954B1BAAB83D4AD727FF6 -DF6DC50B2223BCB5568A73A112E4860AD490554E64E780073FF3399CB4688D33 -9E8829667CD6EAEF25E0C7D2D44F2BBFA40E999325F9561514844221B50BC8FC -4C7AD68CA7220D69125C2AF06849A3E068D18733276F0C0A6A2936D3C2C87CDE -59CD1AF148C44F85784A5DAD569F5FF53C061056C067CE29AEF1E3BD1FD8B0B8 -71A0A638CDAC6AEEDBD5337D4683C084BB60B1859E600F59CB4E19C5FC5C6327 -EC544A68134496A9BD0B87D83AF6FDA3CB62FBF0B54FACE1F0E6A2D84B467AFF -0F62DB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 -0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD -F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 -3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 -A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 -5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A -45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625 -0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF -F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078 -3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E -E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9 -3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64 -293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5 -9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139 -6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639 -3FB39C1F05FF8F31D2DEF37BB9B883334F51EA1243332FE1E3FC91864C8AEA79 -16A726F924AFD84F2F4215FB795FC41DCFFC835C90B9E31D291E47AA4BB8C05C -620F69DF31E91A0FBA8E217CDBFAD7C4D480EBC1EB396029CDE615C227A367AD -72834BA95539D39A38EA0CA3CF7F1123F70792CF315BAAA38BBCB6DFA80B4493 -5025F33C3696DAD6A0ADF584C71BCB1D29E523EA4B81FFCE15F3204022BBBEA0 -A9483EE8EAC07D581162672A0D66199174821ABD097561A263C0C0F24066FBE6 -0951F31FBBF2675141F3FB4457CC2A94A40191EA0AB2A606CF540BBB8887B6DE -715EDB1041EBB9D05D0F4A4672F534397B9529EF8743BE88BBA10C81E0A46259 -2F2AA7B638E20C9C8A3A827977AB58ABF7525BE15DB66CE8E9B81457552073B5 -85DF3FA70B5231C447C5724E14730B90FA35ED1B5723036F1658CA8E19EF5A6D -D333B78E91E4D7032EFBFD40A5A2269B0DFD9F7C3438DB58F94B507EB93032F9 -99E5F15D9F5D8CB031BBBFBCA8A15A617ACEDDE70DD9C2D9EE21179FB17AD913 -B4BF577A9046994689D1BC6A6985FF5F5A67D699C2FD288FD9E5BCAD5453EEC5 -68287BD7B8872726C28CD288B4DED2246B843577173450B6E5760852CF2E1727 -01FDB0FFFBE12CA13ACF6434AEF4B59EFF3E0DB1E87D35075B1D55AC12633167 -5A83A39056C077EAE6F2F7D1DDED300BA43830B8034F0A6AEC562D3023270601 -6C594D0359DF6F230F7B80B54EBAE4880AF338956B813E3B8DB8BC778BE0F612 -7D84939C2878B43EAA45BF10E257F22C28C2C148FF48843D2B52626148E3CAA7 -4527B9F246C17BDE21C6E7EAB4906BB6D9E84906CD1832C4BD9E405AFFE33AA2 -AE086C25EA26BC23D68986639366B99C87359915EBB76D7162AA667ADE4954D0 -B1E18027FAC2468CB2FEA2568E23DBC201E9B6A1151FBF21129A088D89E3E728 -28B2785C1A8B2637F368A93EAB459F80506435BE23A85396969E2AC4E0D6E4B0 -8B12EACD150049EF8942C108B96843159D4408424394B33603F565D1622FCB78 -00330551E05952C8D01D6B77BDF9B395EEC38BA6CF29DA605BA159C93AA7CFC1 -86D03DDEA1C88962B558766182851A4B4E5DA0EC868B177BDA6D3FB0B8E901BD -9FF2F5BC9D4D2737DDF8C96559C4A0E7578726726F1709A09C2E420823F6B53A -9B44DE1FFAFC6E105C887050309530B59A11B6B71475427DC210181D49A49CD5 -C620EE0BCC09A206C90E2894669EC12E5927870FF50E0849E2E2B7885D7C204A -28918B5EF93F7D8A5FE47AD4190DF3348B1E9B7F372E376699F727D6DAC59D6F -562A989175F66D55F099E3621FC212AB6C2EEDF6B6321DAA777734BBC90BA04E -0F6C6546D02C02EC0D6CFEFDAA29F3728AC9C94815A94B609AD7EB2AA24EFE23 -954E82008CE6F53FAE7234423348A6E94CF6E22F4AF3E332D702A195B0D36477 -DADF48F6A003463FBB6DC396DD72DBC3F007ED7DF4A432BCBB12867B04467939 -0D1BF98DC45ECABBD047397F91027FA81ECF39907B70095A28FA750E8CBA9348 -EF74CA986897122F5E1DF25347790569B3207167EE79141C01E6D567F7199BE7 -0522AE7C432AA161A83811AC478D8F55D730B96B1D4BB2F50DF5FA4E9C16F95A -155200B9B406526D05C1A33EA1B6D3ED723E852FCEEA4D77872860FBC2BB998F -E5EF409C708C5F1497B01BD632C41B63F491BA9D96F12F8F397C3C0E4A46BA36 -33A9CF5CEE2CAA55ACF3823A120893D3FF5554DE1B1F5EBC33B3DF5194275847 -EA8C2BC55B285B393B00F66A3F171A21F1DD6CD8E71C4D93ACB3EE9F8B530957 -DD74644B5163AEFFCCE992338E406CFCCC23E9FB1FE2B4987FAFEE49D7F2A947 -BEC88F6B8F6770D5598191EEAF87737A69A0CFECEBB3CABC19AF1E67F331B5F5 -7C4076FEA887C44A74EDB7DAE9BE5BC0E25B52825E166E3FFE29F8D9E6912BCA -029AA5CEE2EEE1EE3848A6DE34D86CA3903E11A5FA8EA60C65FFF56091F76F4B -540C5B437E522A354441E3D5444DC27EFBB63CDA3959622B2329E8C7E5703703 -CE384B9DD89DA4A3D97AE8C0FCE182C7387B37190099014399C8F94EAE897528 -3B52B591725E32EC9CC263603990A2C94C85C979169F31A1B47AB0FD00AE3C60 -046229CEBD812151B0B1651DC705466099F64A88764D40B4E7DBFE5361FAD73D -29291E83D53F0B7DE595EF311E7EBE0FD3B9953DEAF8E33F571764C8D7ABB362 -FD9632E010F7129DF91AB58C0F9B72562F686DA51BDE657E68CAB6C5CC316C29 -ADAC2F00B63E62F67D28F8D2CF73279A0BF964B9FC9085CB93CCCD7B793690CD -6F1E19275CCE6299EB3089F1EF286473228191FB5DE46966262CDD0001CB25F6 -32FC206CB3AC71BF17F39A634809A503D2D72AF48B084CB7848A586923DE34BE -9D90BE94E1D2F1217DF47FD55D3DF4679BD6BB63776F4DD2EB74D25ED7ACD07B -5261A26615B8C46B08880D3D042E78DCFE83238017FB57BB0B11AC08708FA18B -AC3C645F2DE6E0825BBE507CCDAD2EB5A66D1C9B1A4EA1C22E9A186A4D266625 -F65E2E4956D78F2FF5C6E07D79A7701CBC6DBA6D7B370F2CB1D8DF7FC5C217EF -903579058F26B251ECFEB873093DB1E67D2DCD3087A28D9F056E750C276DE42A -97C2393EC37B70D21B2415D754911BCC6B361A16E6DC0BC7CE89762BB1CF8F07 -4464571FCAB29F29BF5D3E4245DF60164E657F37C0809972103FA09663F397B0 -15FD59BAF59AD8314118BFBEA0A42F8C99B5A376AD009E3834677F0D74321F6D -7816F94F6E66C56DBBF0F16721ED8BDFF9CECCE7DA91EC3FD945FD98EEC90C85 -0EB836966EFB6233538C28B222FB9752C3364C6EC347165EA2E18C2EC4FE32BB -27B158CA196E4078FE6A01FC09DB419B0CBB6585518628312D53C471CEF69E68 -48F22A64CCF75DA2EE5C624A118EB52F4D8775228922B65E9A9D9108D2CF4B1B -696EEDFBAB4A917179089C29D892DE323E983FEEC70E57D071E186021CE9602B -EF326A933BD677A4E1CF275D78CFE1E9F0B94F8BFBE06920F605BB31CCD8C5DD -F730870BBD567D53AFE3526C589B68A68875A0F6DB65F7BDD5D722047C7B0CCC -229D27C0E2B56E47C95C8FC174B08BC1853ED8C1A9D91DA9D0CFE9FA049D77C8 -D27E017C8EAF54C7EBCBA32F7DD3FB44844A57C4E06305F4C9B64B7BFAB4D7AE -BED0EC1C3C3593BD768DC1E820A7265B9FA826A7295BC81E2AAFE420FEF720DE -FFDEA87CE4E58CA40ABE280ED790F00D39232538C0C59708098463D602D93BFC -C02F709EA3E033C76D7C1EF396083E2FD93AF713FF79D6F8181D8D7A7473EEEA -4897AA7C68F2D33BB963F91F46E36A40E6FAFB67D1C65E03FF42BB53612E8DBA -2E17AEE373E5409D732947D75FB2DB6AF863D96393B4072187AAEB720DEE98EB -7CF0B0B631F7AA75D26B451C6D5E559DF79D44C614F9ABC3A78A68B1392180B0 -04622765735BE5BD54600A612B09076D975F46E11E8C7A1CA41C318A627E7AF0 -6DB96ED1E9E550078CF180B09AFA5E94ECFFA4C6826454A3D4E1C580E728EA4D -7963BC6EB15FDB223DB7162D817EE33F3682D7BCF2A943616838B9EA417B8976 -F4070366DFF22019265C30BB251DBF0975ACF5FF73AE1D7C39FFC9269775DE33 -EAA2E3AC5E180D5B4262323782879EA4DA51516E607893B4DF1A13B9366C710B -855BF8354095A722A0E8C8482716C950A855C1EC6A148EF354417D28DFA07126 -711D2588BB27D8AA4E0456E02BF8B51B7D253C60C01FF59AC57DB5C8CE4EC7D5 -2C4DA1257EDADC8F7FA3D0FC93ECD2832671C2A55C05DB5AA7F312B3A6C34973 -FA0928A452DC18D9CAAD07DE7D80867A40129AFD28EDD3249991FA538896058B -FCEA5768DC046796EC6CAC9036FAB816DEAF1FCEE746B2EC3D8855DA0A0D1EFF -D349151B13F85A32CF849F8FDDAC29D517F68E212E5596F1212261B23ACA33A5 -31D745FB4FEB3F54BFD666AC661D9F87B8563BBDD0B86FFBA9A629CEF10FC074 -B8E22F40C62E1E51280646655B7362AFBE6549DB21148F694F569FB2610A6441 -2B43F73766D0C8887DCCF6B89F25BB85E94D59E4FD7C48787CBE33BFB15C83B6 -E3C4BAB8903D16B544CC5AFACC08F89D7E312C1DFDFB3361119C21FE80F4C4D3 -3224FDDE9062885B67CBBF4A736AA7B20CFD9828C74ABA7EFE4E66D403483C6D -C244C5DCBE07A2829F2C1E49C30DFCFFC34A847442163279DF034255EC660EE5 -B664F09F9561DE4D8AAC4484A48062972F5FB76436D5FC1A3EC9A54D7DD3DC46 -53037E1009062463D084E9131E605F26E8877D5E36900C099AC5E5A8A82863A5 -C4FF988F1F54DC3E97BB2A680F8ED58F76442B4AE9232CC5E9839AEB31824C5E -B63F8881AAA55648D0141351DECEB681877FEBA16B59B760596F3A53B4928EB5 -F0FA3F6EE26849DE99907D71A942F9F13D0F6F6B2C77543938339A064ED2B1CF -C0C4D420D72523582AAC915D9FEF0518951222BF71EF72F0E46EBB68A19C9644 -11A27BF23958169529DC8A2AD216DD89D89FF47E767998C03AC3F85861E94128 -972FE775F64D78DC156B8910552D4CC2CB533A18DB2D0FFF3BD8ED38EF27CC88 -93281D84BF82CC469A89EA63DBF00BEB03F6DEA03D19D1E477B04587E3558B38 -F837D4479ABA7F16966CEA01E54C70678FEF81258481FB448D0DF5A68711E0C1 -261996A25B77AEC76809B1E43FF01D4197FBAFF47D16B1F2CF805F594A0A633F -FC91B5AACEB32A162AB522A490C3DBF0A4CA85BF29EE489BAAAF9EB8DAA04498 -711C19FC9308D517CCCAA224B31596706BD9402B94CFE5D618B742CE1A418E7D -7F3222AC04B6A511CBD90BDF5CC9E47E3963C97C5BA77A71A5B05CED9E86CB2E -5D77AC74F5F7C41D8D957C881321BC6AD6EDC45F022D4B9981B361CC8BD83475 -1691EC11496800BF5051A97F95A8A723CD352A04BE99E57FB04B4974B32D3BE4 -656CB075C80EE9790F06F9EF05EC8440456A01584A56DB18BBCAC48AB3D02B70 -2900A908465DE2225DDEED8CD32A9A80D671CAAE386F73EEB7BCF90D27028978 -FDC638E7CC6E0CB90230AB5E3AD3AA06476A9F7703DEC2967E80F0D9E94A1936 -6CC8FBE9A446EBE6B31A8DF89ADA1187B89C7CCB051369E6626F718A297371F8 -6081FF9B597F4B13D0AA792B0849633CF72D82CB7269AF97B999769031CCD1B2 -8E4F037259F08E7D6B2D820F5F65F8AAE7EC0983377B883B16DAA9613C960D61 -67C6B7AD02C62CBA505F6B26C9CD43D3E2E82FAB30DDD3929CD7206DEBB0F9AF -84FECCB93ECF13878368D1A3D4141C67513A50C16D5CDB20EF2D1CC293928069 -D2C02E28C363A3E2F13C14901C3AEEBBF4019135AFAC3E5065351E0EA91FD39F -03AFF76D68AB384C754BEA597CC5C148A29EED791D4370D999EAC2F54ECCD572 -C67AFADD474D5973907A843D0DE7107E5C14A0271126A66933CBA0A62B6686B7 -BD075C03B8B36181C9FD2DE1AAF841E66CEA8B706C84F14B45DB5C966AC1CBE8 -AB9F51330510A6C24257772A63E9FE0108ADB557C7AE17C89F57DC38BF81C482 -3292DC03EA0E2033AFDC75681B975BD55A7F89DBBD0ACA11AD6F4381F6204289 -3C0628C3938E3E533F2757713D047834D2F74BBEC8D29847D3C4C062206C3BA9 -7C005CD4F4119491EEE3370D1FB4FC349CBA44647AA72B10DCE0335C832BA484 -5B963674F092DA2BE6E19462482D31F77B1C69BC819CCE14B4413957964189CE -98FE7560C575C007FCF6D8B9DE8C742C76294D8662583560E1694F609DFFC7BB -0B18D9E7354A1204F4A2E58F7031D7FFDB60EC974451CB657356CB1D9CBF65AB -4D91F275DFEA4D49EC1DD476BF4AD8B33778CBA59456A3C89F1530234A5035BB -3E36AFA409954B1451BE27E6A73052419B1FA2BF4C880FD664C0CA486B8BC414 -AB5F5DF1AC760079FF643D4AA1E9C044502C7D34F625771F6C6699B1CC4758F5 -B041EEB19E919155F5444F1E2A3C8104E80D18FAB1CDAE66474129E792CA285F -2096BC90DD37B394293E799031126C9BB7D1F436EB7B2695CC8132FD95CBABE9 -573A56FB129A97458CEC07683315ED4DFAF84033ECDD7FA77E000D36256C4C5A -A8E61878065D555C9C6D085118D20E0E0B211000725D48AC785CF52EECEE0B83 -EBDE306E95B03448E68A65E89CF66E605D68A51587B46EE39AC733FD7DE618C3 -DA6FE3243753645256EBCE05029587EF9505240E07CBCDFC7E976F9183E3CA28 -A1157AE7D0C201360A1BCF23798B243814ADEC4B617D064ECDACDE6D673360E0 -F3B9A166F61345BD6D85AC42D251E4ACFA83BA7990424DF293234CCE443B5FB9 -E25FC59D2EFB5A240913BD1D1D950B1983562A9BF18474F3AD6FD1FB110F1E5F -CA22B56AC544DC576FFD31A6E3092C2AE4E14F742A349D7C51EAF98364A9B1DB -B259D6FC5BA5BF9286F31026A7CBDCAAEC5B3869554A05171CC648504FA3D782 -21DE731F39017B40076846129FB8D25A47851BBBD03645AFA43104A66E07A167 -94E19867E8C016ECF70C24D593815DA93752E2E84B96C3C8ACADEF7A933BC57E -3FF6BE85807C13FA68327F991071CD6F2B5767CEBBA75B4966FBFF4843ACD1DD -28995BB456C8D4836A7B5395CE5134CC447C4695356335D6164F235160BEDEFF -90E431DF6D10F9CA3B0968FEE23AFFC04933F8D1F8B5640FE34848A672C35076 -F4588C04A916005362958DB33E2DE22DBCFAF495E46CC5A5E4FE607ED07CEAEE -BB7A5F523F5B88C6BD54C73D6805EC51E80F5876EBCC353DF1C0893A37F02B87 -C03ED3439ADCD2EBDB3FABA6358E7F9225238A56541C9D8B285E07EC6B92A4D7 -38BBD0FFCBEB36123FF69945B0C59C053A51841DB7DE08918D27DF0C9547E2A4 -5C6B72878148DE3C0E120C5D6C3F82B708E9CD2908B8076AF772FB050EEAAA30 -129D7EB87BCF3F693E1328FA94CA0263F14EFD722C58A9B87E761D947A920779 -63257BA269148683377E55FE27F99413D48899F7B952492FCE667183DBABBABD -CD2716B316DE06E606D4E6DC654B137AFD56C90FE8E6C72C91028A83583FBEB1 -33A129ECAF6849EBCB9AD7A8DFDFD32BB4486E150D6F4D1381C07F4686BE6A8E -C297DA3FE9443943D5C8C419AB5A3ED919E0B22C4A45F1E61BD33EFD1BBB609F -15DB256670C85432A1F190054303003128643C25213C9C988E344AA219E36945 -2201D049084234E69BA29543860A0F1930E6BFF21305F847245440EDFAF8CFC0 -5C8E01B35929206FEE61707DCF115517577B6CAF6ADE359D2935550941CB741B -9F15C25EEE1214A2796FF5E13B9018E3618D41F6B3A3F90728F318EDE7058E3F -89B073A9E70E15FD9DDCA998B8D07B802478CB5289348F46C68173A32D9B0B46 -DC560471B8A48F652E942E78F520AB36B13F8B1F8361617D9DE4E639B85FEF10 -E81A944EB5AE91BE8F58D22F9236ACD43B0B00088C747CBC10890E8440E025FF -8F9B489B9F7B7BDB911591792940C6ADD30E247280122D2045CDDCEFE3E98439 -22D4D75F42DF135C5E341F6BEA914BD45FD29876C3BA23BA910545669F636647 -5F098E7798F2268788B03A0907E653DD766BBFE61BC544D37388D1709A239A28 -1CA12BC80F24E38D40B197B12460798F0C9A4EBBC80F0EA9EF5858DBE81B57B1 -FD7006635215E7F985BCDE7A59009D9A3EA2D95ED2A8369782BB1DEB1E033244 -C16FB707E95EA293593A4271EC372835E2FBAEC067160B3CC7D31692110B9523 -39CCB82C6F7CC74B0D6F789ADC5248D01D5F1E82BBEEF82B9993622CAD459BFF -5EAAB41982FFCA324227779F869A76D157DBAB2C70D8C371FAD498D5A22ADC12 -5A093E7BB63E6918EC5090F1AF9D39C9B68FFF5C4B88A8E864F96EED5564BD91 -8F407BDF6318E2EC6D850092E6103FAAFCFD450AD5094E23BA68C2CF181D2CFA -6392A5A15415A309371E3FD98772E2534D5B214726FE42E24DB99986F20B8B6B -BCB57650B4504DF9C107FCC4E695A2E8A2DDE5DC5A05A26AFB33712F8AC2E517 -3202ABFB245EF5BFF4C5D7C3C0280D688C0CA04DC283E178233023D9C97021FD -336DBD040048EE3E6A87249F113DC8AE4F203B1AD6D350955D84990A860B23F6 -B8968F0B68DACB0BA456F26723DD9B87CA4C128276844BADF062539FD19311D9 -BAC598ACB475AE2FD8A96510F0DC5C60120A33FE0B6DC34341638EA75184E4BC -F4F681C9464762224A73C22F637D881BD6A01943D5A3D3ADED72551D2124EE38 -987A9BF1B596D8871D8990EF361310FC81CAE28F9E8D9A05F4D432248C7A7E3D -3F211493334182D7A44540E24A6F716E785E4CCB0E31DD2CBF99387DB4ADBCA5 -2A1FF7A0676A58EC6E902D1B9C1D59B3ED82451392F8D93D461005058FEA44CA -DD0FC204958134D67CC2F547B8A1CAE234AA7C789AD515C7331552D59813F306 -49C17C81B6876F43E4161C4C2F51534FD8FD9032A0FC80317B200E8875C2127E -7D4AEE9DF1B81ACE6CE4C4C5A76092E8528DD961CBC9B7C23E853F8627395781 -932AD6C0FCEB397B7550B43E9F12E330DAD88D7AAFDFD36F0473F502E563D66C -CEF6EE1100EDBD2C8B4173CCFB8AE19C8C981EF20D56F693EA5B661B94F61785 -6640112BDFB1559D639BF14DD1EDBC49FEF2FA3E8D61AA9BF0FB545DF8C89048 -F036D83A1AF078099E3EBA246EB8140FC8DF5CB75B0D2F7987AA35CC2BA1CC63 -386F339C0E762A4F4215A3175A4D93322F6C73742B2022AD1524F29F56C32C23 -2FEBF56FEDE4C5883E3C3552B3EBDB777D852558D17C21A5AC4DE320FBA7CE93 -10F4D37C94F6F85C1EFB2FD31BC49F5958142BEEEF277A76865666089FCD68A6 -53C9D945A4D2BD7DC1D532F53D635ED808D3FB0E79890494262B380DFAFB385A -16EC10A1CA5BDA07787BCAB77D9F56FC2B03A1C500226C4DBB7829B875284602 -0DE17A3B52BA701D24CED02C433109983769121182177EB3E5D579A2DAC7E42E -376A65997657D435EF8D5F67101A9C6B6E11A1F1D1D1BCEC3DC37DF1D111CB29 -02D1124747CF0AAAFDC4DF3D6BDD23858C0708AF09D1EE6B8E53B6DECB0EC43E -CFF549F348290E1F53FCBAF6288D614F2DD291E95CD5A80070B0455C422BF31A -B93580FDAC4FBB599A8800984F75170FAB0BBB4790DF4E1B2C087ADA4A15BCAA -06FE319FE4715E721691D3E230C57DCB7B9285FA3C0005BA9806BC9AE55224D5 -F501F1B43A11181B263C9E12B16704A7241B17E680B3B69C0219E2390612A43D -081FEF00A897C6EE3A06F24E24253D4228C7B86F1C13DD9B1791F130B455D833 -11970B10412BC386A5969A00D65DE09BC14D246E40D88B3A066F2C958D2579FF -72FE992616514C8CC5CEF074D1A20B2032C88B14EA66B2A7062D996098CD786A -1112F1E9ACF2B9C47FD7BAFC0078DA49F915BAFD32988D086127969A7069BF98 -02B2D0002CF452500FEE691E042911946874B6D7FE30E7AEC280A0BFAE6DF67B -17623B633107AD4F4868B3DCDC82CFCB098C97A28B9640D8933EE31A875EF639 -B21B9E9D50011B8CE5696241802BD18F9A76F7798F9CDBCDE5A5C6E6C275CED2 -BD1F5A3D1421F14455F363C60EAF0DC65BAB9D5D33DC0BAF346E1EF7CD5B1E11 -061AEE11D0309FDC80F691389312A17DD335496E916BAC06AF60D5E0045B2CD0 -4889A722C581F42AD54D4A9801CB4A50B21A39ECC7A72E9DCE0C8EF26EFECD24 -B70AD3BE3A57A3DFA294C8B35CA9C4103E63B53923B2D9C749D7A75A0159FA9C -D0038ADC336B78CB3D1F63CE7908A69CF18DBA3F503CEF844022CA366AC8CED6 -B1A5C4F4E6276D2D1C03898495707086DD1EA658CDDFA69A5850C4C00F2B4A24 -089AB4B6A91B9018060B20BC8EBA00919EEFE9E845C8376C94AC35E30C140EA2 -9CEA7C0BF0A5ED1C552C2A1458FAC076E8390F88E157DA1DDE5138C773022376 -0E7CBF3F2621E9620CC1A0D4A03835DCF3368293F2B1A820A3DEE998A1FA7AF4 -7DD73D6B790F6DF789FE29906817F21A808A3F96F45F68EA841AD5600456A270 -E6B13F573797942F51F08E26309C3EA859BB4A8284CECEACD522FE6F5236E174 -B244F493518AFDEFFCDEEBB2B272667CE3AE0CAD031EF9C00F01CB740357630E -CCB89A894EED041358CC5E709976D5B5532F775ADC37533CA06D114E689B8E28 -D6B282E9098BA1A0C60D5090F630752A2220BEA561E951FE7B4FA1B4862C2787 -2BA9DF98AB161BC0F71CD8BCBCA4910CE692FC321303892419B6CE1EC8FBB8CE -A01F550638020E1416B638F618F484AED3F0C6F9DB6FF0B5E43808C5A5411141 -BB67E24987386FB84ED503DF168FDF5DD498AA151727AABAF57B9069244E8F1B -315011AFE51D846D6223A6988FECE00B8A871F047A33DC87A3F896E7B7EDC7B1 -9E0198F35AD796C8AA6E65877E9B8364E1B08ED36469D35859C8F8D2144BDDF9 -097A38D8DB6F165023B93DF4CAB8BAF62A002DAB367311FFCEF16A3644C93097 -67E553E015799D4EBFFCE4877FEC09A99EDC169D258F70DEF8B03C99B4DA93C4 -D026C1FD6656B46A2B9BAAD12ECE95CE43E91B02E1C7C17060A083FD6EBCF506 -89D27FEC0201CDCB33224ABEA32CFE73DB2594DC15E8EF564E7B9F66C8C52747 -95A4BBCC0CF3D3FDB5F2CDC4C8B532EFDC4113A63B54500541BD127646FCAE13 -AD58095D2C65182941AA783EFB2C627F2BE24E423C7AE0C323925A4AA124CC85 -A65CEE1F2B9FFB73B977D8D0FE829B649818DFE26667FB3E118EBB24DFE74F12 -EA03099B17C2A498449E935DEA064AF19B32EE8A81934AC4FE2916C70E81DF39 -65B37773E57C0C66D468A860E04852EDC436ADFC0F7F8C9AD6B3BCDACF9E08FB -9A5C159E0B335E080F6F51BDA7F53D1EF45B5EEF8647970D19AE63877147693F -E7C9DD6721CBE6D954A4B784060978BB0C69A8F3FEBE95FF6B48461F7E50DAC8 -236C408E8BF692596EE3D3BAD30D7C90407678594FDCEFBB01C3545DBE5ACE68 -32A7DEE951D5BD1C728EA22990BA511C5240E6AD578D2E8589084E792E2332D0 -F22E1C1C691B9F58D81F999AAD9BB89E16C7A172BBC787D2559A6FD4AF02DF10 -C7621FB38EAF47450633592F350E55D068E248BFA3716666EB2995EAF352838F -6B43C56C6AB4D1ACC51EFDBE3CDDF2707F423BEE10778809468B0B298F4DF228 -DCB3C2FCA77B53749798BFA306E85C6EC23CEB468D07466D00A73FD16F85848B -D4806AE5BEB30E2B9259FDAF28588F6931AD231865526A82CB52CE85F8C4E55B -5422536B5B37A58E5CBE4D082A80565DBF727F78282E5BA118E7EF61DA240A48 -2DF41F320E5B8C16EBE8811E5ADFCEA06F031C5EF40C32A4A8673067F3D05BCD -D12423D695B89FCA8BF9974001E3349C4EAB5E47E0E93AC884BD3900F382DD74 -583553446FF13995555D4335D6A5BAD8A81D9183B3CB4500AEC276234002190A -79F3DB3682974A55AA45B8611E8E4256EBDB74DB1F43BF0954D32293B9E74C5F -3C7576A1DF054E75AC20A0F77C1BD50A92AD0755B7ADEF119A47D9281631C244 -3AEB8745F8B768B6DF18AE893B6C81788EA1F4669A1FE024E9BC91715221DFC5 -01C6F01CFEFFFD670C16ECAA2C21A635341A43F4923BFC4284D71F88533C63E2 -E185E405851DA5A73EC49F6BDDDD1210D90B330A5899D3BC37BF7629700E6C69 -354E61BC87B45477BE4B98C03A8F5360A79E092F5FB7A93D82C94C609C0C5B97 -1CD4BF3CBCF553462BE84671F4E0A4347C7F8C4FC793197AAC17513E15CB7321 -586620A55D501D00120CA1C3855CECDA6BB7C80AD901ACF86EF338C9BD0A3CD5 -C68C7FDCFEEFA3A397C359D91AA1F3B32FC133FD54A7DD6034AB963E8E834A9A -3CBCEC6D3E66B326958EAC8EE6E2992FD36D3F4C104EC7C80A19B80773C6BE99 -5C69EE6DA0B2ADD514B1330A78B7C4FC361C8F7262EC74B22F2285B864266EB3 -4A5951931B6E40635D27D3A95549609241B86F650DE4EA77EC12483ECA2EA912 -1FCB113BAD6D3AD003FF51340043D39ED67A4E3AB48CC8ABAEDE295F9911EEB8 -96F169EBB43F80665D8E2BC62E17BD752FF9FA78642500177B00E1BF8478941A -BAF83ED4D53F13165CBE9B84D537D5D65E1C8768B27812A61DF8BC8232541AAE -77A19209C668E201BC23CFB2C8914437BF3B15CDDF4F65A9AB4A9BC8354900A8 -10B14F217E81324083626E760CCF0B09A8EAAA701749867FF69CD8DF4C0C8229 -43C58016CE1F9649595DE4A8BDEC2D1B06F4B3D4FB0F32055A66FC917A1AA7E3 -B42D9F014EC5831532E4E1AFDD7BE18C9834300D48FF476D2A5D5511D344EB63 -EB6014E883C9ACAC1F79CB671DFB55B0ED4404B555D6C6DEC091EBE5FF5FFCAD -8EF6D6FD105ED2C15BBD3D22F5E2A1CCAAF7C0C102F3E55968C9D7F308B298F2 -042BDA17F4827850B2255927A67D7C77A51F83B869D171A27FC60E622CE3F99D -44403C9572D583BCE449A64289B5A1D24CB3CB9044427DCA7ED653F2470FE275 -B97A890E17777B3A2AC27781125440337A7ED2D49897466B6A3B5348C013B879 -398251E2C69AB29183AA581EE0B9C65B459C7AB5010A9837A500600C2F24F8D8 -F811A719468C3B0AF50EA90CC7E39488E95EE556A5E77438C43F757FF92BA2BB -5006340D06139608D9A6A38BD61E61FEE01277BA739E835FD453575CA1B5995C -5A50B617B127CD0D03980919C0CEF8BE085808585CC7B8EFE1CF7F002593D677 -6D83A5E09EBF5F49BE4EE35047C2BF6E65FB640DD841A00CBE273042B38E2A16 -3D529CF43EF4D3C5A9E03A6499BFCA8D7387EDC499D9B914EFFE78AB2BD08EF9 -B1B7CFA34B522A28A66C28BF1277EA53EC78D599E4A7F8C2F77BA622EAFD6518 -BDE03DB16D00D6A81AB5ED23EB1D83D4E857B07FDEF93C52219B04F87C9738ED -B32CA58800749953696271604A7736605CB8EAA8CC84594A7E5338A4F97E60DF -35172668DAA235EA44404B97E2E010468C08A07AB4E4852C5B9578F07A9DDD58 -6113BBA937088BBDCE82D20DD292E3FB139AE178D3548B66297DA4E1488C340A -225DDF131F6BE565C153A7670174FD9E3F61B87EE3ADDE9C5B2293C004637A1C -62166EEB161C837FFB0730B1645C01C6B192B781F1C4BDEA0A3ED9D98270FD93 -94C1C7FC7361FB15C30BBD45AB78AEA8B8E298D56C48F0DDB6C99EEA94CBCD2F -7D6D3B54E6CBDEC56683D28F613749D516BAB9FE1C2062BB614DDB39D2FADD5B -3111C9763B201E416B9E378C8EC5C99F6ACBE9017E712769D97639CD44E97E4B -AE9CF83D6C92E804B427F6BCE8E662C2E3E0E3848A9FC7164F99603D47F7438E -8BB37377662FFC325E475CD2008CF67DD9D2F5C73FA0673E8156051A34511C3F -357318865F53C486CDDE9257903923B877C457587A5E53162952DD3C803A6D62 -DC22EB72B362DE0580346B1BE72DEBD91B50131C5F68CF4FEADEFB18E379DC8F -9BB6DECE1C15E739EB4500C86896A5BCA045B114C36154F11EC1CB31B4E9A267 -415331B68B92FE68284CDF648A9C3D3EA08E718DBC0EE742FEA192EBA63BD40D -5CE6A2048B564B92CBB411036D66FE76C9FED37602102FF3F89BA7C1ADDBE03E -DE29D86197A79D938200ED3CB988E30EF612D41D964F1F88EAF2BB18CC924A85 -E5993C07BC003C2CCC6747A9FD651523EA3D1A624530F2DB0E3C8720CC399DF4 -8FF3585485C4EA7F3E16F6B3564684BC84CC107C933B4C38B3C23A1B790713DA -BEEE1FE5DA79C93CB84AAF800A68F8AE79FBECAFA01D6AE59AE2234BABFEDF0F -0E8D5473B56C41AAE49C9DCA4EA50B16CBA50A2E92DA0CB5DCF6A917A97277D6 -FA120A7676E9FDF5C768686EBC3268214371FD2FB186968F8A4B61242B4B39C2 -0198BAB835E632DB42974319B5EBD9669342F1F3EC1E49F3AA42461C0182C7C6 -1F0707AB61E448A966698F2D07994CF77A982031466E8778F9BA2C85DD8FE339 -95BDA5FD9DD9E9FFD1E1CF18D3B2F1048E4B0849E92767E83FCA8CA1CE85B9ED -D2F8DA34E13D2A44F6311C4FCA04FF75E1BC9C72041A0AA1DBE45825B9EBDC3E -D234C8FE32CC448B9B8A3AAC6BF131D536A1321D21D0733EF62F3237709B77DE -315D7FB3E52E2AB94AFA14F0C92F699C89DA8278D93DB29DD6D5B390FC9953FA -52630F9E74F340890B299EC8B1A6531BB5D4DE78897FF8EC1215B84B0B30C709 -F4DE3F9BBF8A7240B739D860AA9C159484DFDDD946FC71987C16A105DD44BDF0 -DEBDADBDE3D10A72B4FB3141D262EA5D1090934DFB40B8E2A53A1C817CB8C708 -A101B0907DE55FE007FBBA36FE644B0AE5C28E0385E13B9CF57FCBC7214113A6 -0554115E85A47F8702CA04A05EA149DCA460D872DB78669DBE0951DFE501C2A7 -9056C2A55F432B8E9B13523AFA2DDB569B854446FA5A530B8D2AEAE92588D36D -56012B7C82916AF129712003AE4E8E850EB46227D677832578622FA5A55793FF -6F9439674DE166C9FA586C8877B4A93CB9ECFA21C26A86E1673C7810BA529547 -0934B328E503A49E4CBD88231F29D02EFE40E47D51BD79A027F55107FF4A3BC1 -69A45161A37C9158B595BE3BF540F929F8A29ACED690854B4C4ECB97670CC263 -83E242F32B1B930D5FADC52CB1AB3E0E0117716FBCF419E96BA3799075DA5000 -A8206C5D0AA64476FD80D9EA461A7E5588AB51879AB782D524598B9D1A0C25FC -46BDEBE7AA35D103CB8568FEDCA4A66006ABB0B9E42D3F9FC53DC343B4E56FE3 -382758F171BB4541756071EAB6FFC31518DD1B45C971138D2E6BF0B98045FA2C -8D5E5F1FD28DAA0950A2E2CDBB8803939388D3945A56D8F9E9FC1B3AA2A9A418 -9ACE9E76BAD82AAC330B8F0816F8FAD26CF66489498028D7FBB03889263F6B2E -6B766A11AA56A4F0C719363D168B3873BE6D8922957AE6D57A868CCC9B262946 -F65CE35C3043E3E8B5C6CC40BFCBC30A501E152340CF1EB75C57CC972DA5805E -EA766382478487E412FD33D7EDF9E00926041C7840F4C986AA1CE59F8484F62E -ADBA0F244E32990714EE644D7C8A689DE876F1BC166CD8FE59768D10CBCD2425 -1EFBE57E249C183407261094F6B58AC225F695E7A24508FF270245DD05683E64 -5EEAE9A77C90F327DE9DCB1DB242476F11EAD3F7348A2712CBE05622505A8DC3 -7A5C032629C804047B8D3A2E752BC6D9EC4C930227EA9B27AC28E5B9B515B866 -44B177ED4D46DE42751CE13EE826F98A4B964E3C6295C58E1936F8211CF4B483 -BC74ED74463CF98AF1EB8F50F892DB7F66E64DE51D306DB67E9D158412D5E940 -0BDE560C0B2CB9BA1974EC56979678455A74ABB0E096CADF110E7045B956AC95 -C10278C5FA3720BA56F4F8C0547E526482B40BED3D2B9AAA9B2B625FC249D0D6 -F5338247B706A69C6946547E6820E5E8FB56CD83CA9216A1E5DDEA8EB2F008E1 -9DBE852D06D586271AB7C7CB92C310DC3A26DEABF082CE5777011E77E001AA59 -221E14535634DAC9EEA02841DB7BDD3A1EEBD9D630DBAD037F62B7C151CE666F -51C8911B1E7F57118AAB96F465F4CE7E8AE9ED9E8F91047944342315976E47BF -8ADF6A1266F3FDCE43DE8C2C770DBB2EA74EC55081171A5B5CA88C402BB976DE -A049C29AF9202710BF665C74CDCE4E17F4BAB05A2A0CF1D6141227D792123DF9 -ABB0422CBE1A20DB23C3BFFF699E51F858B35D6B679CF3D7A5DE0142EF0E87AF -8829ABC6AD657D63EE703C1F4F3AE149E9A15C17905C280F6DDDAA2C4CCD0E8F -ED862C0F5484DE9DAC5292E26761BFF8788A03250E3143238CBF09B807A84285 -CEBC78E4A1040FAF5E29CA92CFA0E4C8BCD3517E86153F5759D2D31E86BB5477 -CD853634460A8BAA79828A1A14F93CC950D9A82D63713EE17CC05983461A2FD4 -D6407786E2D46D16DD6A2F64CCEBAA695649967AD1797AA909F10019C4CC6D2B -2BF595AE4FD5D05DA3B7B8FF7981E8BA041CFA32998CB7C717783D35802E4872 -3BD9CF2B9F10F0D76BDE330C0B4CB59343411BD03A40682E86CAA27636D5807C -D2E2C6564A4391496EEAF2FCBA8425CC4B34BB93C01D8B2D8E887603D531E84C -C7E2675C3E633D28001FBBD8B6D812CE0AFB3CFB9001385B51DE42D0A82154DE -07195A6CC8914489C3435A7E7885B8497F66E9A404C0BFFCB4E424305A549135 -9DC544B4015BFA1D360E846260DDC0F6DB49C00A3074144A03A5A3D972D397F7 -D61B428A618151C0A10CDCB1514AA0F065B83149016465438DB8CEC4A0B74F21 -DBADB5CD37533E482BF0A59916E5996462E83F405F518E302BBD63C7E543A200 -51634BA387AADD4C10F6A95C86E434E1FB93DB9AE8FD55951AA338E0B58978D9 -B66321DF92C10C83B76449C42B6EBD7F5421D1DAD4935FEDD019B5996CD179BB -75CB30BBD4E3E4C26D42CC21A741189E4707176CC0C6767EE886E5B88B3D3582 -2B52528B62990E6400F4E584B15611B2E9A7D2684454B8379225C6A6B9490EE2 -C88B9727FE6FE59FD0B9408CB4C4824F8214DE015DB3C935BBA4F250840BA928 -B89A03C4F3B4237551CB69D04B3AE08FE4C86171D305665C6F26DC457FCD2665 -D27801BFE49394D690CB6B5B00BAE77B3841A660E8697EA0190B3ABA01CE132E -7BB3309686CE6007D322B1CD44CFC025F2B32284DFD5AC1C907DABAA840F13CE -823CE3CF8EA3D397BA9BDFBFA2DA4DFEF2EC1ED5B3614EEB9C22587D7B0D0D74 -997144A082426B0BA78C4A6989CE4C1160370CB0F4AF3E8D48CACBB05F4F2594 -EE00090A25625EE644820271401DFA4FB2A779890F24F70C091786ADEFD54000 -46D94B45562AF88A7813569805945A3DEEE0099D7DEEF04BD07AECE5127F4F8E -F30B0A7DF29535D48310B57204FF1814897B55729540B321BBEC4D2157DA22DF -8E10633D2EFD3C63B473D532F0AFD8D8923EE2164DE6AB4DF537219944D4ACD3 -C9F08A3359111DF6FF662C82059C550535911B7212FA8A1FC1269DB40501D2DB -3F11383CA84651BD0B18F1668F66B25E15978A424B42B5B44C53102BB9867E4B -F4DABFD8EBB06FE75FFE8B35BC319542B1B6135AE93997C567CC25F9969AD517 -4C9EC354E3AD7CDD9E3B15E802DBC1170599E45329E7D7FBB01F1B70F8F336D3 -5243E9DA91DDBFF2DB37E6D1790E0AB61B124C8DA9CC011CFFB0C16D57C8F935 -386E9E9016B2ED0AC95508CE6FD54E95D44D14DE4EFA77E00B8D51DBF58DAE0E -EF1F050F120CF510823F90311415236B5430FE0A1A2CEABB91B01B2F3CD6BFF7 -7F523DEB2A545E62CA65E6AA2CDA21DB273D238B2A319647769E30FC81E5D975 -4886B129F6541181E631F94B11A99D7ADB2EB9BC0E63FA77C169CBE57E8D6FCF -6CDCF6E0AC94F69295F47821352D2A90647F206B8BAB9410F0DBF4DD6143138C -8F97959418D9B0C886777401924A948778B0EBBFEA50CF045F8D117714DDF7AB -44B77A17A69ECA11FC0631D2B73F2C3DBBC690F0848616EC779A3581AAC18BF4 -66E81DA60ED8618CC4DD5550681DF0F0E2A535E0E5F1338E10486C7AFB237093 -1B130D98EAD1077DF16DE506D1181BE6C4B0A71DFFDD2CE49E58D21924195821 -A667A4A237702BBF3EBE714232A1AF00BD9C4FFDDF86E62B6DD50BB3BC1AD5B0 -D5F9AD86689D9148AB899003B3AAAAA186CF92C4CC6FF37BD72A14A68A7ED3D2 -8BCDCF291FC8197EBB03E1F892631006CCD3ADD184DFCAEF37CC4E47925E71CE -5073C16851A4A042BBC81A8632296CEF049811FAF6D1399E5D827CFA7D3F1208 -A50984CFD55ED7F3821E2F4BA985A2EA207943485F0B5BEAFD4F012957D2D708 -C5152259B8530578A8A7E0C005E82F193900882F61B22675AE940DA9CD55B2F1 -A8EC1C69B0CF9CE47A6627BC13054CE4D00D92D44187F5B7A6C7D8101903102A -580D69D2DD91958C6F4DD78DE9C2B00D236A891CFB2C7D3A242DC0F1CF6555A7 -8CF6DC94B93472738758A358A67CB88C84F30AC5DF55448237F2B73974619A62 -81DD7B1F524743879D3CB0800BA9A3CBC1CFE2B40134BBEF838BAA25B861E4EF -E05428DE02E4608A24E468514394266AE4F3978E0F78E4689939331974B22AD9 -A7ED4CE0D140984F4C30EA38E11960DA525BCB57855FEE8109E77ED123803AC8 -A3AF0275BC5C8E9A77E182C10975EE99AADAF9ADED8BB121D11BF2E8A4E99510 -78D8E8F0BA4A41A3B95E961C1350FBB0803F18384B223CDA16005A9F17E88AD8 -EEB6CEE1D3F6FFB14C0EB982A99B3D88E42CF860E015F378DA89D432080616B7 -B59C053200D6A135D2D931B80C6570E87F3725E4A447A99F40F226DDDFA4F94F -C4E2D8E6AAB62E4ABABC0600154F2C537138FB0677B5EC2260D7018870315E0F -7DE3FB600537DE5D5412A25E08D5CDD2D6296C8EE0FC46E770A7CC967210A64F -AB9FA013369CDFFF0D32286D8C79AED8F36DCEB2170B8ACE3F5412AF0B3912BA -B1ACE2985983D388E0C676C81E329B9B11D6BBA66F580A74162AF6A322A3E696 -FE25676B87BF50A91FE0776E4FE061B46F49650DC7182732A6B0960E754B878E -D5BD037C79EA9D7351166A2592AA94479FC1FDCB2E1BBCB6C05A2DBE29543AA2 -64C64A7DAE4A0B8C1987463EDEC83EA9E970DAD0FBEBECD47B1DC23198C5592C -AF2BDC00A08D42C8D05FDC59F4ACD3555927C70BE903D05C6514C223458B064A -FE25BFB8944878B78C0D816E89F04FF0F040838EFE2D958565F3FA3B5E8A8474 -23635E65D85170F3950BAC5F8C2E37924AD59B23090AFBC30F7F7014D13721BB -064211D5AF389C58673F562E73C7A7BCC25E232FFF01C555B58AA5BCEBDA898C -D4ADF8463759574879827CB6232875B9FCA5E1BA2FD426BAC550C2EC8309D1E0 -69D4ACA702C1312D22A141505F79DFE0316DB918F4A1D0753658D679AA071189 -3C6D0D5CDF8D322D2966AC66CCE5268EAB3CAC8B0C2DBF3CB60F03B282585D23 -F93703F0394FAF77344685A86EDA35E1CEB43243B002BD29CAF512F2B16ED359 -36EF8A8B249A53F5204EA8F9E18660C69585BDFA02CF4FB56A3FC3676041FC29 -0857A261D87DA78D9D84B9FE65BFCB7FB98183B987F43298A8C9E87B26B257E1 -82206711EDFF4347ED4A7540EEF397FE5F2EEE19FA3E09458554624E18455FC7 -8CF42E439E3944EB0ADC032EC00011926633513376EB46726AEE12A0F1B7FBEB -1EB593651D32C27A4A4A07CC1FDF1BF1A9164B673BADACD5FD5C46BCC1AC45B3 -C3A7D76F2106AE8FDDB52B15652126DEF8BD87200C129FDAC00352688727709A -7DE7EC08BCA9E736E87FDBF6ADCBFE1F62BFBE9EA4A0D7E87BDFA0EE2C29110D -51B49E36BBCF76EC9F0DAF975938656DC73DEC3D909346BC09BACA2FFE357692 -DA3F60DF14CFDDBB82331A8B22CCAC3987A0F485B8BFE11CF371BE600B60C175 -AA2EC00826A07F068F31FF21B8B5BB5DD3AB729E5EDD2355C7E654984B50E668 -08BE76D12DF93632EC1018E1D558592F3E85BE2737A2D5C13DE23021715FC1CA -E332FCFDCE37333888533833BFEE6525BB9BEE05 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (history.dvi) -@start /Fa 209[24 46[{ TeX74afc74cEncoding ReEncodeFont }1 -74.7198 /CMTI9 rf /Fb 134[41 41 1[41 43 30 30 30 1[43 -38 43 64 3[21 43 38 1[34 43 34 1[38 11[58 1[43 4[58 1[48 -3[58 60 50 1[59 10[38 38 38 38 2[38 1[38 38 3[21 44[{ - TeXf7b6d320Encoding ReEncodeFont }34 74.7198 /CMR9 rf -/Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39 -97[{ TeX09fbbfacEncoding ReEncodeFont }13 74.7198 /CMSLTT10 -rf /Fd 130[39 39 39 39 39 39 39 39 39 39 39 39 39 39 -39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 1[39 -39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39 39 39 -39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 1[39 39 -39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 33[{ - TeX09fbbfacEncoding ReEncodeFont }76 74.7198 /CMTT9 -rf /Fe 214[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }2 -90.9091 /CMSS10 rf /Ff 133[51 60 60 83 60 64 45 45 47 -60 64 57 64 95 32 60 1[32 64 57 35 53 64 51 64 56 83[64 -64 12[{ TeXf7b6d320Encoding ReEncodeFont }27 99.6264 -/CMBX10 rf /Fg 137[52 52 52 52 52 2[52 52 52 52 2[52 -52 1[52 52 52 52 52 52 1[52 5[52 4[52 52 52 2[52 52 4[52 -52 2[52 3[52 22[52 42[{ TeX09fbbfacEncoding ReEncodeFont }29 -99.6264 /CMTT10 rf /Fh 134[48 48 48 1[48 48 48 48 2[48 -48 1[48 2[48 1[48 48 48 48 49[48 48 49[{ - TeX09fbbfacEncoding ReEncodeFont }17 90.9091 /CMSLTT10 -rf /Fi 133[55 65 65 89 65 68 48 48 50 1[68 61 68 102 -34 2[34 68 61 37 56 68 55 68 60 9[127 1[94 1[68 4[96 -116 74 2[46 96 1[77 81 94 2[93 6[34 2[61 61 61 61 61 -61 61 2[34 33[68 12[{ TeXf7b6d320Encoding ReEncodeFont }45 -109.091 /CMBX12 rf /Fj 134[48 48 66 48 51 35 36 36 48 -51 45 51 76 25 2[25 51 45 28 40 51 40 1[45 3[25 1[25 -40[45 45 6[45 29[51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }29 -90.9091 /CMSL10 rf /Fk 135[56 2[56 54 42 2[51 1[56 68 -47 1[39 27 56 58 49 1[57 54 1[56 97[{ TeX0ef0afcaEncoding ReEncodeFont } -16 90.9091 /CMCSC10 rf /Fl 209[28 46[{ - TeX74afc74cEncoding ReEncodeFont }1 90.9091 /CMTI10 -rf /Fm 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 -119.552 /CMBXTI10 rf /Fn 134[85 85 117 85 90 63 64 66 -1[90 81 90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 -124 112 3[110 1[126 153 3[60 126 127 101 2[117 115 122 -14[81 81 49[{ TeXf7b6d320Encoding ReEncodeFont }37 143.462 -/CMBX12 rf /Fo 242[91 13[{ TeXbbad153fEncoding ReEncodeFont }1 -90.9091 /CMSY10 rf /Fp 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 102 103 -94 75 100 1[92 1[105 128 81 2[50 105 106 85 88 103 97 -96 102 11[67 67 67 67 67 2[37 1[37 44[{ - TeXf7b6d320Encoding ReEncodeFont }48 119.552 /CMBX12 -rf /Fq 129[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 1[48 48 -48 48 48 1[48 3[48 48 48 48 1[48 48 48 1[48 2[48 48 48 -48 48 48 2[48 1[48 48 48 48 48 48 7[48 48 48 48 48 48 -48 48 48 48 48 1[48 48 48 48 48 48 33[{ - TeX09fbbfacEncoding ReEncodeFont }73 90.9091 /CMTT10 -rf /Fr 131[91 1[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[{ - TeXf7b6d320Encoding ReEncodeFont }81 90.9091 /CMR10 -rf /Fs 134[102 4[75 76 79 2[97 5[54 6[108 94 11[149 6[151 -1[116 3[151 152 71[{ TeXf7b6d320Encoding ReEncodeFont }13 -172.154 /CMBX12 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Fs(GNU)65 b(History)h(Library)p -150 1418 3600 34 v 1420 1515 a Fr(Edition)31 b(5.1-b)s(eta1,)i(for)d -Fq(History)e(Library)h Fr(V)-8 b(ersion)31 b(5.1-b)s(eta1.)3139 -1623 y(No)m(v)m(em)m(b)s(er)g(2005)150 4935 y Fp(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 3024 a Fr(This)31 b(do)s(cumen)m(t)g(describ) -s(es)g(the)g(GNU)h(History)g(library)f(\(v)m(ersion)i(5.1-b)s(eta1,)h -(11)e(No)m(v)m(em)m(b)s(er)h(2005\),)150 3133 y(a)26 -b(programming)g(to)s(ol)h(that)g(pro)m(vides)f(a)g(consisten)m(t)i -(user)d(in)m(terface)i(for)f(recalling)i(lines)e(of)g(previously)150 -3243 y(t)m(yp)s(ed)k(input.)150 3377 y(Cop)m(yrigh)m(t)602 -3374 y(c)577 3377 y Fo(\015)g Fr(1988-2004)k(F)-8 b(ree)32 -b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 3512 -y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d(distribute)h -(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m(vided)f(the)150 -3621 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s(ermission)g(notice)h -(are)g(preserv)m(ed)f(on)h(all)g(copies.)390 3756 y(P)m(ermission)k(is) -h(gran)m(ted)f(to)h(cop)m(y)-8 b(,)38 b(distribute)d(and/or)g(mo)s -(dify)f(this)h(do)s(cumen)m(t)g(under)390 3866 y(the)j(terms)g(of)g -(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 -b(ersion)39 b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 -b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8 -b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28 -b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33 -b(texts)e(b)s(eing)g(\\A)g(GNU)g(Man)m(ual,")h(and)e(with)g(the)h(Bac)m -(k-Co)m(v)m(er)390 4194 y(T)-8 b(exts)33 b(as)g(in)f(\(a\))h(b)s(elo)m -(w.)47 b(A)33 b(cop)m(y)g(of)f(the)h(license)g(is)g(included)e(in)h -(the)h(section)g(en)m(titled)390 4304 y(\\GNU)e(F)-8 -b(ree)32 b(Do)s(cumen)m(tation)g(License.")390 4438 y(\(a\))39 -b(The)f(FSF's)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)39 b(is:)56 -b(\\Y)-8 b(ou)39 b(ha)m(v)m(e)g(freedom)f(to)h(cop)m(y)f(and)g(mo)s -(dify)390 4548 y(this)32 b(GNU)i(Man)m(ual,)g(lik)m(e)g(GNU)f(soft)m(w) -m(are.)49 b(Copies)32 b(published)f(b)m(y)h(the)h(F)-8 -b(ree)34 b(Soft)m(w)m(are)390 4658 y(F)-8 b(oundation)31 -b(raise)g(funds)d(for)j(GNU)g(dev)m(elopmen)m(t.")150 -4902 y(Published)e(b)m(y)h(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation)150 5011 y(59)31 b(T)-8 b(emple)31 b(Place,)h(Suite)e(330,) -150 5121 y(Boston,)i(MA)e(02111-1307)150 5230 y(USA)p -eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fr(i)150 299 y Fn(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fp(1)135 b(Using)45 -b(History)h(In)l(teractiv)l(ely)18 b Fm(.)23 b(.)c(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)63 b Fp(1)449 -778 y Fr(1.1)92 b(History)31 b(Expansion)9 b Fl(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)39 b Fr(1)748 888 y(1.1.1)93 b(Ev)m(en)m(t)31 -b(Designators)25 b Fl(.)15 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)54 b Fr(1)748 997 y(1.1.2)93 b(W)-8 b(ord)30 b(Designators)9 -b Fl(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 -b Fr(1)748 1107 y(1.1.3)93 b(Mo)s(di\014ers)9 b Fl(.)14 -b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) -g(.)g(.)g(.)38 b Fr(2)150 1349 y Fp(2)135 b(Programming)46 -b(with)f(GNU)g(History)33 b Fm(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h -(.)f(.)76 b Fp(5)449 1486 y Fr(2.1)92 b(In)m(tro)s(duction)30 -b(to)h(History)19 b Fl(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)49 b Fr(5)449 1596 y(2.2)92 b(History)31 -b(Storage)25 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fr(5)449 -1705 y(2.3)92 b(History)31 b(F)-8 b(unctions)24 b Fl(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)53 b Fr(6)748 1815 y(2.3.1)93 b(Initializing)32 -b(History)f(and)e(State)j(Managemen)m(t)f Fl(.)15 b(.)g(.)g(.)g(.)g(.)g -(.)59 b Fr(6)748 1924 y(2.3.2)93 b(History)31 b(List)f(Managemen)m(t)h -Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)h(.)f(.)58 b Fr(6)748 2034 y(2.3.3)93 -b(Information)30 b(Ab)s(out)g(the)g(History)h(List)23 -b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)52 -b Fr(7)748 2144 y(2.3.4)93 b(Mo)m(ving)31 b(Around)e(the)i(History)g -(List)21 b Fl(.)15 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)51 b Fr(7)748 2253 y(2.3.5)93 b(Searc)m(hing)30 -b(the)h(History)g(List)15 b Fl(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)44 -b Fr(8)748 2363 y(2.3.6)93 b(Managing)31 b(the)g(History)g(File)11 -b Fl(.)16 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Fr(8)748 2472 y(2.3.7)93 -b(History)31 b(Expansion)18 b Fl(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)48 b Fr(9)449 2582 y(2.4)92 b(History)31 b(V)-8 -b(ariables)11 b Fl(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)40 b Fr(10)449 2692 -y(2.5)92 b(History)31 b(Programming)f(Example)13 b Fl(.)j(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)42 b Fr(11)150 2934 y Fp(App)t(endix)i(A)99 -b(Cop)l(ying)46 b(This)e(Man)l(ual)29 b Fm(.)20 b(.)g(.)f(.)h(.)f(.)g -(.)h(.)f(.)h(.)f(.)74 b Fp(13)449 3071 y Fr(A.1)92 b(GNU)31 -b(F)-8 b(ree)31 b(Do)s(cumen)m(tation)h(License)c Fl(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)56 b Fr(13)748 3181 y(A.1.1)92 b(ADDENDUM:)33 -b(Ho)m(w)e(to)g(use)f(this)g(License)h(for)g(y)m(our)930 -3290 y(do)s(cumen)m(ts)c Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fr(19)150 -3533 y Fp(App)t(endix)44 b(B)105 b(Concept)46 b(Index)16 -b Fm(.)j(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)61 b Fp(21)150 3802 y(App)t(endix)44 b(C)104 b(F)-11 -b(unction)44 b(and)h(V)-11 b(ariable)46 b(Index)13 b -Fm(.)19 b(.)g(.)h(.)f(.)58 b Fp(23)p eop end -%%Page: -2 4 -TeXDict begin -2 3 bop 150 -116 a Fr(ii)2691 b(GNU)31 -b(History)g(Library)p eop end -%%Page: 1 5 -TeXDict begin 1 4 bop 150 -116 a Fr(Chapter)30 b(1:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(1)150 -299 y Fn(1)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)275 -562 y Fr(This)32 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(use)f(the) -g Fk(gnu)g Fr(History)h(Library)e(in)m(teractiv)m(ely)-8 -b(,)37 b(from)c(a)h(user's)150 672 y(standp)s(oin)m(t.)76 -b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 -b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fk(gnu)150 -781 y Fr(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g -(see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150 -891 y(page)31 b(5.)150 1172 y Fp(1.1)68 b(History)46 -b(Expansion)275 1426 y Fr(The)35 b(History)h(library)f(pro)m(vides)h(a) -g(history)f(expansion)h(feature)g(that)g(is)g(similar)g(to)g(the)g -(history)150 1536 y(expansion)22 b(pro)m(vided)f(b)m(y)h -Fq(csh)p Fr(.)37 b(This)22 b(section)h(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)h(manipulate)h(the)f(history)150 1645 y(information.)275 -1789 y(History)31 b(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g -(the)h(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -1899 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) -m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2009 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2153 y(History)37 b(expansion)f(tak)m(es)i -(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g -(determine)g(whic)m(h)f(line)h(from)150 2262 y(the)42 -b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74 -b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150 -2372 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f -(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h -(called)h(the)150 2481 y Fj(ev)m(en)m(t)p Fr(,)e(and)c(the)i(p)s -(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j -(called)g Fj(w)m(ords)p Fr(.)39 b(V)-8 b(arious)28 b -Fj(mo)s(di\014ers)150 2591 y Fr(are)33 b(a)m(v)-5 b(ailable)36 -b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32 -b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150 -2701 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g -(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m -(ord.)150 2810 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m -(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m -(haracter,)150 2920 y(whic)m(h)30 b(is)h(`)p Fq(!)p Fr(')f(b)m(y)g -(default.)150 3163 y Fi(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)275 -3417 y Fr(An)30 b(ev)m(en)m(t)h(designator)h(is)e(a)h(reference)g(to)g -(a)f(command)h(line)f(en)m(try)h(in)f(the)h(history)f(list.)150 -3591 y Fq(!)432 b Fr(Start)34 b(a)f(history)h(substitution,)g(except)g -(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630 -3701 y(the)e(line,)g(or)f(`)p Fq(=)p Fr('.)150 3870 y -Fq(!)p Fh(n)384 b Fr(Refer)30 b(to)i(command)e(line)g -Fj(n)p Fr(.)150 4039 y Fq(!-)p Fh(n)336 b Fr(Refer)30 -b(to)i(the)e(command)g Fj(n)g Fr(lines)h(bac)m(k.)150 -4208 y Fq(!!)384 b Fr(Refer)30 b(to)i(the)e(previous)g(command.)40 -b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Fq(!-1)p -Fr('.)150 4377 y Fq(!)p Fh(string)144 b Fr(Refer)30 b(to)i(the)e(most)h -(recen)m(t)g(command)f(starting)i(with)e Fj(string)p -Fr(.)150 4546 y Fq(!?)p Fh(string)11 b Fq([?])630 4655 -y Fr(Refer)34 b(to)g(the)f(most)h(recen)m(t)h(command)e(con)m(taining)i -Fj(string)p Fr(.)50 b(The)33 b(trailing)i(`)p Fq(?)p -Fr(')e(ma)m(y)i(b)s(e)630 4765 y(omitted)c(if)g(the)f -Fj(string)38 b Fr(is)31 b(follo)m(w)m(ed)h(immediately)g(b)m(y)e(a)h -(newline.)150 4934 y Fq(^)p Fh(string1)11 b Fq(^)p Fh(string2)g -Fq(^)630 5044 y Fr(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32 -b(the)g(last)h(command,)f(replacing)g Fj(string1)40 b -Fr(with)31 b Fj(string2)p Fr(.)630 5153 y(Equiv)-5 b(alen)m(t)31 -b(to)g Fq(!!:s/)p Fh(string1)11 b Fq(/)p Fh(string2)g -Fq(/)p Fr(.)150 5322 y Fq(!#)384 b Fr(The)30 b(en)m(tire)h(command)f -(line)h(t)m(yp)s(ed)f(so)h(far.)p eop end -%%Page: 2 6 -TeXDict begin 2 5 bop 150 -116 a Fr(2)2696 b(GNU)31 b(History)g -(Library)150 299 y Fi(1.1.2)63 b(W)-10 b(ord)41 b(Designators)275 -542 y Fr(W)-8 b(ord)35 b(designators)g(are)g(used)f(to)h(select)h -(desired)e(w)m(ords)h(from)f(the)h(ev)m(en)m(t.)55 b(A)34 -b(`)p Fq(:)p Fr(')h(separates)h(the)150 652 y(ev)m(en)m(t)41 -b(sp)s(eci\014cation)f(from)g(the)f(w)m(ord)g(designator.)69 -b(It)40 b(ma)m(y)g(b)s(e)f(omitted)i(if)e(the)h(w)m(ord)f(designator) -150 761 y(b)s(egins)33 b(with)h(a)h(`)p Fq(^)p Fr(',)g(`)p -Fq($)p Fr(',)g(`)p Fq(*)p Fr(',)h(`)p Fq(-)p Fr(',)f(or)f(`)p -Fq(\045)p Fr('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g -(the)i(b)s(eginning)e(of)h(the)g(line,)150 871 y(with)39 -b(the)h(\014rst)f(w)m(ord)g(b)s(eing)g(denoted)h(b)m(y)g(0)g(\(zero\).) -70 b(W)-8 b(ords)39 b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g -(line)150 980 y(separated)31 b(b)m(y)f(single)h(spaces.)275 -1114 y(F)-8 b(or)31 b(example,)150 1272 y Fq(!!)384 b -Fr(designates)37 b(the)f(preceding)g(command.)57 b(When)35 -b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -1381 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 1539 -y Fq(!!:$)288 b Fr(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) -h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -1648 y(to)31 b Fq(!$)p Fr(.)150 1806 y Fq(!fi:2)240 b -Fr(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 1916 -y(letters)j Fq(fi)p Fr(.)275 2073 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 2231 y Fq(0)g(\(zero\))114 b Fr(The)30 -b Fq(0)p Fr(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 2388 y Fh(n)432 -b Fr(The)30 b Fj(n)p Fr(th)g(w)m(ord.)150 2546 y Fq(^)432 -b Fr(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -2703 y Fq($)432 b Fr(The)30 b(last)h(argumen)m(t.)150 -2861 y Fq(\045)432 b Fr(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h -(most)g(recen)m(t)g(`)p Fq(?)p Fh(string)11 b Fq(?)p -Fr(')28 b(searc)m(h.)150 3019 y Fh(x)p Fq(-)p Fh(y)336 -b Fr(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fq(-)p Fh(y)11 -b Fr(')30 b(abbreviates)h(`)p Fq(0-)p Fh(y)11 b Fr('.)150 -3176 y Fq(*)432 b Fr(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e -Fq(0)p Fr(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p -Fq(1-$)p Fr('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -3286 y(to)j(use)g(`)p Fq(*)p Fr(')f(if)h(there)g(is)g(just)f(one)h(w)m -(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 3395 y(that)j(case.)150 3553 y Fh(x)11 -b Fq(*)373 b Fr(Abbreviates)31 b(`)p Fh(x)p Fq(-$)p Fr(')150 -3711 y Fh(x)p Fq(-)384 b Fr(Abbreviates)31 b(`)p Fh(x)p -Fq(-$)p Fr(')f(lik)m(e)h(`)p Fh(x)11 b Fq(*)p Fr(',)31 -b(but)e(omits)i(the)g(last)g(w)m(ord.)275 3868 y(If)i(a)h(w)m(ord)g -(designator)g(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s -(eci\014cation,)h(the)e(previous)f(command)150 3978 y(is)d(used)g(as)h -(the)f(ev)m(en)m(t.)150 4199 y Fi(1.1.3)63 b(Mo)s(di\014ers)275 -4442 y Fr(After)20 b(the)h(optional)h(w)m(ord)f(designator,)i(y)m(ou)e -(can)g(add)f(a)h(sequence)g(of)g(one)g(or)g(more)g(of)g(the)f(follo)m -(wing)150 4552 y(mo)s(di\014ers,)29 b(eac)m(h)j(preceded)e(b)m(y)g(a)h -(`)p Fq(:)p Fr('.)150 4710 y Fq(h)432 b Fr(Remo)m(v)m(e)32 -b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 4867 y Fq(t)432 b Fr(Remo)m(v)m(e)32 b(all)f(leading)h -(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -5025 y Fq(r)432 b Fr(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g -(the)h(form)f(`)p Fq(.)p Fh(suffix)11 b Fr(',)28 b(lea)m(ving)33 -b(the)d(basename.)150 5182 y Fq(e)432 b Fr(Remo)m(v)m(e)32 -b(all)f(but)f(the)h(trailing)g(su\016x.)150 5340 y Fq(p)432 -b Fr(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i -(it.)p eop end -%%Page: 3 7 -TeXDict begin 3 6 bop 150 -116 a Fr(Chapter)30 b(1:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150 -299 y Fq(s/)p Fh(old)11 b Fq(/)p Fh(new)g Fq(/)630 408 -y Fr(Substitute)32 b Fj(new)40 b Fr(for)32 b(the)h(\014rst)f(o)s -(ccurrence)h(of)f Fj(old)37 b Fr(in)32 b(the)h(ev)m(en)m(t)h(line.)48 -b(An)m(y)32 b(delimiter)630 518 y(ma)m(y)25 b(b)s(e)g(used)f(in)g -(place)i(of)f(`)p Fq(/)p Fr('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s -(e)e(quoted)h(in)f Fj(old)29 b Fr(and)24 b Fj(new)32 -b Fr(with)25 b(a)630 628 y(single)k(bac)m(kslash.)40 -b(If)28 b(`)p Fq(&)p Fr(')g(app)s(ears)g(in)f Fj(new)p -Fr(,)i(it)f(is)h(replaced)f(b)m(y)g Fj(old)p Fr(.)40 -b(A)28 b(single)h(bac)m(kslash)630 737 y(will)35 b(quote)g(the)g(`)p -Fq(&)p Fr('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f -(it)g(is)f(the)h(last)h(c)m(haracter)g(on)630 847 y(the)31 -b(input)e(line.)150 1006 y Fq(&)432 b Fr(Rep)s(eat)31 -b(the)f(previous)g(substitution.)150 1166 y Fq(g)150 -1275 y(a)432 b Fr(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 1385 y(with)30 b(`)p Fq(s)p Fr(',)h(as)f(in)h -Fq(gs/)p Fh(old)11 b Fq(/)p Fh(new)g Fq(/)p Fr(,)26 b(or)k(with)h(`)p -Fq(&)p Fr('.)150 1544 y Fq(G)432 b Fr(Apply)30 b(the)g(follo)m(wing)i -(`)p Fq(s)p Fr(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g -(the)g(ev)m(en)m(t.)p eop end -%%Page: 4 8 -TeXDict begin 4 7 bop 150 -116 a Fr(4)2696 b(GNU)31 b(History)g -(Library)p eop end -%%Page: 5 9 -TeXDict begin 5 8 bop 150 -116 a Fr(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(History)1780 b(5)150 -299 y Fn(2)80 b(Programming)54 b(with)f(GNU)h(History)275 -525 y Fr(This)31 b(c)m(hapter)i(describ)s(es)f(ho)m(w)g(to)h(in)m -(terface)h(programs)e(that)h(y)m(ou)g(write)g(with)f(the)g -Fk(gnu)g Fr(History)150 634 y(Library)-8 b(.)48 b(It)33 -b(should)e(b)s(e)i(considered)f(a)h(tec)m(hnical)i(guide.)48 -b(F)-8 b(or)34 b(information)f(on)g(the)g(in)m(teractiv)m(e)i(use)150 -744 y(of)c Fk(gnu)f Fr(History)-8 b(,)31 b(see)g(Chapter)f(1)h([Using)g -(History)g(In)m(teractiv)m(ely],)i(page)e(1.)150 996 -y Fp(2.1)68 b(In)l(tro)t(duction)45 b(to)g(History)275 -1239 y Fr(Man)m(y)23 b(programs)f(read)h(input)f(from)g(the)h(user)f(a) -h(line)g(at)g(a)g(time.)39 b(The)23 b Fk(gnu)f Fr(History)h(library)g -(is)f(able)150 1348 y(to)29 b(k)m(eep)h(trac)m(k)g(of)f(those)g(lines,) -h(asso)s(ciate)g(arbitrary)f(data)g(with)g(eac)m(h)h(line,)f(and)g -(utilize)h(information)150 1458 y(from)g(previous)g(lines)g(in)g(comp)s -(osing)h(new)f(ones.)275 1591 y(The)d(programmer)g(using)g(the)g -(History)h(library)f(has)h(a)m(v)-5 b(ailable)29 b(functions)e(for)h -(remem)m(b)s(ering)f(lines)150 1700 y(on)21 b(a)g(history)f(list,)k -(asso)s(ciating)e(arbitrary)e(data)i(with)e(a)h(line,)i(remo)m(ving)f -(lines)f(from)f(the)h(list,)i(searc)m(hing)150 1810 y(through)35 -b(the)g(list)h(for)f(a)h(line)f(con)m(taining)i(an)e(arbitrary)g(text)h -(string,)h(and)e(referencing)g(an)m(y)h(line)f(in)150 -1919 y(the)c(list)g(directly)-8 b(.)43 b(In)30 b(addition,)h(a)g -(history)g Fj(expansion)g Fr(function)f(is)h(a)m(v)-5 -b(ailable)33 b(whic)m(h)d(pro)m(vides)h(for)g(a)150 2029 -y(consisten)m(t)h(user)d(in)m(terface)j(across)f(di\013eren)m(t)g -(programs.)275 2162 y(The)c(user)g(using)g(programs)h(written)g(with)g -(the)g(History)g(library)g(has)f(the)h(b)s(ene\014t)f(of)h(a)h -(consisten)m(t)150 2271 y(user)38 b(in)m(terface)j(with)e(a)g(set)g(of) -h(w)m(ell-kno)m(wn)f(commands)g(for)g(manipulating)g(the)g(text)h(of)f -(previous)150 2381 y(lines)28 b(and)f(using)g(that)h(text)g(in)g(new)f -(commands.)39 b(The)27 b(basic)h(history)g(manipulation)f(commands)h -(are)150 2491 y(similar)j(to)g(the)f(history)h(substitution)f(pro)m -(vided)g(b)m(y)g Fq(csh)p Fr(.)275 2623 y(If)f(the)g(programmer)g -(desires,)h(he)g(can)f(use)h(the)f(Readline)i(library)-8 -b(,)30 b(whic)m(h)f(includes)g(some)h(history)150 2733 -y(manipulation)h(b)m(y)f(default,)h(and)e(has)i(the)f(added)g(adv)-5 -b(an)m(tage)32 b(of)f(command)f(line)g(editing.)275 2866 -y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y)g -(functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150 -2976 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e -(include)i(the)g(\014le)f Fq(<readline/history.h>)23 -b Fr(in)29 b(an)m(y)g(\014le)150 3085 y(that)c(uses)e(the)h(History)h -(library's)e(features.)39 b(It)24 b(supplies)f(extern)h(declarations)i -(for)d(all)i(of)f(the)g(library's)150 3195 y(public)30 -b(functions)g(and)f(v)-5 b(ariables,)32 b(and)d(declares)j(all)f(of)f -(the)h(public)f(data)h(structures.)150 3447 y Fp(2.2)68 -b(History)46 b(Storage)275 3689 y Fr(The)29 b(history)i(list)g(is)f(an) -g(arra)m(y)h(of)g(history)f(en)m(tries.)42 b(A)30 b(history)g(en)m(try) -h(is)f(declared)h(as)g(follo)m(ws:)390 3822 y Fq(typedef)46 -b(void)g(*histdata_t;)390 4042 y(typedef)g(struct)g(_hist_entry)f({)485 -4151 y(char)i(*line;)485 4261 y(char)g(*timestamp;)485 -4370 y(histdata_t)e(data;)390 4480 y(})i(HIST_ENTRY;)275 -4613 y Fr(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s -(e)f(declared)g(as)390 4746 y Fq(HIST_ENTRY)45 b(**the_history_list;) -275 4878 y Fr(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h -(encapsulated)g(in)m(to)g(a)g(single)g(structure:)390 -5011 y Fq(/*)438 5121 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f -(around)g(the)h(current)f(state)h(of)g(the)g(history.)438 -5230 y(*/)390 5340 y(typedef)f(struct)g(_hist_state)f({)p -eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Fr(6)2696 b(GNU)31 b(History)g -(Library)485 299 y Fq(HIST_ENTRY)45 b(**entries;)g(/*)j(Pointer)d(to)j -(the)f(entries)e(themselves.)g(*/)485 408 y(int)i(offset;)523 -b(/*)48 b(The)f(location)e(pointer)h(within)g(this)h(array.)f(*/)485 -518 y(int)h(length;)523 b(/*)48 b(Number)e(of)h(elements)e(within)i -(this)f(array.)g(*/)485 628 y(int)h(size;)619 b(/*)48 -b(Number)e(of)h(slots)f(allocated)g(to)h(this)f(array.)g(*/)485 -737 y(int)h(flags;)390 847 y(})g(HISTORY_STATE;)275 985 -y Fr(If)29 b(the)i(\015ags)g(mem)m(b)s(er)e(includes)h -Fq(HS_STIFLED)p Fr(,)e(the)j(history)f(has)g(b)s(een)g(sti\015ed.)150 -1252 y Fp(2.3)68 b(History)46 b(F)-11 b(unctions)275 -1500 y Fr(This)23 b(section)j(describ)s(es)e(the)h(calling)h(sequence)f -(for)f(the)h(v)-5 b(arious)25 b(functions)f(exp)s(orted)g(b)m(y)g(the)h -Fk(gnu)150 1610 y Fr(History)31 b(library)-8 b(.)150 -1842 y Fi(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f -(Managemen)m(t)275 2090 y Fr(This)33 b(section)j(describ)s(es)e -(functions)g(used)g(to)h(initialize)i(and)d(manage)h(the)g(state)h(of)f -(the)f(History)150 2200 y(library)c(when)f(y)m(ou)i(w)m(an)m(t)g(to)g -(use)f(the)h(history)f(functions)g(in)g(y)m(our)h(program.)3350 -2392 y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(using)p -667 2392 35 5 v 50 w(history)46 b Fe(\()p Fq(void)p Fe(\))390 -2501 y Fr(Begin)41 b(a)f(session)g(in)g(whic)m(h)f(the)h(history)g -(functions)f(migh)m(t)i(b)s(e)e(used.)69 b(This)39 b(initializes)j(the) -390 2611 y(in)m(teractiv)m(e)33 b(v)-5 b(ariables.)3350 -2803 y([F)d(unction])-3599 b Fg(HISTORY_STATE)42 b(*)d -Ff(history)p 1317 2803 V 50 w(get)p 1522 2803 V 50 w(history)p -1922 2803 V 51 w(state)k Fe(\()p Fq(void)p Fe(\))390 -2913 y Fr(Return)30 b(a)g(structure)g(describing)g(the)h(curren)m(t)f -(state)i(of)e(the)h(input)e(history)-8 b(.)3350 3105 -y([F)g(unction])-3599 b Fg(void)39 b Ff(history)p 755 -3105 V 51 w(set)p 949 3105 V 50 w(history)p 1349 3105 -V 50 w(state)44 b Fe(\()p Fq(HISTORY_STATE)27 b(*state)p -Fe(\))390 3215 y Fr(Set)k(the)f(state)i(of)e(the)h(history)f(list)h -(according)h(to)f Fj(state)p Fr(.)150 3447 y Fi(2.3.2)63 -b(History)41 b(List)g(Managemen)m(t)275 3695 y Fr(These)21 -b(functions)g(manage)h(individual)f(en)m(tries)h(on)g(the)f(history)h -(list,)i(or)d(set)h(parameters)g(managing)150 3804 y(the)31 -b(list)g(itself.)3350 3996 y([F)-8 b(unction])-3599 b -Fg(void)39 b Ff(add)p 589 3996 V 50 w(history)45 b Fe(\()p -Fq(const)30 b(char)f(*string)p Fe(\))390 4106 y Fr(Place)i -Fj(string)38 b Fr(at)31 b(the)f(end)f(of)h(the)g(history)g(list.)42 -b(The)29 b(asso)s(ciated)i(data)g(\014eld)f(\(if)g(an)m(y\))h(is)f(set) -g(to)390 4216 y Fq(NULL)p Fr(.)3350 4408 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(add)p 589 4408 V 50 w(history)p 989 -4408 V 50 w(time)45 b Fe(\()p Fq(const)29 b(char)h(*string)p -Fe(\))390 4517 y Fr(Change)g(the)h(time)g(stamp)f(asso)s(ciated)i(with) -e(the)h(most)f(recen)m(t)i(history)e(en)m(try)h(to)g -Fj(string)p Fr(.)3350 4709 y([F)-8 b(unction])-3599 b -Fg(HIST_ENTRY)41 b(*)e Ff(remo)m(v)m(e)p 1169 4709 V -50 w(history)46 b Fe(\()p Fq(int)30 b(which)p Fe(\))390 -4819 y Fr(Remo)m(v)m(e)47 b(history)f(en)m(try)f(at)i(o\013set)f -Fj(whic)m(h)f Fr(from)g(the)h(history)-8 b(.)86 b(The)45 -b(remo)m(v)m(ed)i(elemen)m(t)g(is)390 4929 y(returned)29 -b(so)i(y)m(ou)g(can)f(free)h(the)f(line,)h(data,)h(and)d(con)m(taining) -j(structure.)3350 5121 y([F)-8 b(unction])-3599 b Fg(histdata_t)41 -b Ff(free)p 907 5121 V 50 w(history)p 1307 5121 V 50 -w(en)m(try)k Fe(\()p Fq(HIST_ENTRY)28 b(*histent)p Fe(\))390 -5230 y Fr(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g -Fj(histen)m(t)j Fr(and)c(an)m(y)i(history)e(library)h(priv)-5 -b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 5340 -y(Returns)h(the)i(application-sp)s(eci\014c)h(data)f(so)g(the)f(caller) -i(can)e(disp)s(ose)g(of)h(it.)p eop end -%%Page: 7 11 -TeXDict begin 7 10 bop 150 -116 a Fr(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(History)1780 b(7)3350 -299 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)41 b(*)e -Ff(replace)p 1166 299 35 5 v 48 w(history)p 1564 299 -V 51 w(en)m(try)45 b Fe(\()p Fq(int)29 b(which,)g(const)g(char)565 -408 y(*line,)g(histdata_t)e(data)p Fe(\))390 518 y Fr(Mak)m(e)i(the)f -(history)f(en)m(try)h(at)h(o\013set)f Fj(whic)m(h)g Fr(ha)m(v)m(e)g -Fj(line)33 b Fr(and)27 b Fj(data)p Fr(.)41 b(This)27 -b(returns)f(the)i(old)g(en)m(try)390 628 y(so)37 b(the)h(caller)g(can)f -(disp)s(ose)g(of)g(an)m(y)g(application-sp)s(eci\014c)i(data.)61 -b(In)37 b(the)g(case)h(of)f(an)g(in)m(v)-5 b(alid)390 -737 y Fj(whic)m(h)p Fr(,)30 b(a)h Fq(NULL)e Fr(p)s(oin)m(ter)i(is)f -(returned.)3350 957 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(clear)p 644 957 V 50 w(history)46 b Fe(\()p Fq(void)p -Fe(\))390 1067 y Fr(Clear)31 b(the)f(history)h(list)g(b)m(y)f(deleting) -h(all)h(the)e(en)m(tries.)3350 1287 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(sti\015e)p 644 1287 V 50 w(history)45 -b Fe(\()p Fq(int)30 b(max)p Fe(\))390 1396 y Fr(Sti\015e)g(the)h -(history)f(list,)h(remem)m(b)s(ering)f(only)h(the)f(last)i -Fj(max)k Fr(en)m(tries.)3350 1616 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(unsti\015e)p 720 1616 V 49 w(history)45 -b Fe(\()p Fq(void)p Fe(\))390 1726 y Fr(Stop)27 b(sti\015ing)h(the)f -(history)-8 b(.)40 b(This)27 b(returns)f(the)h(previously-set)h(maxim)m -(um)f(n)m(um)m(b)s(er)f(of)i(history)390 1836 y(en)m(tries)g(\(as)f -(set)g(b)m(y)g Fq(stifle_history\(\))p Fr(\).)35 b(The)27 -b(v)-5 b(alue)27 b(is)g(p)s(ositiv)m(e)g(if)g(the)g(history)g(w)m(as)g -(sti\015ed,)390 1945 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 -2165 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(history)p -703 2165 V 51 w(is)p 831 2165 V 50 w(sti\015ed)44 b Fe(\()p -Fq(void)p Fe(\))390 2275 y Fr(Returns)29 b(non-zero)i(if)g(the)f -(history)h(is)f(sti\015ed,)g(zero)i(if)e(it)h(is)f(not.)150 -2535 y Fi(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List) -275 2797 y Fr(These)25 b(functions)g(return)g(information)h(ab)s(out)f -(the)h(en)m(tire)g(history)g(list)g(or)g(individual)f(list)h(en)m -(tries.)3350 3017 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)41 -b(**)e Ff(history)p 1212 3017 V 51 w(list)44 b Fe(\()p -Fq(void)p Fe(\))390 3126 y Fr(Return)30 b(a)h Fq(NULL)e -Fr(terminated)i(arra)m(y)g(of)f Fq(HIST_ENTRY)e(*)i Fr(whic)m(h)g(is)h -(the)g(curren)m(t)f(input)f(history)-8 b(.)390 3236 y(Elemen)m(t)31 -b(0)g(of)g(this)f(list)h(is)f(the)h(b)s(eginning)f(of)g(time.)42 -b(If)29 b(there)i(is)f(no)h(history)-8 b(,)31 b(return)e -Fq(NULL)p Fr(.)3350 3456 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(where)p 653 3456 V 49 w(history)46 b Fe(\()p Fq(void)p -Fe(\))390 3565 y Fr(Returns)29 b(the)i(o\013set)g(of)g(the)g(curren)m -(t)f(history)g(elemen)m(t.)3350 3786 y([F)-8 b(unction])-3599 -b Fg(HIST_ENTRY)41 b(*)e Ff(curren)m(t)p 1178 3786 V -49 w(history)45 b Fe(\()p Fq(void)p Fe(\))390 3895 y -Fr(Return)24 b(the)h(history)g(en)m(try)g(at)h(the)f(curren)m(t)f(p)s -(osition,)j(as)e(determined)f(b)m(y)h Fq(where_history\(\))p -Fr(.)390 4005 y(If)30 b(there)g(is)h(no)f(en)m(try)h(there,)g(return)e -(a)i Fq(NULL)e Fr(p)s(oin)m(ter.)3350 4225 y([F)-8 b(unction])-3599 -b Fg(HIST_ENTRY)41 b(*)e Ff(history)p 1160 4225 V 50 -w(get)45 b Fe(\()p Fq(int)30 b(offset)p Fe(\))390 4334 -y Fr(Return)41 b(the)g(history)h(en)m(try)g(at)g(p)s(osition)g -Fj(o\013set)p Fr(,)j(starting)e(from)e Fq(history_base)d -Fr(\(see)k(Sec-)390 4444 y(tion)30 b(2.4)g([History)h(V)-8 -b(ariables],)31 b(page)f(10\).)42 b(If)28 b(there)i(is)f(no)h(en)m(try) -f(there,)h(or)g(if)f Fj(o\013set)j Fr(is)e(greater)390 -4553 y(than)g(the)h(history)f(length,)h(return)e(a)i -Fq(NULL)e Fr(p)s(oin)m(ter.)3350 4774 y([F)-8 b(unction])-3599 -b Fg(time_t)40 b Ff(history)p 860 4774 V 51 w(get)p 1066 -4774 V 49 w(time)45 b Fe(\()p Fq(HIST_ENTRY)28 b(*entry)p -Fe(\))390 4883 y Fr(Return)i(the)g(time)h(stamp)f(asso)s(ciated)i(with) -e(the)h(history)f(en)m(try)h Fj(en)m(try)p Fr(.)3350 -5103 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(history)p -703 5103 V 51 w(total)p 989 5103 V 49 w(b)m(ytes)45 b -Fe(\()p Fq(void)p Fe(\))390 5213 y Fr(Return)27 b(the)h(n)m(um)m(b)s -(er)e(of)i(b)m(ytes)g(that)g(the)g(primary)e(history)i(en)m(tries)g -(are)g(using.)39 b(This)27 b(function)390 5322 y(returns)i(the)i(sum)e -(of)i(the)f(lengths)h(of)f(all)i(the)e(lines)h(in)f(the)g(history)-8 -b(.)p eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Fr(8)2696 b(GNU)31 -b(History)g(Library)150 299 y Fi(2.3.4)63 b(Mo)m(ving)41 -b(Around)h(the)f(History)g(List)275 544 y Fr(These)30 -b(functions)g(allo)m(w)h(the)g(curren)m(t)f(index)g(in)m(to)h(the)g -(history)f(list)h(to)g(b)s(e)f(set)h(or)f(c)m(hanged.)3350 -730 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(history)p -703 730 35 5 v 51 w(set)p 897 730 V 49 w(p)s(os)46 b -Fe(\()p Fq(int)30 b(pos)p Fe(\))390 839 y Fr(Set)37 b(the)g(curren)m(t) -f(history)g(o\013set)i(to)f Fj(p)s(os)p Fr(,)h(an)f(absolute)g(index)f -(in)m(to)i(the)e(list.)60 b(Returns)36 b(1)h(on)390 949 -y(success,)31 b(0)g(if)f Fj(p)s(os)j Fr(is)e(less)f(than)h(zero)g(or)f -(greater)i(than)e(the)g(n)m(um)m(b)s(er)f(of)i(history)f(en)m(tries.) -3350 1135 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)41 -b(*)e Ff(previous)p 1232 1135 V 50 w(history)46 b Fe(\()p -Fq(void)p Fe(\))390 1244 y Fr(Bac)m(k)30 b(up)e(the)h(curren)m(t)g -(history)f(o\013set)i(to)g(the)f(previous)f(history)h(en)m(try)-8 -b(,)30 b(and)e(return)g(a)h(p)s(oin)m(ter)390 1354 y(to)i(that)g(en)m -(try)-8 b(.)41 b(If)30 b(there)h(is)f(no)h(previous)f(en)m(try)-8 -b(,)31 b(return)e(a)i Fq(NULL)e Fr(p)s(oin)m(ter.)3350 -1540 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)41 b(*)e -Ff(next)p 1032 1540 V 49 w(history)46 b Fe(\()p Fq(void)p -Fe(\))390 1649 y Fr(Mo)m(v)m(e)38 b(the)d(curren)m(t)h(history)f -(o\013set)i(forw)m(ard)e(to)h(the)g(next)f(history)h(en)m(try)-8 -b(,)37 b(and)e(return)g(the)h(a)390 1759 y(p)s(oin)m(ter)30 -b(to)h(that)g(en)m(try)-8 b(.)42 b(If)30 b(there)g(is)h(no)f(next)h(en) -m(try)-8 b(,)31 b(return)e(a)i Fq(NULL)e Fr(p)s(oin)m(ter.)150 -1985 y Fi(2.3.5)63 b(Searc)m(hing)40 b(the)h(History)h(List)275 -2230 y Fr(These)26 b(functions)g(allo)m(w)i(searc)m(hing)g(of)f(the)g -(history)f(list)i(for)e(en)m(tries)i(con)m(taining)g(a)f(sp)s(eci\014c) -g(string.)150 2339 y(Searc)m(hing)h(ma)m(y)g(b)s(e)f(p)s(erformed)f(b)s -(oth)h(forw)m(ard)f(and)h(bac)m(kw)m(ard)h(from)f(the)h(curren)m(t)f -(history)h(p)s(osition.)150 2449 y(The)j(searc)m(h)h(ma)m(y)g(b)s(e)e -Fj(anc)m(hored)p Fr(,)i(meaning)g(that)g(the)f(string)h(m)m(ust)f(matc) -m(h)h(at)g(the)g(b)s(eginning)e(of)i(the)150 2558 y(history)e(en)m(try) --8 b(.)3350 2744 y([F)g(unction])-3599 b Fg(int)39 b -Ff(history)p 703 2744 V 51 w(searc)m(h)44 b Fe(\()p Fq(const)29 -b(char)h(*string,)e(int)h(direction)p Fe(\))390 2854 -y Fr(Searc)m(h)g(the)g(history)g(for)g Fj(string)p Fr(,)g(starting)h -(at)f(the)g(curren)m(t)g(history)g(o\013set.)41 b(If)28 -b Fj(direction)i Fr(is)f(less)390 2963 y(than)40 b(0,)j(then)c(the)h -(searc)m(h)h(is)f(through)f(previous)h(en)m(tries,)j(otherwise)d -(through)g(subsequen)m(t)390 3073 y(en)m(tries.)i(If)30 -b Fj(string)38 b Fr(is)30 b(found,)g(then)g(the)g(curren)m(t)h(history) -f(index)g(is)g(set)h(to)h(that)f(history)f(en)m(try)-8 -b(,)390 3183 y(and)33 b(the)g(v)-5 b(alue)34 b(returned)e(is)i(the)g -(o\013set)g(in)f(the)h(line)f(of)h(the)g(en)m(try)f(where)g -Fj(string)41 b Fr(w)m(as)34 b(found.)390 3292 y(Otherwise,)c(nothing)h -(is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f(returned.)3350 -3478 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(history)p -703 3478 V 51 w(searc)m(h)p 1067 3478 V 49 w(pre\014x)45 -b Fe(\()p Fq(const)29 b(char)g(*string,)g(int)g(direction)p -Fe(\))390 3588 y Fr(Searc)m(h)41 b(the)g(history)f(for)g -Fj(string)p Fr(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h -(o\013set.)72 b(The)40 b(searc)m(h)h(is)390 3697 y(anc)m(hored:)f(matc) -m(hing)31 b(lines)f(m)m(ust)f(b)s(egin)g(with)g Fj(string)p -Fr(.)40 b(If)29 b Fj(direction)h Fr(is)g(less)f(than)g(0,)i(then)e(the) -390 3807 y(searc)m(h)j(is)f(through)g(previous)g(en)m(tries,)h -(otherwise)g(through)e(subsequen)m(t)h(en)m(tries.)44 -b(If)31 b Fj(string)39 b Fr(is)390 3916 y(found,)33 b(then)f(the)h -(curren)m(t)g(history)g(index)g(is)g(set)g(to)h(that)g(en)m(try)-8 -b(,)34 b(and)f(the)g(return)f(v)-5 b(alue)33 b(is)g(0.)390 -4026 y(Otherwise,)d(nothing)h(is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f -(returned.)3350 4212 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(history)p 703 4212 V 51 w(searc)m(h)p 1067 4212 -V 49 w(p)s(os)46 b Fe(\()p Fq(const)29 b(char)g(*string,)f(int)i -(direction,)d(int)565 4321 y(pos)p Fe(\))390 4431 y Fr(Searc)m(h)34 -b(for)g Fj(string)42 b Fr(in)34 b(the)h(history)f(list,)i(starting)f -(at)g Fj(p)s(os)p Fr(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.) -390 4541 y(If)i Fj(direction)g Fr(is)g(negativ)m(e,)k(the)c(searc)m(h)h -(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fj(p)s(os)p Fr(,)h(otherwise)f -(forw)m(ard.)390 4650 y(Returns)43 b(the)h(absolute)h(index)f(of)g(the) -g(history)g(elemen)m(t)h(where)f Fj(string)52 b Fr(w)m(as)44 -b(found,)i(or)e(-1)390 4760 y(otherwise.)150 4986 y Fi(2.3.6)63 -b(Managing)41 b(the)g(History)h(File)275 5230 y Fr(The)31 -b(History)h(library)f(can)h(read)f(the)h(history)g(from)f(and)g(write)h -(it)g(to)g(a)g(\014le.)45 b(This)31 b(section)h(do)s(cu-)150 -5340 y(men)m(ts)f(the)f(functions)g(for)g(managing)h(a)g(history)f -(\014le.)p eop end -%%Page: 9 13 -TeXDict begin 9 12 bop 150 -116 a Fr(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(History)1780 b(9)3350 -299 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(read)p -573 299 35 5 v 50 w(history)45 b Fe(\()p Fq(const)29 -b(char)h(*filename)p Fe(\))390 408 y Fr(Add)f(the)h(con)m(ten)m(ts)h -(of)f Fj(\014lename)k Fr(to)d(the)f(history)f(list,)i(a)f(line)g(at)g -(a)g(time.)41 b(If)29 b Fj(\014lename)35 b Fr(is)30 b -Fq(NULL)p Fr(,)390 518 y(then)g(read)g(from)g(`)p Fq(~/.history)p -Fr('.)39 b(Returns)29 b(0)i(if)f(successful,)h(or)f Fq(errno)f -Fr(if)h(not.)3350 717 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(read)p 573 717 V 50 w(history)p 973 717 V 50 w(range)45 -b Fe(\()p Fq(const)29 b(char)g(*filename,)f(int)h(from,)g(int)h(to)p -Fe(\))390 826 y Fr(Read)e(a)g(range)h(of)f(lines)g(from)f -Fj(\014lename)p Fr(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40 -b(Start)28 b(reading)g(at)390 936 y(line)f Fj(from)e -Fr(and)h(end)f(at)i Fj(to)p Fr(.)41 b(If)25 b Fj(from)h -Fr(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26 -b Fj(to)31 b Fr(is)c(less)f(than)g Fj(from)p Fr(,)390 -1045 y(then)k(read)g(un)m(til)g(the)g(end)g(of)g(the)g(\014le.)41 -b(If)30 b Fj(\014lename)35 b Fr(is)30 b Fq(NULL)p Fr(,)g(then)f(read)h -(from)g(`)p Fq(~/.history)p Fr('.)390 1155 y(Returns)f(0)i(if)g -(successful,)f(or)g Fq(errno)f Fr(if)i(not.)3350 1353 -y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(write)p 613 -1353 V 49 w(history)46 b Fe(\()p Fq(const)29 b(char)g(*filename)p -Fe(\))390 1463 y Fr(W)-8 b(rite)36 b(the)f(curren)m(t)g(history)g(to)g -Fj(\014lename)p Fr(,)h(o)m(v)m(erwriting)h Fj(\014lename)j -Fr(if)35 b(necessary)-8 b(.)54 b(If)35 b Fj(\014lename)390 -1573 y Fr(is)d Fq(NULL)p Fr(,)g(then)g(write)g(the)h(history)f(list)h -(to)g(`)p Fq(~/.history)p Fr('.)44 b(Returns)31 b(0)i(on)f(success,)h -(or)f Fq(errno)390 1682 y Fr(on)e(a)h(read)f(or)h(write)f(error.)3350 -1881 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(app)s(end)p -721 1881 V 48 w(history)46 b Fe(\()p Fq(int)30 b(nelements,)e(const)g -(char)i(*filename)p Fe(\))390 1990 y Fr(App)s(end)j(the)i(last)g -Fj(nelemen)m(ts)k Fr(of)c(the)g(history)f(list)i(to)f -Fj(\014lename)p Fr(.)54 b(If)34 b Fj(\014lename)40 b -Fr(is)34 b Fq(NULL)p Fr(,)h(then)390 2100 y(app)s(end)29 -b(to)i(`)p Fq(~/.history)p Fr('.)38 b(Returns)30 b(0)g(on)h(success,)g -(or)f Fq(errno)f Fr(on)h(a)h(read)f(or)h(write)f(error.)3350 -2299 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(history)p -703 2299 V 51 w(truncate)p 1179 2299 V 48 w(\014le)44 -b Fe(\()p Fq(const)30 b(char)f(*filename,)e(int)j(nlines)p -Fe(\))390 2408 y Fr(T)-8 b(runcate)39 b(the)f(history)h(\014le)f -Fj(\014lename)p Fr(,)j(lea)m(ving)f(only)f(the)g(last)g -Fj(nlines)j Fr(lines.)65 b(If)38 b Fj(\014lename)44 b -Fr(is)390 2518 y Fq(NULL)p Fr(,)29 b(then)i(`)p Fq(~/.history)p -Fr(')d(is)i(truncated.)41 b(Returns)29 b(0)i(on)f(success,)h(or)f -Fq(errno)f Fr(on)i(failure.)150 2756 y Fi(2.3.7)63 b(History)41 -b(Expansion)275 3007 y Fr(These)30 b(functions)g(implemen)m(t)h -(history)f(expansion.)3350 3206 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(history)p 703 3206 V 51 w(expand)44 -b Fe(\()p Fq(char)29 b(*string,)f(char)i(**output)p Fe(\))390 -3315 y Fr(Expand)j Fj(string)p Fr(,)j(placing)f(the)f(result)h(in)m(to) -g Fj(output)p Fr(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i -(Section)f(1.1)390 3425 y([History)c(In)m(teraction],)i(page)e(1\).)41 -b(Returns:)390 3595 y Fq(0)432 b Fr(If)37 b(no)g(expansions)g(to)s(ok)i -(place)f(\(or,)i(if)d(the)h(only)f(c)m(hange)i(in)e(the)g(text)i(w)m -(as)f(the)870 3705 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m -(haracters)i(preceding)e(the)g(history)g(expansion)g(c)m(haracter\);) -390 3871 y Fq(1)432 b Fr(if)30 b(expansions)g(did)g(tak)m(e)i(place;) -390 4038 y Fq(-1)384 b Fr(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g -(expansion;)390 4204 y Fq(2)432 b Fr(if)28 b(the)f(returned)g(line)g -(should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with) -f(the)h Fq(:p)870 4314 y Fr(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h -([Mo)s(di\014ers],)e(page)i(2\).)390 4484 y(If)e(an)g(error)g(o)s -(curred)f(in)i(expansion,)f(then)g Fj(output)i Fr(con)m(tains)g(a)e -(descriptiv)m(e)i(error)e(message.)3350 4682 y([F)-8 -b(unction])-3599 b Fg(char)39 b(*)g Ff(get)p 651 4682 -V 50 w(history)p 1051 4682 V 50 w(ev)m(en)m(t)44 b Fe(\()p -Fq(const)29 b(char)h(*string,)e(int)h(*cindex,)f(int)565 -4792 y(qchar)p Fe(\))390 4902 y Fr(Returns)45 b(the)g(text)i(of)e(the)h -(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h Fj(string)53 -b Fq(+)45 b Fj(*cindex)p Fr(.)87 b Fj(*cindex)52 b Fr(is)390 -5011 y(mo)s(di\014ed)28 b(to)i(p)s(oin)m(t)f(to)h(after)g(the)g(ev)m -(en)m(t)h(sp)s(eci\014er.)39 b(A)m(t)31 b(function)e(en)m(try)-8 -b(,)30 b Fj(cindex)36 b Fr(p)s(oin)m(ts)29 b(to)h(the)390 -5121 y(index)35 b(in)m(to)i Fj(string)44 b Fr(where)35 -b(the)h(history)g(ev)m(en)m(t)h(sp)s(eci\014cation)g(b)s(egins.)57 -b Fj(qc)m(har)42 b Fr(is)36 b(a)g(c)m(haracter)390 5230 -y(that)27 b(is)g(allo)m(w)m(ed)i(to)f(end)e(the)h(ev)m(en)m(t)h(sp)s -(eci\014cation)g(in)f(addition)g(to)g(the)g(\\normal")h(terminating)390 -5340 y(c)m(haracters.)p eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Fr(10)2651 b(GNU)31 -b(History)g(Library)3350 299 y([F)-8 b(unction])-3599 -b Fg(char)39 b(**)g Ff(history)p 898 299 35 5 v 51 w(tok)m(enize)44 -b Fe(\()p Fq(const)29 b(char)g(*string)p Fe(\))390 408 -y Fr(Return)h(an)h(arra)m(y)g(of)g(tok)m(ens)h(parsed)e(out)h(of)g -Fj(string)p Fr(,)h(m)m(uc)m(h)e(as)i(the)f(shell)g(migh)m(t.)43 -b(The)30 b(tok)m(ens)390 518 y(are)h(split)g(on)f(the)h(c)m(haracters)h -(in)e(the)h Fj(history)p 2006 518 28 4 v 40 w(w)m(ord)p -2241 518 V 39 w(delimiters)k Fr(v)-5 b(ariable,)32 b(and)e(shell)g -(quoting)390 628 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed.)3350 -818 y([F)-8 b(unction])-3599 b Fg(char)39 b(*)g Ff(history)p -846 818 35 5 v 50 w(arg)p 1056 818 V 51 w(extract)44 -b Fe(\()p Fq(int)30 b(first,)f(int)g(last,)g(const)g(char)565 -927 y(*string)p Fe(\))390 1037 y Fr(Extract)41 b(a)g(string)f(segmen)m -(t)i(consisting)f(of)f(the)h Fj(\014rst)g Fr(through)f -Fj(last)j Fr(argumen)m(ts)e(presen)m(t)f(in)390 1146 -y Fj(string)p Fr(.)h(Argumen)m(ts)30 b(are)h(split)f(using)g -Fq(history_tokenize)p Fr(.)150 1411 y Fp(2.4)68 b(History)46 -b(V)-11 b(ariables)275 1658 y Fr(This)33 b(section)i(describ)s(es)e -(the)h(externally-visible)i(v)-5 b(ariables)35 b(exp)s(orted)e(b)m(y)h -(the)g Fk(gnu)g Fr(History)h(Li-)150 1767 y(brary)-8 -b(.)3371 1957 y([V)g(ariable])-3598 b Fg(int)39 b Ff(history)p -703 1957 V 51 w(base)390 2067 y Fr(The)30 b(logical)j(o\013set)e(of)g -(the)f(\014rst)g(en)m(try)g(in)h(the)f(history)g(list.)3371 -2257 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(history)p -703 2257 V 51 w(length)390 2366 y Fr(The)30 b(n)m(um)m(b)s(er)f(of)h -(en)m(tries)i(curren)m(tly)e(stored)h(in)f(the)g(history)g(list.)3371 -2556 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(history)p -703 2556 V 51 w(max)p 965 2556 V 51 w(en)m(tries)390 -2666 y Fr(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g(en)m -(tries.)88 b(This)45 b(m)m(ust)h(b)s(e)f(c)m(hanged)i(using)e -Fq(stifle_)390 2776 y(history\(\))p Fr(.)3371 2966 y([V)-8 -b(ariable])-3598 b Fg(int)39 b Ff(history)p 703 2966 -V 51 w(write)p 1014 2966 V 49 w(timestamps)390 3075 y -Fr(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the)g -(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390 -3185 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f(0,)h(meaning)g(that)g(timestamps)g(are)g(not)f(sa)m(v) -m(ed.)3371 3375 y([V)-8 b(ariable])-3598 b Fg(char)39 -b Ff(history)p 755 3375 V 51 w(expansion)p 1301 3375 -V 49 w(c)m(har)390 3484 y Fr(The)c(c)m(haracter)i(that)e(in)m(tro)s -(duces)g(a)h(history)f(ev)m(en)m(t.)57 b(The)34 b(default)i(is)f(`)p -Fq(!)p Fr('.)56 b(Setting)35 b(this)h(to)g(0)390 3594 -y(inhibits)30 b(history)g(expansion.)3371 3784 y([V)-8 -b(ariable])-3598 b Fg(char)39 b Ff(history)p 755 3784 -V 51 w(subst)p 1069 3784 V 50 w(c)m(har)390 3893 y Fr(The)h(c)m -(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f(substitution)f(if)h -(found)e(at)i(the)g(start)g(of)g(a)g(line.)72 b(The)390 -4003 y(default)31 b(is)f(`)p Fq(^)p Fr('.)3371 4193 y([V)-8 -b(ariable])-3598 b Fg(char)39 b Ff(history)p 755 4193 -V 51 w(commen)m(t)p 1263 4193 V 50 w(c)m(har)390 4303 -y Fr(During)e(tok)m(enization,)43 b(if)38 b(this)f(c)m(haracter)j(is)e -(seen)f(as)h(the)g(\014rst)f(c)m(haracter)j(of)e(a)g(w)m(ord,)h(then) -390 4412 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m(haracters)j(up)d(to) -i(a)g(newline)f(are)h(ignored,)i(suppressing)c(history)390 -4522 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h(line.)41 -b(This)29 b(is)i(disabled)f(b)m(y)g(default.)3371 4712 -y([V)-8 b(ariable])-3598 b Fg(char)39 b(*)g Ff(history)p -846 4712 V 50 w(w)m(ord)p 1144 4712 V 51 w(delimiters)390 -4821 y Fr(The)27 b(c)m(haracters)i(that)f(separate)h(tok)m(ens)f(for)f -Fq(history_tokenize\(\))p Fr(.)35 b(The)27 b(default)h(v)-5 -b(alue)28 b(is)f Fq(")390 4931 y(\\t\\n\(\)<>;&|")p Fr(.)3371 -5121 y([V)-8 b(ariable])-3598 b Fg(char)39 b(*)g Ff(history)p -846 5121 V 50 w(searc)m(h)p 1209 5121 V 50 w(delimiter)p -1712 5121 V 49 w(c)m(hars)390 5230 y Fr(The)26 b(list)g(of)g -(additional)h(c)m(haracters)h(whic)m(h)e(can)g(delimit)h(a)f(history)g -(searc)m(h)h(string,)g(in)f(addition)390 5340 y(to)31 -b(space,)g(T)-8 b(AB,)32 b(`)p Fq(:)p Fr(')e(and)g(`)p -Fq(?)p Fr(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41 -b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)p eop end -%%Page: 11 15 -TeXDict begin 11 14 bop 150 -116 a Fr(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(History)1734 b(11)3371 -299 y([V)-8 b(ariable])-3598 b Fg(char)39 b(*)g Ff(history)p -846 299 35 5 v 50 w(no)p 1017 299 V 51 w(expand)p 1429 -299 V 49 w(c)m(hars)390 408 y Fr(The)29 b(list)i(of)f(c)m(haracters)h -(whic)m(h)e(inhibit)h(history)g(expansion)f(if)h(found)e(immediately)j -(follo)m(wing)390 518 y Fj(history)p 672 518 28 4 v 40 -w(expansion)p 1104 518 V 40 w(c)m(har)p Fr(.)41 b(The)30 -b(default)g(is)h(space,)g(tab,)g(newline,)f(carriage)i(return,)e(and)g -(`)p Fq(=)p Fr('.)3371 707 y([V)-8 b(ariable])-3598 b -Fg(int)39 b Ff(history)p 703 707 35 5 v 51 w(quotes)p -1078 707 V 50 w(inhibit)p 1461 707 V 48 w(expansion)390 -817 y Fr(If)29 b(non-zero,)h(single-quoted)g(w)m(ords)f(are)g(not)h -(scanned)f(for)g(the)g(history)g(expansion)g(c)m(haracter.)390 -927 y(The)h(default)g(v)-5 b(alue)31 b(is)g(0.)3371 1116 -y([V)-8 b(ariable])-3598 b Fg(rl_linebuf_func_t)43 b(*)c -Ff(history)p 1526 1116 V 50 w(inhibit)p 1909 1116 V 49 -w(expansion)p 2453 1116 V 49 w(function)390 1226 y Fr(This)32 -b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)f(function)g(that) -h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46 b(a)34 b Fq(char)29 -b(*)390 1335 y Fr(\()p Fj(string)8 b Fr(\))27 b(and)f(an)g -Fq(int)g Fr(index)g(in)m(to)i(that)f(string)f(\()p Fj(i)5 -b Fr(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v)-5 -b(alue)27 b(if)g(the)390 1445 y(history)i(expansion)g(starting)h(at)g -Fj(string[i])j Fr(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h(if)f -(the)g(expansion)390 1554 y(should)i(b)s(e)g(done.)45 -b(It)32 b(is)g(in)m(tended)g(for)g(use)g(b)m(y)f(applications)i(lik)m -(e)h(Bash)e(that)g(use)g(the)g(history)390 1664 y(expansion)e(c)m -(haracter)i(for)e(additional)i(purp)s(oses.)39 b(By)30 -b(default,)h(this)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fq(NULL)p Fr(.)150 1928 y Fp(2.5)68 b(History)46 b(Programming)g -(Example)275 2174 y Fr(The)29 b(follo)m(wing)j(program)e(demonstrates)h -(simple)g(use)f(of)g(the)h Fk(gnu)f Fr(History)h(Library)-8 -b(.)390 2289 y Fd(#include)41 b(<stdio.h>)390 2376 y(#include)g -(<readline/history.h>)390 2550 y(main)f(\(argc,)h(argv\))586 -2638 y(int)f(argc;)586 2725 y(char)g(**argv;)390 2812 -y({)468 2899 y(char)h(line[1024],)g(*t;)468 2986 y(int)f(len,)g(done)h -(=)e(0;)468 3161 y(line[0])i(=)f(0;)468 3335 y(using_history)j(\(\);) -468 3422 y(while)e(\(!done\))547 3509 y({)625 3597 y(printf)g -(\("history$)g("\);)625 3684 y(fflush)g(\(stdout\);)625 -3771 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h(\(line\))f(-)g(1,)g(stdin\);) -625 3858 y(if)g(\(t)g(&&)f(*t\))704 3945 y({)782 4032 -y(len)h(=)g(strlen)g(\(t\);)782 4120 y(if)g(\(t[len)h(-)e(1])h(==)f -('\\n'\))861 4207 y(t[len)h(-)g(1])f(=)h('\\0';)704 4294 -y(})625 4468 y(if)g(\(!t\))704 4555 y(strcpy)g(\(line,)h("quit"\);)625 -4730 y(if)f(\(line[0]\))704 4817 y({)782 4904 y(char)g(*expansion;)782 -4991 y(int)g(result;)782 5166 y(result)h(=)e(history_expand)k(\(line,)d -(&expansion\);)782 5253 y(if)g(\(result\))861 5340 y(fprintf)h -(\(stderr,)g("\045s\\n",)f(expansion\);)p eop end -%%Page: 12 16 -TeXDict begin 12 15 bop 150 -116 a Fr(12)2651 b(GNU)31 -b(History)g(Library)782 386 y Fd(if)40 b(\(result)h(<)e(0)h(||)f -(result)i(==)f(2\))861 473 y({)939 560 y(free)g(\(expansion\);)939 -648 y(continue;)861 735 y(})782 909 y(add_history)i(\(expansion\);)782 -996 y(strncpy)f(\(line,)g(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)782 -1083 y(free)g(\(expansion\);)704 1171 y(})625 1345 y(if)g(\(strcmp)h -(\(line,)f("quit"\))h(==)f(0\))704 1432 y(done)g(=)f(1;)625 -1519 y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f(==)g(0\))704 -1606 y(write_history)i(\("history_file"\);)625 1694 y(else)e(if)g -(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704 1781 y(read_history)i -(\("history_file"\);)625 1868 y(else)e(if)g(\(strcmp)h(\(line,)g -("list"\))f(==)g(0\))704 1955 y({)782 2042 y(register)h(HIST_ENTRY)h -(**the_list;)782 2130 y(register)f(int)f(i;)782 2304 -y(the_list)h(=)f(history_list)i(\(\);)782 2391 y(if)e(\(the_list\))861 -2478 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j(i++\))939 -2565 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h(history_base,)i -(the_list[i]->line\);)704 2653 y(})625 2740 y(else)e(if)g(\(strncmp)h -(\(line,)g("delete",)g(6\))f(==)f(0\))704 2827 y({)782 -2914 y(int)h(which;)782 3001 y(if)g(\(\(sscanf)h(\(line)f(+)g(6,)g -("\045d",)g(&which\)\))h(==)f(1\))861 3088 y({)939 3176 -y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939 -3263 y(if)e(\(!entry\))1018 3350 y(fprintf)g(\(stderr,)i("No)d(such)i -(entry)f(\045d\\n",)h(which\);)939 3437 y(else)1018 3524 -y({)1096 3611 y(free)f(\(entry->line\);)1096 3699 y(free)g(\(entry\);) -1018 3786 y(})861 3873 y(})782 3960 y(else)861 4047 y({)939 -4134 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g -(`delete'\\n"\);)861 4222 y(})704 4309 y(})547 4396 y(})390 -4483 y(})p eop end -%%Page: 13 17 -TeXDict begin 13 16 bop 150 -116 a Fr(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(13)150 299 -y Fn(App)t(endix)52 b(A)40 b(Cop)l(ying)51 b(This)j(Man)l(ual)150 -690 y Fp(A.1)67 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h -(License)1396 909 y Fr(V)-8 b(ersion)31 b(1.2,)h(No)m(v)m(em)m(b)s(er)g -(2002)390 1052 y(Cop)m(yrigh)m(t)842 1049 y(c)817 1052 -y Fo(\015)e Fr(2000,2001,2002)36 b(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) --8 b(oundation,)32 b(Inc.)390 1161 y(59)f(T)-8 b(emple)31 -b(Place,)h(Suite)e(330,)i(Boston,)g(MA)61 b(02111-1307,)35 -b(USA)390 1380 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f(to)h(cop)m(y)g -(and)f(distribute)g(v)m(erbatim)h(copies)390 1490 y(of)g(this)f -(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f(is)f(not)h(allo)m -(w)m(ed.)199 1632 y(0.)61 b(PREAMBLE)330 1770 y(The)37 -b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g(a)g(man)m -(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1880 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Fr(in)29 -b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j -(the)e(e\013ectiv)m(e)j(freedom)330 1990 y(to)f(cop)m(y)g(and)f -(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i -(either)f(commercially)h(or)e(non-)330 2099 y(commercially)-8 -b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f -(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2209 -y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g -(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 -2318 y(made)30 b(b)m(y)h(others.)330 2457 y(This)22 b(License)i(is)f(a) -h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 -b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 -2566 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g -(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 -2676 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) -e(for)g(free)h(soft)m(w)m(are.)330 2814 y(W)-8 b(e)31 -b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h -(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 -2924 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) -65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 -3033 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) -m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g -(to)330 3143 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g -(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 -b(ject)30 b(matter)i(or)330 3252 y(whether)f(it)h(is)f(published)f(as)i -(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h -(License)g(principally)f(for)330 3362 y(w)m(orks)f(whose)h(purp)s(ose)d -(is)j(instruction)f(or)g(reference.)199 3500 y(1.)61 -b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3639 y(This)39 -b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i -(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3748 -y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) -h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 -3858 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f -(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d -(in)330 3967 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j -(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 -4077 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h -(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g -(a)h(licensee,)i(and)330 4187 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 -b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 -b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 -4296 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) -m(yrigh)m(t)j(la)m(w.)330 4435 y(A)i(\\Mo)s(di\014ed)f(V)-8 -b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f -(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4544 y(a)k(p)s(ortion)f -(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s -(di\014cations)f(and/or)h(translated)g(in)m(to)330 4654 -y(another)31 b(language.)330 4792 y(A)26 b(\\Secondary)g(Section")h(is) -f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f -(the)g(Do)s(cumen)m(t)330 4902 y(that)c(deals)g(exclusiv)m(ely)h(with)e -(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f -(Do)s(cumen)m(t)330 5011 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m -(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) -m(tains)h(nothing)f(that)330 5121 y(could)j(fall)h(directly)g(within)f -(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 -b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 -5230 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) -h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 -b(The)330 5340 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e -(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 -b(or)g(with)g(related)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Fr(14)2651 b(GNU)31 -b(History)g(Library)330 299 y(matters,)38 b(or)d(of)h(legal,)i -(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s -(osition)f(regarding)330 408 y(them.)330 549 y(The)25 -b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g -(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 -659 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)330 769 y(under)f(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 878 -y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 -b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) -e(In)m(v)-5 b(arian)m(t)330 988 y(Sections.)39 b(If)25 -b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) --5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 -1129 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g -(short)g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 -b(ron)m(t-Co)m(v)m(er)330 1238 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m -(er)j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g -(the)f(Do)s(cumen)m(t)h(is)f(released)g(under)330 1348 -y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 -b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a) -g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1457 -y(b)s(e)k(at)h(most)g(25)g(w)m(ords.)330 1598 y(A)36 -b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h -(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 -b(represen)m(ted)330 1708 y(in)d(a)h(format)g(whose)g(sp)s -(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g -(public,)h(that)f(is)g(suitable)g(for)330 1817 y(revising)c(the)g(do)s -(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) -f(or)f(\(for)h(images)h(com-)330 1927 y(p)s(osed)23 b(of)h(pixels\))g -(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g -(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 2037 -y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g -(formatters)f(or)g(for)g(automatic)i(translation)f(to)330 -2146 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) -g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g -(otherwise)330 2256 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g -(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f -(arranged)g(to)330 2365 y(th)m(w)m(art)27 b(or)g(discourage)g -(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 -b(ransparen)m(t.)39 b(An)27 b(image)330 2475 y(format)35 -b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g -(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g -(is)330 2585 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i -(\\Opaque".)330 2725 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) --8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fk(asci)r(i)g -Fr(without)330 2835 y(markup,)41 b(T)-8 b(exinfo)40 b(input)f(format,)j -(LaT)1775 2855 y(E)1826 2835 y(X)d(input)g(format,)k -Fk(sgml)c Fr(or)g Fk(xml)g Fr(using)g(a)h(publicly)330 -2945 y(a)m(v)-5 b(ailable)34 b Fk(dtd)p Fr(,)d(and)g -(standard-conforming)g(simple)h Fk(html)p Fr(,)f(P)m(ostScript)h(or)f -Fk(pdf)g Fr(designed)g(for)330 3054 y(h)m(uman)37 b(mo)s(di\014cation.) -65 b(Examples)38 b(of)g(transparen)m(t)g(image)i(formats)e(include)g -Fk(png)p Fr(,)i Fk(x)n(cf)e Fr(and)330 3164 y Fk(jpg)p -Fr(.)63 b(Opaque)38 b(formats)g(include)g(proprietary)g(formats)g(that) -h(can)f(b)s(e)g(read)g(and)f(edited)i(only)330 3273 y(b)m(y)g -(proprietary)g(w)m(ord)g(pro)s(cessors,)j Fk(sgml)c Fr(or)i -Fk(xml)e Fr(for)i(whic)m(h)f(the)g Fk(dtd)g Fr(and/or)g(pro)s(cessing) -330 3383 y(to)s(ols)32 b(are)f(not)g(generally)h(a)m(v)-5 -b(ailable,)34 b(and)c(the)h(mac)m(hine-generated)i Fk(html)p -Fr(,)d(P)m(ostScript)i(or)f Fk(pdf)330 3493 y Fr(pro)s(duced)e(b)m(y)h -(some)h(w)m(ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)e(only)-8 -b(.)330 3634 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m -(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f -(follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g -(legibly)-8 b(,)30 b(the)e(material)h(this)f(License)g(requires)f(to)h -(app)s(ear)f(in)h(the)330 3853 y(title)g(page.)40 b(F)-8 -b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h -(an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 -3962 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s -(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 -4072 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 -4213 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g -(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330 -4322 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m -(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330 -4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g -(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m -(h)330 4542 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e -(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29 -b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g -(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e -(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g -(according)g(to)g(this)g(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t) -i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to) -g(the)g(notice)h(whic)m(h)e(states)i(that)330 5011 y(this)34 -b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33 -b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 -5121 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j -(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330 -5230 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8 -b(arran)m(t)m(y)39 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 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h -(this)f(License.)p eop end -%%Page: 15 19 -TeXDict begin 15 18 bop 150 -116 a Fr(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(15)199 299 -y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 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 -555 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(and)42 -b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i -(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g -(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f -(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f(License.)40 -b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 -b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g -(further)e(cop)m(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 -b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 -b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d -(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f -(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g -(the)f(conditions)330 1212 y(in)e(section)i(3.)330 1358 -y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g -(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g -(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 -y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 -b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g -(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 -1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f -(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 -1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i -(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 -b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m -(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 -b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 -b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 -2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) -m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f -(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 -b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i -(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e -(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g -(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 -2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) -m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) -330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d -(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 -2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e -(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g -(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f -(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) -g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 -3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 -y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f -(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 -3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g -(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) -330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h -(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d -(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e -(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m -(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 -b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g -(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h -(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e -(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g -(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 -b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 -4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s -(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h -(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i -(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h -(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 -4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g -(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 -4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s -(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m -(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g -(the)f(Do)s(cumen)m(t.)199 4755 y(4.)61 b(MODIFICA)-8 -b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) -h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) -e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) -m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f -(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 -b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 -b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f -(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h -(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s -(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 -b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s -(di\014ed)e(V)-8 b(ersion:)p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Fr(16)2651 b(GNU)31 -b(History)g(Library)357 299 y(A.)60 b(Use)33 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(an)m(y\))g(a)g(title)h -(distinct)f(from)g(that)g(of)g(the)510 408 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(,)510 518 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 -628 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 758 -y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h(one)g -(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c(for)510 -867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g(Mo)s -(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h(\014v)m -(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s(cumen)m -(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g(few)m -(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g(y)m -(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 -b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g -(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 -b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 -b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) -363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g -(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 -y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g -(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 -1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g -(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 -2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f -(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e -(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f -(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 -y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) -392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g -(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g -(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d -(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 -b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 -b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e -(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f -(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s -(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i -(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m -(tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s -(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m -(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 -b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) -m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m -(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 -b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 -y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) -m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h -(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e -(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) -d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s -(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m -(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k -(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d -(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) -h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m -(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 -4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f -(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 -b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 -b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 -4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 -b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 -b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 -4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 -4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f -(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g -(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 -b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g -(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f -(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g -(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h -(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end -%%Page: 17 21 -TeXDict begin 17 20 bop 150 -116 a Fr(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(17)330 299 -y(y)m(our)32 b(option)h(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)330 408 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 518 -y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g -(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) -i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g -(nothing)g(but)330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s -(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 -b(parties|for)g(example,)g(statemen)m(ts)i(of)330 869 -y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) -m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 -978 y(de\014nition)i(of)h(a)f(standard.)330 1110 y(Y)-8 -b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m -(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 -b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e -(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i -(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s -(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f -(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m -(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439 -y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) -g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) -g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g -(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m -(y)g(arrangemen)m(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m -(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g -(not)f(add)g(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the) -f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e -(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 -2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s -(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s -(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g -(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g -(Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 -b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m -(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h -(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g -(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f -(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 -y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s -(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g -(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) -g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 -b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m -(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) -i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 -b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h -(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m -(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g -(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f -(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f -(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g -(the)g(original)h(author)f(or)330 3499 y(publisher)23 -b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m -(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 -3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h -(com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m -(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g -(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 -3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h -(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 -4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 -b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 -b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m -(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 -b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f -(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g -(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k -(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f -(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) -g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 -b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 -b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g -(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 -4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 -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 -(collection,)i(and)d(distribute)g(it)h(individu-)330 -5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g -(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 -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: 18 22 -TeXDict begin 18 21 bop 150 -116 a Fr(18)2651 b(GNU)31 -b(History)g(Library)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 -b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 428 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 -538 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m -(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) -330 648 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e -(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 -757 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m -(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 -b(When)330 867 y(the)28 b(Do)s(cumen)m(t)g(is)g(included)f(an)g -(aggregate,)32 b(this)27 b(License)h(do)s(es)g(not)g(apply)f(to)h(the)g -(other)g(w)m(orks)330 976 y(in)i(the)h(aggregate)i(whic)m(h)d(are)h -(not)f(themselv)m(es)i(deriv)-5 b(ativ)m(e)32 b(w)m(orks)e(of)h(the)f -(Do)s(cumen)m(t.)330 1106 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 -b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f -(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1215 -y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f -(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m -(er)330 1325 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m -(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h -(aggregate,)j(or)d(the)330 1435 y(electronic)37 b(equiv)-5 -b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f -(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 -1544 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f -(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1674 y(8.)61 -b(TRANSLA)-8 b(TION)330 1803 y(T)g(ranslation)41 b(is)f(considered)f(a) -i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e -(translations)330 1913 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h -(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 -b(arian)m(t)45 b(Sections)g(with)330 2022 y(translations)h(requires)f -(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i -(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2132 y(include)24 -b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 -b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 -2242 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 -b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f -(License,)i(and)d(all)j(the)330 2351 y(license)42 b(notices)g(in)f(the) -h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 -b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2461 -y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g -(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 -2570 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 -b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f -(translation)i(and)330 2680 y(the)f(original)i(v)m(ersion)e(of)h(this)f -(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m -(ersion)g(will)330 2790 y(prev)-5 b(ail.)330 2919 y(If)28 -b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m -(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 -3029 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m -(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 -3138 y(c)m(hanging)j(the)g(actual)h(title.)199 3268 y(9.)61 -b(TERMINA)-8 b(TION)330 3397 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h -(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3507 y(pro)m(vided)41 -b(for)h(under)e(this)i(License.)75 b(An)m(y)42 b(other)g(attempt)h(to)g -(cop)m(y)-8 b(,)46 b(mo)s(dify)-8 b(,)44 b(sublicense)e(or)330 -3616 y(distribute)36 b(the)h(Do)s(cumen)m(t)g(is)g(v)m(oid,)i(and)d -(will)h(automatically)i(terminate)f(y)m(our)e(righ)m(ts)h(under)330 -3726 y(this)28 b(License.)40 b(Ho)m(w)m(ev)m(er,)31 b(parties)d(who)f -(ha)m(v)m(e)i(receiv)m(ed)g(copies,)h(or)d(righ)m(ts,)i(from)f(y)m(ou)g -(under)e(this)330 3836 y(License)37 b(will)g(not)g(ha)m(v)m(e)h(their)f -(licenses)g(terminated)h(so)f(long)g(as)g(suc)m(h)f(parties)h(remain)g -(in)f(full)330 3945 y(compliance.)154 4075 y(10.)61 b(FUTURE)30 -b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 4204 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 4314 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g -(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h -(in)g(spirit)330 4423 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma) -m(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i -(concerns.)330 4533 y(See)c Fq(http://www.gnu.org/copy)o(left)o(/)p -Fr(.)330 4663 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m -(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 -b(If)29 b(the)g(Do)s(cumen)m(t)330 4772 y(sp)s(eci\014es)45 -b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g -(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 4882 -y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f -(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 -4991 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m -(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g -(b)m(y)330 5101 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 -b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s -(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 5210 -y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m -(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) -h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p -eop end -%%Page: 19 23 -TeXDict begin 19 22 bop 150 -116 a Fr(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(19)150 299 -y Fi(A.1.1)62 b(ADDENDUM:)41 b(Ho)m(w)g(to)g(use)g(this)g(License)g -(for)h(y)m(our)f(do)s(cumen)m(ts)275 543 y Fr(T)-8 b(o)27 -b(use)g(this)g(License)h(in)f(a)h(do)s(cumen)m(t)f(y)m(ou)h(ha)m(v)m(e) -g(written,)g(include)f(a)h(cop)m(y)g(of)f(the)h(License)g(in)f(the)150 -653 y(do)s(cumen)m(t)j(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)m -(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 -765 y Fd(Copyright)42 b(\(C\))79 b Fc(year)88 b(your)40 -b(name)p Fd(.)468 852 y(Permission)i(is)e(granted)g(to)g(copy,)h -(distribute)g(and/or)g(modify)f(this)g(document)468 939 -y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i -(License,)f(Version)g(1.2)468 1026 y(or)f(any)g(later)g(version)h -(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 -1113 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g -(and)f(no)f(Back-Cover)j(Texts.)468 1200 y(A)e(copy)g(of)g(the)g -(license)g(is)g(included)h(in)f(the)g(section)h(entitled)g(``GNU)468 -1288 y(Free)g(Documentation)h(License''.)275 1410 y Fr(If)d(y)m(ou)h -(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 -b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k -(T)-8 b(exts,)43 b(replace)e(the)150 1520 y(\\with...T)-8 -b(exts.")43 b(line)30 b(with)h(this:)547 1632 y Fd(with)40 -b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p -Fd(,)h(with)547 1719 y(the)f(Front-Cover)i(Texts)e(being)g -Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 -1806 y(being)f Fc(list)p Fd(.)275 1929 y Fr(If)34 b(y)m(ou)i(ha)m(v)m -(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 -b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 -2038 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e -(suit)f(the)h(situation.)275 2173 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f -(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m -(e)e(recommend)g(releasing)150 2283 y(these)44 b(examples)f(in)g -(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h -(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2392 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: 20 24 -TeXDict begin 20 23 bop 150 -116 a Fr(20)2651 b(GNU)31 -b(History)g(Library)p eop end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Fr(App)s(endix)29 -b(B:)i(Concept)f(Index)2391 b(21)150 299 y Fn(App)t(endix)52 -b(B)47 b(Concept)k(Index)150 638 y Fp(A)150 796 y Fb(anc)n(hored)26 -b(searc)n(h)7 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)33 b Fb(8)150 1138 y Fp(E)150 1296 y Fb(ev)n(en)n(t)25 -b(designators)d Fa(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(1)2025 638 y Fp(F)2025 754 y Fb(FDL,)25 b(GNU)g(F)-6 -b(ree)26 b(Do)r(cumen)n(tation)g(License)11 b Fa(.)i(.)g(.)f(.)g(.)h(.) -f(.)37 b Fb(13)2025 1005 y Fp(H)2025 1121 y Fb(history)25 -b(ev)n(en)n(ts)d Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)49 b Fb(1)2025 1209 y(history)25 b(expansion)15 -b Fa(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b -Fb(1)2025 1296 y(History)25 b(Searc)n(hing)12 b Fa(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(8)p eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Fr(22)2651 b(GNU)31 -b(History)g(Library)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Fr(App)s(endix)29 -b(C:)h(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)1832 -b(23)150 299 y Fn(App)t(endix)52 b(C)45 b(F)-13 b(unction)52 -b(and)h(V)-13 b(ariable)53 b(Index)150 638 y Fp(A)150 -755 y Fd(add_history)24 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)48 b Fb(6)150 842 y Fd(add_history_time)14 -b Fa(.)i(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(6)150 -929 y Fd(append_history)17 b Fa(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)43 b Fb(9)150 1182 y Fp(C)150 1299 y Fd(clear_history)22 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fb(7)150 1386 y Fd(current_history)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)42 b Fb(7)150 1639 y Fp(F)150 1755 -y Fd(free_history_entry)11 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -37 b Fb(6)150 2008 y Fp(G)150 2124 y Fd(get_history_event)13 -b Fa(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(9)150 -2377 y Fp(H)150 2494 y Fd(history_arg_extract)9 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(10)150 2581 y Fd(history_base)22 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fb(10)150 2669 y Fd(history_comment_char)7 b Fa(.)17 -b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)33 b Fb(10)150 2756 y Fd(history_expand)17 -b Fa(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fb(9)150 2843 y Fd(history_expansion_char)28 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)48 b Fb(10)150 2931 y Fd(history_get)24 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fb(7)150 3018 y Fd(history_get_history_state)25 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 -b Fb(6)150 3106 y Fd(history_get_time)14 b Fa(.)i(.)d(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)40 b Fb(7)150 3193 y Fd(history_inhibit_expansion_fun)q -(ctio)q(n)29 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(11)150 -3280 y Fd(history_is_stifled)11 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)37 b Fb(7)150 3368 y Fd(history_length)16 b Fa(.)g(.)c(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(10)150 3455 y Fd(history_list)23 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)46 -b Fb(7)150 3543 y Fd(history_max_entries)9 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(10)150 3630 y Fd -(history_no_expand_chars)26 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fb(11)150 -3718 y Fd(history_quotes_inhibit_expans)q(ion)9 b Fa(.)18 -b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(11)150 -3805 y Fd(history_search)17 b Fa(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)43 b Fb(8)150 3892 y Fd(history_search_delimiter_char)q(s)11 -b Fa(.)18 b(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 -b Fb(10)150 3980 y Fd(history_search_pos)11 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(8)2025 638 y -Fd(history_search_prefix)7 b Fa(.)17 b(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 -b Fb(8)2025 725 y Fd(history_set_history_state)25 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 -b Fb(6)2025 813 y Fd(history_set_pos)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)42 b Fb(8)2025 900 y Fd(history_subst_char)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(10)2025 -987 y Fd(history_tokenize)13 b Fa(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -39 b Fb(10)2025 1074 y Fd(history_total_bytes)10 b Fa(.)16 -b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(7)2025 1162 y Fd -(history_truncate_file)7 b Fa(.)17 b(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 -b Fb(9)2025 1249 y Fd(history_word_delimiters)26 b Fa(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)47 b Fb(10)2025 1336 y Fd(history_write_timestamps)25 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)46 b Fb(10)2025 1588 y Fp(N)2025 1704 y Fd(next_history)23 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(8)2025 1956 y Fp(P)2025 2072 y Fd(previous_history)14 -b Fa(.)i(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fb(8)2025 -2324 y Fp(R)2025 2440 y Fd(read_history)23 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(9)2025 2527 y Fd(read_history_range)11 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(9)2025 2614 y -Fd(remove_history)17 b Fa(.)e(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)44 b Fb(6)2025 2702 y Fd(replace_history_entry)7 -b Fa(.)17 b(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(7)2025 2953 y -Fp(S)2025 3069 y Fd(stifle_history)17 b Fa(.)e(.)e(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)44 b Fb(7)2025 3321 y Fp(U)2025 3437 -y Fd(unstifle_history)14 b Fa(.)i(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -41 b Fb(7)2025 3525 y Fd(using_history)21 b Fa(.)13 b(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(6)2025 3776 y -Fp(W)2025 3893 y Fd(where_history)21 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(7)2025 3980 y Fd(write_history)21 -b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fb(9)p eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Fr(24)2651 b(GNU)31 -b(History)g(Library)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/readline/doc/history_3.ps b/readline/doc/history_3.ps deleted file mode 100644 index 855292b..0000000 --- a/readline/doc/history_3.ps +++ /dev/null @@ -1,829 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.18.1 -%%CreationDate: Mon Sep 22 09:15:44 2003 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%DocumentSuppliedResources: procset grops 1.18 1 -%%Pages: 7 -%%PageOrder: Ascend -%%Orientation: Portrait -%%EndComments -%%BeginProlog -%%BeginResource: procset grops 1.18 1 -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}bind def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/Fk{ -setcmykcolor fill -}bind def -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/Ck/setcmykcolor load def -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -}bind def -/PEND{ -clear -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron -/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE -/Times-Roman@0 ENC0/Times-Roman RE -%%EndProlog -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME) -.219 E F0(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72 -112.8 Q F0(The GNU History Library is Cop)108 124.8 Q -(yright \251 1989-2002 by the Free Softw)-.1 E(are F)-.1 E -(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q -2.81(yp)-.15 G .31(rograms read input from the user a line at a time.) --2.81 F .309(The GNU History library is able to k)5.309 F .309 -(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\ -h line, and utilize information from pre)108 165.6 R .024 -(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5 -E F1(HIST)72 199.2 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81 -E F0 .823(The history library supports a history e)108 211.2 R .822 -(xpansion feature that is identical to the history e)-.15 F .822 -(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0 -(This section describes what syntax features are a)108 223.2 Q -.25(va) --.2 G(ilable.).25 E 1.305(History e)108 240 R 1.305 -(xpansions introduce w)-.15 F 1.306(ords from the history list into the\ - input stream, making it easy to repeat)-.1 F .21 -(commands, insert the ar)108 252 R .21(guments to a pre)-.18 F .209 -(vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 264 Q(.)-.65 E 1.296(History e)108 -280.8 R 1.297(xpansion is usually performed immediately after a complet\ -e line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F -(o)-.1 E 2.855(parts. The)108 292.8 R .354(\214rst is to determine whic\ -h line from the history list to use during substitution.)2.855 F .354 -(The second is to)5.354 F .116 -(select portions of that line for inclusion into the current one.)108 -304.8 R .117(The line selected from the history is the)5.116 F/F3 10 -/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846 -(and the portions of that line that are acted upon are)108 316.8 R F3 -(wor)3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346 -E(s)-.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate) -.25 F .304(the selected w)108 328.8 R 2.804(ords. The)-.1 F .304 -(line is brok)2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F -.304(ashion as)-.1 F F2(bash)2.804 E F0 .305 -(does when reading input, so)2.804 F .539(that se)108 340.8 R -.15(ve) --.25 G .539(ral w).15 F .539(ords that w)-.1 F .539 -(ould otherwise be separated are considered one w)-.1 F .538 -(ord when surrounded by quotes)-.1 F .307(\(see the description of)108 -352.8 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807 -(w\). History)-.25 F -.15(ex)2.807 G .307 -(pansions are introduced by the appearance of).15 F .52(the history e) -108 364.8 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is) --3.02 F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52 -(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52 -(nd single quotes can quote the)-3.02 F(history e)108 376.8 Q -(xpansion character)-.15 E(.)-.55 E F2(Ev)87 393.6 Q(ent Designators)-.1 -E F0(An e)108 405.6 Q -.15(ve)-.25 G(nt designator is a reference to a \ -command line entry in the history list.).15 E F2(!)108 422.4 Q F0 -(Start a history substitution, e)32.67 E(xcept when follo)-.15 E -(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G -(line, = or \(.).25 E F2(!)108 434.4 Q F3(n)A F0(Refer to command line) -27.67 E F3(n)2.5 E F0(.).24 E F2<21ad>108 446.4 Q F3(n)A F0 -(Refer to the current command line minus)21.97 E F3(n)2.5 E F0(.).24 E -F2(!!)108 458.4 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 470.4 Q F3(string) -A F0(Refer to the most recent command starting with)9.33 E F3(string)2.5 -E F0(.).22 E F2(!?)108 482.4 Q F3(string)A F2([?])A F0 1.022 -(Refer to the most recent command containing)144 494.4 R F3(string)3.522 -E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F2(?)3.522 E F0 1.022 -(may be omitted if)3.522 F F3(string)3.862 E F0(is)3.742 E(follo)144 -506.4 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F4 12/Times-Bold@0 -SF(^)108 523.4 Q F3(string1)-5 I F4(^)5 I F3(string2)-5 I F4(^)5 I F0 -2.63(Quick substitution.)144 530.4 R 2.629 -(Repeat the last command, replacing)7.629 F F3(string1)5.469 E F0(with) -5.129 E F3(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25(va)-.25 G -2.629(lent to).25 F -.74(``)144 542.4 S(!!:s/).74 E F3(string1)A F0(/)A -F3(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 554.4 Q F0 -(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75 -(Wo)87 571.2 S(rd Designators).75 E F0 -.8(Wo)108 583.2 S 1.313 -(rd designators are used to select desired w).8 F 1.314(ords from the e) --.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314 -(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F -.53(from the w)108 595.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G -3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 -(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 -($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r) --3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 607.2 R 1.3 -(ginning of the line, with the \214rst w)-.15 F 1.301 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 -F(inserted into the current line separated by single spaces.)108 619.2 Q -F2 2.5(0\()108 636 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 648 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F3 -(n)108.36 660 Q F0(The)30.64 E F3(n)2.5 E F0(th w)A(ord.)-.1 E F2(^)108 -672 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E -(ord 1.)-.1 E F2($)108 684 Q F0(The last ar)31 E(gument.)-.18 E F2(%)108 -696 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F3(string)A -F0(?' search.)A F3(x)108.77 708 Q F2<ad>A F3(y)A F0 2.5(Ar)20.65 G -(ange of w)-2.5 E(ords; `\255)-.1 E F3(y)A F0 2.5('a)C(bbre)-2.5 E -(viates `0\255)-.25 E F3(y)A F0('.)A(GNU History 5.0)72 768 Q -(2003 July 31)139.005 E(1)203.165 E 0 Cg EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(*)108 84 Q F0 .316 -(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315 -(This is a synon)5.315 F .315(ym for `)-.15 F/F2 10/Times-Italic@0 SF -(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*) -2.815 E F0 .315(if there is)2.815 F(just one w)144 96 Q(ord in the e)-.1 -E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15 E F1 -(x*)108 108 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1 -<78ad>108 120 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 -E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E -(If a w)108 136.8 Q(ord designator is supplied without an e)-.1 E -.15 -(ve)-.25 G(nt speci\214cation, the pre).15 E -(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 -(Modi\214ers)87 153.6 Q F0 .183(After the optional w)108 165.6 R .183 -(ord designator)-.1 F 2.683(,t)-.4 G .184 -(here may appear a sequence of one or more of the follo)-2.683 F .184 -(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 177.6 Q F1(h)108 -194.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H -(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1 -(t)108 206.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H -(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r) -108 218.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E -(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 230.4 Q F0(Remo)31.56 E .3 -.15(ve a) --.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 242.4 -Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 -E -.15(xe)-.15 G(cute it.).15 E F1(q)108 254.4 Q F0 -(Quote the substituted w)30.44 E(ords, escaping further substitutions.) --.1 E F1(x)108 266.4 Q F0(Quote the substituted w)31 E(ords as with)-.1 -E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks) -2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 278.4 Q F2(old)A F1(/)A -F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 290.4 Q F2(ne)3.082 E(w)-.15 E -F0 .221(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221 -(in the e)3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721 -(yd)-.15 G .221(elimiter can be used in place)-2.721 F .616(of /.)144 -302.4 R .617 -(The \214nal delimiter is optional if it is the last character of the e) -5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 -F .666(be quoted in)144 314.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) -3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 -(If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 -(ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .274(single backslash will quote the &.)144 326.4 R -(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 -F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 -(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E -(ous history substitutions took place, the last)144 338.4 Q F2(string) -2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 -(&)108 350.4 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 -(g)108 362.4 Q F0 .398(Cause changes to be applied o)31 F -.15(ve)-.15 G -2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.) -.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897 -('\()C(e.g.,)-2.897 E(`)144 374.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) --.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 -(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 -(elimiter can be used in place of /, and the \214nal)-3.718 F .09 -(delimiter is optional if it is the last character of the e)144 386.4 R --.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 -(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 398.4 Q F0 -(.)A F1(G)108 410.4 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 -2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 -G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(PR)72 427.2 Q -(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738 -E F0(This section describes ho)108 439.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G -(se the History library in other programs.)-2.5 E F1(Intr)87 456 Q -(oduction to History)-.18 E F0 .796 -(The programmer using the History library has a)108 468 R -.25(va)-.2 G -.797(ilable functions for remembering lines on a history list,).25 F -.308(associating arbitrary data with a line, remo)108 480 R .308 -(ving lines from the list, searching through the list for a line con-) --.15 F .303(taining an arbitrary te)108 492 R .303 -(xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303 -(ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G -.303(ddition, a history)-2.803 F F2 -.2(ex)2.803 G(pansion).2 E F0 -(function is a)108 504 Q -.25(va)-.2 G(ilable which pro).25 E -(vides for a consistent user interf)-.15 E(ace across dif)-.1 E -(ferent programs.)-.25 E .059(The user using programs written with the \ -History library has the bene\214t of a consistent user interf)108 520.8 -R .058(ace with a)-.1 F .917(set of well-kno)108 532.8 R .917 -(wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917 -(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.418(wc)-.25 -G(om-)-3.418 E 4.184(mands. The)108 544.8 R 1.684(basic history manipul\ -ation commands are identical to the history substitution pro)4.184 F -1.683(vided by)-.15 F F1(bash)108 556.8 Q F0(.)A .903 -(If the programmer desires, he can use the Readline library)108 573.6 R -3.403(,w)-.65 G .904(hich includes some history manipulation by)-3.403 F -(def)108 585.6 Q(ault, and has the added adv)-.1 E -(antage of command line editing.)-.25 E .39(Before declaring an)108 -602.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39 -(unctionality the History library pro)-2.89 F .39 -(vides in other code, an appli-)-.15 F .066 -(cation writer should include the \214le)108 614.4 R F2(<r)4.232 E -(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.232 F 2.567<798c>-.15 -G .067(le that uses the History library')-2.567 F 2.567(sf)-.55 G -(eatures.)-2.567 E .539(It supplies e)108 626.4 R .538 -(xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538 -(ublic functions and v)-3.038 F .538(ariables, and declares all of the) --.25 F(public data structures.)108 638.4 Q F1(History Storage)87 667.2 Q -F0(The history list is an array of history entries.)108 679.2 Q 2.5(Ah)5 -G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *) -108 696 Q F1(histdata_t;)2.5 E F0(typedef struct _hist_entry {)108 712.8 -Q(char *line;)113 724.8 Q(GNU History 5.0)72 768 Q(2003 July 31)139.005 -E(2)203.165 E 0 Cg EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E(char *timestamp;)113 84 Q(histdata_t data;)113 -96 Q 2.5(}H)108 108 S(IST_ENTR)-2.5 E -.92(Y;)-.65 G -(The history list itself might therefore be declared as)108 124.8 Q/F1 -10/Times-Italic@0 SF(HIST_ENTR)108 141.6 Q 2.5(Y*)-.18 G(*)-2.5 E/F2 10 -/Times-Bold@0 SF(the_history_list;)2.5 E F0(The state of the History li\ -brary is encapsulated into a single structure:)108 158.4 Q(/*)108 175.2 -Q 2.5(*As)110.5 187.2 S -(tructure used to pass around the current state of the history)-2.5 E(.) --.65 E(*/)110.5 199.2 Q(typedef struct _hist_state {)108 211.2 Q -(HIST_ENTR)113 223.2 Q 2.5(Y*)-.65 G -(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E -(int of)113 235.2 Q 25(fset; /*)-.25 F -(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E -(int length;)113 247.2 Q(/* Number of elements within this array)27.5 E -2.5(.*)-.65 G(/)-2.5 E(int size;)113 259.2 Q -(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5 -E(int \215ags;)113 271.2 Q 2.5(}H)108 283.2 S(IST)-2.5 E(OR)-.18 E(Y_ST) --.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108 300 -Q F2(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)-2.5 E -/F3 10.95/Times-Bold@0 SF(History Functions)72 316.8 Q F0 -(This section describes the calling sequence for the v)108 328.8 Q -(arious functions e)-.25 E(xported by the GNU History library)-.15 E(.) --.65 E F2(Initializing History and State Management)87 345.6 Q F0 1.274 -(This section describes functions used to initialize and manage the sta\ -te of the History library when you)108 357.6 R -.1(wa)108 369.6 S -(nt to use the history functions in your program.).1 E F1(void)108 393.6 -Q F2(using_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Be)108 -405.6 Q(gin a session in which the history functions might be used.)-.15 -E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E -F1(HIST)108 429.6 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2 -(history_get_history_state)A F0(\()4.166 E F1(void)A F0(\))1.666 E -(Return a structure describing the current state of the input history) -108 441.6 Q(.)-.65 E F1(void)108 465.6 Q F2(history_set_history_state) -2.5 E F0(\()4.166 E F1(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5 -(E*).37 G(state)-2.5 E F0(\))1.666 E -(Set the state of the history list according to)108 477.6 Q F1(state)2.5 -E F0(.)A F2(History List Management)87 506.4 Q F0 -(These functions manage indi)108 518.4 Q(vidual entries on the history \ -list, or set parameters managing the list itself.)-.25 E F1(void)108 -542.4 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15 -E F0(\))1.666 E(Place)108 554.4 Q F1(string)2.5 E F0 -(at the end of the history list.)2.5 E -(The associated data \214eld \(if an)5 E(y\) is set to)-.15 E F2(NULL) -2.5 E F0(.)A F1(void)108 578.4 Q F2(add_history_time)2.5 E F0(\()4.166 E -F1(const c)A(har *string)-.15 E F0(\))1.666 E -(Change the time stamp associated with the most recent history entry to) -108 590.4 Q F1(string)2.5 E F0(.)A F1(HIST_ENTR)108 614.4 Q 2.5(Y*)-.18 -G F2 -.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1 -(int whic)A(h)-.15 E F0(\))1.666 E(Remo)108 626.4 Q .353 -.15(ve h)-.15 -H .053(istory entry at of).15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0 -.053(from the history)2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15 -(ve)-.15 G 2.553(de).15 G .052(lement is returned so you can free the) --2.553 F(line, data, and containing structure.)108 638.4 Q F1 -(histdata_t)108 662.4 Q F2(fr)2.5 E(ee_history_entry)-.18 E F0(\()4.166 -E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))1.666 E .933 -(Free the history entry)108 674.4 R F1(histent)3.433 E F0 .933(and an) -3.433 F 3.433(yh)-.15 G .933(istory library pri)-3.433 F -.25(va)-.25 G -.933(te data associated with it.).25 F .934(Returns the applica-)5.933 F -(tion-speci\214c data so the caller can dispose of it.)108 686.4 Q F1 -(HIST_ENTR)108 710.4 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry) -.18 E F0(\()4.166 E F1(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G -(ar *line).15 E 1.666(,h)-.1 G(istdata_t data)-1.666 E F0(\))3.332 E -(Mak)108 722.4 Q 4.014(et)-.1 G 1.514(he history entry at of)-4.014 F -(fset)-.25 E F1(whic)4.013 E(h)-.15 E F0(ha)4.013 E -.15(ve)-.2 G F1 -(line)4.163 E F0(and)4.013 E F1(data)4.013 E F0 6.513(.T)C 1.513 -(his returns the old entry so the caller can)-6.513 F(GNU History 5.0)72 -768 Q(2003 July 31)139.005 E(3)203.165 E 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E(dispose of an)108 84 Q 2.5(ya)-.15 G -(pplication-speci\214c data.)-2.5 E(In the case of an in)5 E -.25(va)-.4 -G(lid).25 E/F1 10/Times-Italic@0 SF(whic)2.5 E(h)-.15 E F0 2.5(,a)C/F2 -10/Times-Bold@0 SF(NULL)A F0(pointer is returned.)2.5 E F1(void)108 108 -Q F2(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E -(Clear the history list by deleting all the entries.)108 120 Q F1(void) -108 144 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\)) -1.666 E(Sti\215e the history list, remembering only the last)108 156 Q -F1(max)2.5 E F0(entries.)2.5 E F1(int)108 180 Q F2(unsti\215e_history) -2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .46 -(Stop sti\215ing the history)108 192 R 5.46(.T)-.65 G .46 -(his returns the pre)-5.46 F .46 -(viously-set maximum number of history entries \(as set by)-.25 F F2 -(sti-)2.96 E(\215e_history\(\))108 204 Q F0 2.5(\). history)B -.1(wa)2.5 -G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi).25 E -.3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E(as sti\215ed, ne) --.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5(fi).15 G 2.5(tw) --2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 228 Q F2(history_is_sti\215ed) -2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E -(Returns non-zero if the history is sti\215ed, zero if it is not.)108 -240 Q F2(Inf)87 268.8 Q(ormation About the History List)-.25 E F0(These\ - functions return information about the entire history list or indi)108 -280.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 304.8 Q 2.5(Y*)-.18 -G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E -.708(Return a)108 316.8 R F2(NULL)3.208 E F0 .708(terminated array of) -3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708 -(which is the current input history)B 5.707(.E)-.65 G .707 -(lement 0 of this)-5.707 F(list is the be)108 328.8 Q(ginning of time.) --.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5 -E F0(.)A F1(int)108 352.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E -F1(void)A F0(\))1.666 E(Returns the of)108 364.8 Q -(fset of the current history element.)-.25 E F1(HIST_ENTR)108 388.8 Q -2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0 -(\))1.666 E 1.373 -(Return the history entry at the current position, as determined by)108 -400.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft) --6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 412.8 Q F2 -(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 436.8 Q 2.5(Y*) --.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\)) -1.666 E .288(Return the history entry at position)108 448.8 R F1(of) -2.787 E(fset)-.18 E F0 2.787(,s)C .287(tarting from)-2.787 F F2 -(history_base)2.787 E F0 5.287(.I)C 2.787(ft)-5.287 G .287 -(here is no entry there, or if)-2.787 F F1(of)2.787 E(fset)-.18 E F0 -(is greater than the history length, return a)108 460.8 Q F2(NULL)2.5 E -F0(pointer)2.5 E(.)-.55 E F1(time_t)108 484.8 Q F2(history_get_time)2.5 -E F0(\()4.166 E F1(HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the t\ -ime stamp associated with the history entry passed as the ar)108 496.8 Q -(gument.)-.18 E F1(int)108 520.8 Q F2(history_total_bytes)2.5 E F0(\() -4.166 E F1(void)A F0(\))1.666 E .391 -(Return the number of bytes that the primary history entries are using.) -108 532.8 R .392(This function returns the sum of the)5.392 F -(lengths of all the lines in the history)108 544.8 Q(.)-.65 E F2(Mo)87 -573.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0 -(These functions allo)108 585.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E -2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int) -108 609.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\)) -1.666 E .79(Set the current history of)108 621.6 R .79(fset to)-.25 F F1 -(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29 -(xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79 -F F1(pos)3.29 E F0 .79(is less)3.29 F -(than zero or greater than the number of history entries.)108 633.6 Q F1 -(HIST_ENTR)108 657.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G -(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .207 -(Back up the current history of)108 669.6 R .207(fset to the pre)-.25 F -.207(vious history entry)-.25 F 2.708(,a)-.65 G .208 -(nd return a pointer to that entry)-2.708 F 5.208(.I)-.65 G 2.708(ft) --5.208 G .208(here is)-2.708 F(no pre)108 681.6 Q(vious entry)-.25 E 2.5 -(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1 -(HIST_ENTR)108 705.6 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1 -(void)A F0(\))1.666 E(Mo)108 717.6 Q 1.047 -.15(ve t)-.15 H .747 -(he current history of).15 F .747(fset forw)-.25 F .746(ard to the ne) --.1 F .746(xt history entry)-.15 F 3.246(,a)-.65 G .746 -(nd return the a pointer to that entry)-3.246 F 5.746(.I)-.65 G(f)-5.746 -E(there is no ne)108 729.6 Q(xt entry)-.15 E 2.5(,r)-.65 G(eturn a)-2.5 -E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E(GNU History 5.0)72 768 Q -(2003 July 31)139.005 E(4)203.165 E 0 Cg EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(Sear)87 84 Q -(ching the History List)-.18 E F0 .005(These functions allo)108 96 R -2.505(ws)-.25 G .006(earching of the history list for entries containin\ -g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452 -(performed both forw)108 108 R 1.452(ard and backw)-.1 F 1.451 -(ard from the current history position.)-.1 F 1.451(The search may be) -6.451 F/F2 10/Times-Italic@0 SF(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A -(meaning that the string must match at the be)108 120 Q -(ginning of the history entry)-.15 E(.)-.65 E F2(int)108 144 Q F1 -(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F2(const c)A(har *string) --.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155 -(Search the history for)108 156 R F2(string)2.655 E F0 2.656(,s)C .156 -(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F2 -(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656 -F .802(is through pre)108 168 R .802 -(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E -F2(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064 -(tory inde)108 180 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064 -(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564 -F .064(alue returned is the of)-.25 F .064 -(fset in the line of the entry where)-.25 F F2(string)2.565 E F0 -.1(wa) -108 192 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F -(nothing is changed, and a -1 is returned.)2.5 E F2(int)108 216 Q F1 -(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F2(const c) -A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\)) -1.666 E .684(Search the history for)108 228 R F2(string)3.183 E F0 3.183 -(,s)C .683(tarting at the current history of)-3.183 F 3.183(fset. The) --.25 F .683(search is anchored: matching lines)3.183 F 1.063(must be)108 -240 R 1.063(gin with)-.15 F F2(string)3.563 E F0 6.063(.I)C(f)-6.063 E -F2(dir)3.563 E(ection)-.37 E F0 1.064 -(is less than 0, then the search is through pre)3.563 F 1.064 -(vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108 -252 R(If)6.115 E F2(string)3.615 E F0 1.115 -(is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614 -(ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114 -(nd the)-3.614 F(return v)108 264 Q(alue is 0.)-.25 E -(Otherwise, nothing is changed, and a -1 is returned.)5 E F2(int)108 288 -Q F1(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F2(const c)A -(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834(ection, int) --.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 300 R F2(string)3.103 -E F0 .603(in the history list, starting at)3.103 F F2(pos)3.104 E F0 -3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104(xi)-.15 G -.604(nto the list.)-3.104 F(If)5.604 E F2(dir)3.104 E(ection)-.37 E F0 -.604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,).15 E .608 -(the search proceeds backw)108 312 R .608(ard from)-.1 F F2(pos)3.108 E -F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108(ard. Returns)-.1 F .608 -(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108(ft)-3.108 G .608 -(he history ele-)-3.108 F(ment where)108 324 Q F2(string)2.5 E F0 -.1 -(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F1 -(Managing the History File)87 352.8 Q F0 .035(The History library can r\ -ead the history from and write it to a \214le.)108 364.8 R .036 -(This section documents the functions for)5.035 F -(managing a history \214le.)108 376.8 Q F2(int)108 400.8 Q F1 -.18(re) -2.5 G(ad_history).18 E F0(\()4.166 E F2(const c)A(har *\214lename)-.15 E -F0(\))1.666 E .151(Add the contents of)108 412.8 R F2(\214lename)2.651 E -F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F2 -(\214lename)2.65 E F0(is)2.65 E F1(NULL)2.65 E F0 2.65(,t)C .15 -(hen read from)-2.65 F F2(~/.his-)2.65 E(tory)108 424.8 Q F0 5(.R)C -(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E -F2(int)108 448.8 Q F1 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E -F2(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834 -(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from) -108 460.8 R F2(\214lename)2.553 E F0 2.553(,a)C .053 -(dding them to the history list.)-2.553 F .053(Start reading at line) -5.053 F F2(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F2(to)2.553 E -F0(.)A(If)108 472.8 Q F2(fr)2.889 E(om)-.45 E F0 .389 -(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F2(to)2.889 E -F0 .389(is less than)2.889 F F2(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388 -(hen read until the end of the \214le.)-2.889 F(If)5.388 E F2 -(\214lename)2.888 E F0(is)108 484.8 Q F1(NULL)2.5 E F0 2.5(,t)C -(hen read from)-2.5 E F2(~/.history)2.5 E F0 5(.R)C -(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E -F2(int)108 508.8 Q F1(write_history)2.5 E F0(\()4.166 E F2(const c)A -(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to) -108 520.8 R F2(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G -(rwriting).15 E F2(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961 -(.I)-.65 G(f)-5.961 E F2(\214lename)3.462 E F0(is)3.462 E F1(NULL)3.462 -E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 532.8 Q -F2(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F1(err)2.5 E -(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 568.8 Q -F1(append_history)2.5 E F0(\()4.166 E F2(int nelements,)A(const c)1.666 -E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 580.8 R -F2(nelements)3.339 E F0 .839(of the history list to)3.339 F F2 -(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F2(\214lename)3.339 E F0 -(is)3.339 E F1(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F2 -(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 592.8 Q F1(err) -2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 -616.8 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2(const c)A -(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E --.35(Tr)108 628.8 S .38(uncate the history \214le).35 F F2(\214lename) -2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F2(nlines) -2.881 E F0 2.881(lines. If)2.881 F F2(\214lename)2.881 E F0(is)2.881 E -F1(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F2(~/.history)2.881 E F0(is) -2.881 E 2.5(truncated. Returns)108 640.8 R 2.5(0o)2.5 G 2.5(ns)-2.5 G -(uccess, or)-2.5 E F1(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E F1 -(History Expansion)87 669.6 Q F0(These functions implement history e)108 -681.6 Q(xpansion.)-.15 E F2(int)108 705.6 Q F1(history_expand)2.5 E F0 -(\()4.166 E F2 -.15(ch)C(ar *string).15 E 1.666(,c)-.1 G(har **output) --1.816 E F0(\))1.666 E(Expand)108 717.6 Q F2(string)2.5 E F0 2.5(,p)C -(lacing the result into)-2.5 E F2(output)2.5 E F0 2.5(,ap)C -(ointer to a string.)-2.5 E(Returns:)5 E(GNU History 5.0)72 768 Q -(2003 July 31)139.005 E(5)203.165 E 0 Cg EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E 31(0I)144 84 S 3.066(fn)-31 G 3.066(oe)-3.066 G -.566(xpansions took place \(or)-3.216 F 3.065(,i)-.4 G 3.065(ft)-3.065 G -.565(he only change in the te)-3.065 F .565(xt w)-.15 F .565 -(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)-3.065 G -(scape)-3.065 E(characters preceding the history e)180 96 Q -(xpansion character\);)-.15 E 31(1i)144 108 S 2.5(fe)-31 G -(xpansions did tak)-2.65 E 2.5(ep)-.1 G(lace;)-2.5 E 25.17(-1 if)144 120 -R(there w)2.5 E(as an error in e)-.1 E(xpansion;)-.15 E 31(2i)144 132 S -2.5(ft)-31 G(he returned line should be displayed, b)-2.5 E(ut not e)-.2 -E -.15(xe)-.15 G(cuted, as with the).15 E/F1 10/Times-Bold@0 SF(:p)2.5 E -F0(modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 144 Q -(xpansion, then)-.15 E/F2 10/Times-Italic@0 SF(output)2.5 E F0 -(contains a descripti)2.5 E .3 -.15(ve e)-.25 H(rror message.).15 E F2 --.15(ch)108 168 S(ar *).15 E F1(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 -E F0(\()4.166 E F2(const c)A(har *string)-.15 E 1.666(,i)-.1 G -(nt *cinde)-1.666 E -.834(x, int)-.2 F(qc)2.5 E(har)-.15 E F0(\))3.332 E -.262(Returns the te)108 180 R .262(xt of the history e)-.15 F -.15(ve) --.25 G .262(nt be).15 F .263(ginning at)-.15 F F2(string)2.763 E F0(+) -2.763 E F2(*cinde)2.763 E(x)-.2 E F0(.)A F2(*cinde)5.263 E(x)-.2 E F0 -.263(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 192 -T .71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71 -(unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709 -(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F2(string)3.209 -E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709 -(nt speci\214ca-).15 F .527(tion be)108 204 R(gins.)-.15 E F2(qc)5.527 E -(har)-.15 E F0 .527(is a character that is allo)3.027 F .527 -(wed to end the e)-.25 F -.15(ve)-.25 G .528 -(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E -(terminating characters.)108 216 Q F2 -.15(ch)108 240 S(ar **).15 E F1 -(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string) --.15 E F0(\))1.666 E .239(Return an array of tok)108 252 R .239 -(ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238 -(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238 -(ens are split on the charac-)-.1 F(ters in the)108 264 Q F1(history_w) -2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G -(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E -(yed.)-.15 E F2 -.15(ch)108 288 S(ar *).15 E F1(history_ar)2.5 E -(g_extract)-.1 E F0(\()4.166 E F2(int \214r)A -.834(st, int)-.1 F -.834 -(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025 -(Extract a string se)108 300 R .025(gment consisting of the)-.15 F F2 -<8c72>2.526 E(st)-.1 E F0(through)2.526 E F2(last)2.526 E F0(ar)2.526 E -.026(guments present in)-.18 F F2(string)2.526 E F0 5.026(.A)C -.18(rg) --5.026 G .026(uments are split).18 F(using)108 312 Q F1(history_tok)2.5 -E(enize\(\))-.1 E F0(.)A F1(History V)87 340.8 Q(ariables)-.92 E F0 -(This section describes the e)108 352.8 Q(xternally-visible v)-.15 E -(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2 -(int)108 376.8 Q F1(history_base)2.5 E F0(The logical of)108 388.8 Q -(fset of the \214rst entry in the history list.)-.25 E F2(int)108 412.8 -Q F1(history_length)2.5 E F0 -(The number of entries currently stored in the history list.)108 424.8 Q -F2(int)108 448.8 Q F1(history_max_entries)2.5 E F0 -(The maximum number of history entries.)108 460.8 Q -(This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2 -(int)108 484.8 Q F1(history_write_timestamps)2.5 E F0 1.468 -(If non-zero, timestamps are written to the history \214le, so the)108 -496.8 R 3.968(yc)-.15 G 1.468(an be preserv)-3.968 F 1.468 -(ed between sessions.)-.15 F(The)6.468 E(def)108 508.8 Q(ault v)-.1 E -(alue is 0, meaning that timestamps are not sa)-.25 E -.15(ve)-.2 G(d.) -.15 E F2 -.15(ch)108 532.8 S(ar).15 E F1(history_expansion_char)2.5 E F0 -(The character that introduces a history e)108 544.8 Q -.15(ve)-.25 G -2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F1(!)2.5 E F0 5(.S)C -(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F2 -.15(ch) -108 568.8 S(ar).15 E F1(history_subst_char)2.5 E F0 -(The character that in)108 580.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G -(ord substitution if found at the start of a line.)-2.6 E(The def)5 E -(ault is)-.1 E F1(^)2.5 E F0(.)A F2 -.15(ch)108 604.8 S(ar).15 E F1 -(history_comment_char)2.5 E F0 .116(During tok)108 616.8 R .117 -(enization, if this character is seen as the \214rst character of a w) --.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .277 -(acters up to a ne)108 628.8 R .276 -(wline are ignored, suppressing history e)-.25 F .276 -(xpansion for the remainder of the line.)-.15 F .276(This is dis-)5.276 -F(abled by def)108 640.8 Q(ault.)-.1 E F2 -.15(ch)108 664.8 S(ar *).15 E -F1(history_w)2.5 E(ord_delimiters)-.1 E F0 -(The characters that separate tok)108 676.8 Q(ens for)-.1 E F1 -(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E -(alue is)-.25 E F1 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F2 -.15 -(ch)108 700.8 S(ar *).15 E F1(history_no_expand_chars)2.5 E F0 2.054 -(The list of characters which inhibit history e)108 712.8 R 2.054 -(xpansion if found immediately follo)-.15 F(wing)-.25 E F1 -(history_expan-)4.555 E(sion_char)108 724.8 Q F0 5(.T)C(he def)-5 E -(ault is space, tab, ne)-.1 E(wline,)-.25 E F1(\\r)2.5 E F0 2.5(,a)C(nd) --2.5 E F1(=)2.5 E F0(.)A(GNU History 5.0)72 768 Q(2003 July 31)139.005 E -(6)203.165 E 0 Cg EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F -(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Italic@0 SF -.15(ch)108 84 S(ar *) -.15 E/F2 10/Times-Bold@0 SF(history_sear)2.5 E(ch_delimiter_chars)-.18 E -F0 .401(The list of additional characters which can delimit a history s\ -earch string, in addition to space, tab,)108 96 R F1(:)2.901 E F0(and) -2.901 E F1(?)2.901 E F0(in the case of a substring search.)108 108 Q -(The def)5 E(ault is empty)-.1 E(.)-.65 E F1(int)108 132 Q F2 -(history_quotes_inhibit_expansion)2.5 E F0 .624 -(If non-zero, single-quoted w)108 144 R .625 -(ords are not scanned for the history e)-.1 F .625(xpansion character) --.15 F 5.625(.T)-.55 G .625(he def)-5.625 F .625(ault v)-.1 F .625 -(alue is)-.25 F(0.)108 156 Q F1(rl_lineb)108 180 Q(uf_func_t *)-.2 E F2 -(history_inhibit_expansion_function)2.5 E F0 .348 -(This should be set to the address of a function that tak)108 192 R .348 -(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F2 -.347(char *)2.847 F F0(\()2.847 E F1(string)A F0 2.847(\)a)C .347(nd an) --2.847 F F2(int)2.847 E F0(inde)2.847 E(x)-.15 E .227 -(into that string \()108 204 R F1(i)A F0 2.727(\). It)B .227 -(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F -.227(xpansion starting at)-.15 F F1(string[i])2.728 E F0 .228 -(should not)2.728 F .019(be performed; zero if the e)108 216 R .019 -(xpansion should be done.)-.15 F .019 -(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash) -2.519 E F0 .018(that use)2.519 F(the history e)108 228 Q -(xpansion character for additional purposes.)-.15 E(By def)5 E -(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3 -10.95/Times-Bold@0 SF(FILES)72 244.8 Q F1(~/.history)109.666 256.8 Q F0 -(Def)144 268.8 Q(ault \214lename for reading and writing sa)-.1 E -.15 -(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 285.6 Q F1 -(The Gnu Readline Libr)108 297.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 309.6 Q -(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F1(bash)108 321.6 Q F0(\(1\))A F1 -.37(re)108 333.6 S(adline).37 E F0 -(\(3\))A F3 -.548(AU)72 350.4 S(THORS).548 E F0(Brian F)108 362.4 Q -(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 -374.4 Q(g)-.18 E(Chet Rame)108 391.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E -(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E -(chet@ins.CWR)108 403.2 Q(U.Edu)-.4 E F3 -.11(BU)72 420 S 2.738(GR).11 G -(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 432 R .16 -(ug in the)-.2 F F2(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16 -(ou should report it.)-2.66 F .16(But \214rst, you should mak)5.16 F -2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 444 S -(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F2 -(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705 -(Once you ha)108 460.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b) -.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .704 -(ug report to)-.2 F F1 -.2(bu)3.204 G(g\255r).2 E(eadline)-.37 E F0(@)A -F1(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)-3.204 E(ha)108 -472.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 484.8 Q F1 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F1 -(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 501.6 Q -(ug reports concerning this manual page should be directed to)-.2 E F1 --.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E -(GNU History 5.0)72 768 Q(2003 July 31)139.005 E(7)203.165 E 0 Cg EP -%%Trailer -end -%%EOF diff --git a/readline/doc/inc-hist.texinfo b/readline/doc/inc-hist.texinfo new file mode 100644 index 0000000..37ed15f --- /dev/null +++ b/readline/doc/inc-hist.texinfo @@ -0,0 +1,438 @@ +@ignore +This file documents the user interface to the GNU History library. + +Copyright (C) 1988-1999 Free Software Foundation, Inc. +Authored by Brian Fox and Chet Ramey. + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@node Using History Interactively +@chapter Using History Interactively + +@c @ifclear BashFeatures +@c @defcodeindex bt +@c @end ifclear + +@ifset BashFeatures +This chapter describes how to use the @sc{gnu} History Library +interactively, from a user's standpoint. +It should be considered a user's guide. +For information on using the @sc{gnu} History Library in other programs, +see the @sc{gnu} Readline Library Manual. +@end ifset +@ifclear BashFeatures +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. +@c For +@c information on using the GNU History Library in your own programs, +@c @pxref{Programming with GNU History}. +@end ifclear + +@ifset BashFeatures +@menu +* Bash History Facilities:: How Bash lets you manipulate your command + history. +* Bash History Builtins:: The Bash builtin commands that manipulate + the command history. +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifset +@ifclear BashFeatures +@menu +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifclear + +@ifset BashFeatures +@node Bash History Facilities +@section Bash History Facilities +@cindex command history +@cindex history list + +When the @samp{-o history} option to the @code{set} builtin +is enabled (@pxref{The Set Builtin}), +the shell provides access to the @var{command history}, +the list of commands previously typed. +The value of the @code{HISTSIZE} shell variable is used as the +number of commands to save in a history list. +The text of the last @code{$HISTSIZE} +commands (default 500) is saved. +The shell stores each command in the history list prior to +parameter and variable expansion +but after history expansion is performed, subject to the +values of the shell variables +@code{HISTIGNORE} and @code{HISTCONTROL}. + +When the shell starts up, the history is initialized from the +file named by the @code{HISTFILE} variable (default @file{~/.bash_history}). +The file named by the value of @code{HISTFILE} is truncated, if +necessary, to contain no more than the number of lines specified by +the value of the @code{HISTFILESIZE} variable. +When an interactive shell exits, the last +@code{$HISTSIZE} lines are copied from the history list to the file +named by @code{$HISTFILE}. +If the @code{histappend} shell option is set (@pxref{Bash Builtins}), +the lines are appended to the history file, +otherwise the history file is overwritten. +If @code{HISTFILE} +is unset, or if the history file is unwritable, the history is +not saved. After saving the history, the history file is truncated +to contain no more than @code{$HISTFILESIZE} +lines. If @code{HISTFILESIZE} is not set, no truncation is performed. + +The builtin command @code{fc} may be used to list or edit and re-execute +a portion of the history list. +The @code{history} builtin may be used to display or modify the history +list and manipulate the history file. +When using command-line editing, search commands +are available in each editing mode that provide access to the +history list (@pxref{Commands For History}). + +The shell allows control over which commands are saved on the history +list. The @code{HISTCONTROL} and @code{HISTIGNORE} +variables may be set to cause the shell to save only a subset of the +commands entered. +The @code{cmdhist} +shell option, if enabled, causes the shell to attempt to save each +line of a multi-line command in the same history entry, adding +semicolons where necessary to preserve syntactic correctness. +The @code{lithist} +shell option causes the shell to save the command with embedded newlines +instead of semicolons. +The @code{shopt} builtin is used to set these options. +@xref{Bash Builtins}, for a description of @code{shopt}. + +@node Bash History Builtins +@section Bash History Builtins +@cindex history builtins + +Bash provides two builtin commands which manipulate the +history list and history file. + +@table @code + +@item fc +@btindex fc +@example +@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]} +@code{fc -s [@var{pat}=@var{rep}] [@var{command}]} +@end example + +Fix Command. In the first form, a range of commands from @var{first} to +@var{last} is selected from the history list. Both @var{first} and +@var{last} may be specified as a string (to locate the most recent +command beginning with that string) or as a number (an index into the +history list, where a negative number is used as an offset from the +current command number). If @var{last} is not specified it is set to +@var{first}. If @var{first} is not specified it is set to the previous +command for editing and @minus{}16 for listing. If the @samp{-l} flag is +given, the commands are listed on standard output. The @samp{-n} flag +suppresses the command numbers when listing. The @samp{-r} flag +reverses the order of the listing. Otherwise, the editor given by +@var{ename} is invoked on a file containing those commands. If +@var{ename} is not given, the value of the following variable expansion +is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the +value of the @code{FCEDIT} variable if set, or the value of the +@code{EDITOR} variable if that is set, or @code{vi} if neither is set. +When editing is complete, the edited commands are echoed and executed. + +In the second form, @var{command} is re-executed after each instance +of @var{pat} in the selected command is replaced by @var{rep}. + +A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so +that typing @samp{r cc} runs the last command beginning with @code{cc} +and typing @samp{r} re-executes the last command (@pxref{Aliases}). + +@item history +@btindex history +@example +history [@var{n}] +history -c +history -d @var{offset} +history [-anrw] [@var{filename}] +history -ps @var{arg} +@end example + +With no options, display the history list with line numbers. +Lines prefixed with with a @samp{*} have been modified. +An argument of @var{n} lists only the last @var{n} lines. +Options, if supplied, have the following meanings: + +@table @code +@item -c +Clear the history list. This may be combined +with the other options to replace the history list completely. + +@item -d @var{offset} +Delete the history entry at position @var{offset}. +@var{offset} should be specified as it appears when the history is +displayed. + +@item -a +Append the new +history lines (history lines entered since the beginning of the +current Bash session) to the history file. + +@item -n +Append the history lines not already read from the history file +to the current history list. These are lines appended to the history +file since the beginning of the current Bash session. + +@item -r +Read the current history file and append its contents to +the history list. + +@item -w +Write out the current history to the history file. + +@item -p +Perform history substitution on the @var{arg}s and display the result +on the standard output, without storing the results in the history list. + +@item -s +The @var{arg}s are added to the end of +the history list as a single entry. + +@end table + +When any of the @samp{-w}, @samp{-r}, @samp{-a}, or @samp{-n} options is +used, if @var{filename} +is given, then it is used as the history file. If not, then +the value of the @code{HISTFILE} variable is used. + +@end table +@end ifset + +@node History Interaction +@section History Expansion +@cindex history expansion + +The History library provides a history expansion feature that is similar +to the history expansion provided by @code{csh}. This section +describes the syntax used to manipulate the history information. + +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. + +History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +@dfn{event}, and the portions of that line that are acted upon are +called @dfn{words}. Various @dfn{modifiers} are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is @samp{!} by default. +@ifset BashFeatures +Only @samp{\} and @samp{'} may be used to escape the history expansion +character. +@end ifset + +@ifset BashFeatures +Several shell options settable with the @code{shopt} +builtin (@pxref{Bash Builtins}) may be used to tailor +the behavior of history expansion. If the +@code{histverify} shell option is enabled, and Readline +is being used, history substitutions are not immediately passed to +the shell parser. +Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. +If Readline is being used, and the @code{histreedit} +shell option is enabled, a failed history expansion will be +reloaded into the Readline editing buffer for correction. +The @samp{-p} option to the @code{history} builtin command +may be used to see what a history expansion will do before using it. +The @samp{-s} option to the @code{history} builtin may be used to +add commands to the end of the history list without actually executing +them, so that they are available for subsequent recall. +This is most useful in conjunction with Readline. + +The shell allows control of the various characters used by the +history expansion mechanism with the @code{histchars} variable. +@end ifset + +@menu +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. +@end menu + +@node Event Designators +@subsection Event Designators +@cindex event designators + +An event designator is a reference to a command line entry in the +history list. +@cindex history events + +@table @asis + +@item @code{!} +Start a history substitution, except when followed by a space, tab, +the end of the line, @samp{=} or @samp{(}. + +@item @code{!@var{n}} +Refer to command line @var{n}. + +@item @code{!-@var{n}} +Refer to the command @var{n} lines back. + +@item @code{!!} +Refer to the previous command. This is a synonym for @samp{!-1}. + +@item @code{!@var{string}} +Refer to the most recent command starting with @var{string}. + +@item @code{!?@var{string}[?]} +Refer to the most recent command containing @var{string}. The trailing +@samp{?} may be omitted if the @var{string} is followed immediately by +a newline. + +@item @code{^@var{string1}^@var{string2}^} +Quick Substitution. Repeat the last command, replacing @var{string1} +with @var{string2}. Equivalent to +@code{!!:s/@var{string1}/@var{string2}/}. + +@item @code{!#} +The entire command line typed so far. + +@end table + +@node Word Designators +@subsection Word Designators + +Word designators are used to select desired words from the event. +A @samp{:} separates the event specification from the word designator. It +may be omitted if the word designator begins with a @samp{^}, @samp{$}, +@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning +of the line, with the first word being denoted by 0 (zero). Words are +inserted into the current line separated by single spaces. + +@need 0.75 +For example, + +@table @code +@item !! +designates the preceding command. When you type this, the preceding +command is repeated in toto. + +@item !!:$ +designates the last argument of the preceding command. This may be +shortened to @code{!$}. + +@item !fi:2 +designates the second argument of the most recent command starting with +the letters @code{fi}. +@end table + +@need 0.75 +Here are the word designators: + +@table @code + +@item 0 (zero) +The @code{0}th word. For many applications, this is the command word. + +@item @var{n} +The @var{n}th word. + +@item ^ +The first argument; that is, word 1. + +@item $ +The last argument. + +@item % +The word matched by the most recent @samp{?@var{string}?} search. + +@item @var{x}-@var{y} +A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}. + +@item * +All of the words, except the @code{0}th. This is a synonym for @samp{1-$}. +It is not an error to use @samp{*} if there is just one word in the event; +the empty string is returned in that case. + +@item @var{x}* +Abbreviates @samp{@var{x}-$} + +@item @var{x}- +Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word. + +@end table + +If a word designator is supplied without an event specification, the +previous command is used as the event. + +@node Modifiers +@subsection Modifiers + +After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a @samp{:}. + +@table @code + +@item h +Remove a trailing pathname component, leaving only the head. + +@item t +Remove all leading pathname components, leaving the tail. + +@item r +Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving +the basename. + +@item e +Remove all but the trailing suffix. + +@item p +Print the new command but do not execute it. + +@ifset BashFeatures +@item q +Quote the substituted words, escaping further substitutions. + +@item x +Quote the substituted words as with @samp{q}, +but break into words at spaces, tabs, and newlines. +@end ifset + +@item s/@var{old}/@var{new}/ +Substitute @var{new} for the first occurrence of @var{old} in the +event line. Any delimiter may be used in place of @samp{/}. +The delimiter may be quoted in @var{old} and @var{new} +with a single backslash. If @samp{&} appears in @var{new}, +it is replaced by @var{old}. A single backslash will quote +the @samp{&}. The final delimiter is optional if it is the last +character on the input line. + +@item & +Repeat the previous substitution. + +@item g +Cause changes to be applied over the entire event line. Used in +conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/}, +or with @samp{&}. + +@end table diff --git a/readline/doc/readline.0 b/readline/doc/readline.0 deleted file mode 100644 index 12d51fd..0000000 --- a/readline/doc/readline.0 +++ /dev/null @@ -1,926 +0,0 @@ -READLINE(3) READLINE(3) - - - -NNAAMMEE - readline - get a line from a user with editing - -SSYYNNOOPPSSIISS - ##iinncclluuddee <<ssttddiioo..hh>> - ##iinncclluuddee <<rreeaaddlliinnee//rreeaaddlliinnee..hh>> - ##iinncclluuddee <<rreeaaddlliinnee//hhiissttoorryy..hh>> - - _c_h_a_r _* - rreeaaddlliinnee (_c_o_n_s_t _c_h_a_r _*_p_r_o_m_p_t); - -CCOOPPYYRRIIGGHHTT - Readline is Copyright (C) 1989-2004 by the Free Software Foundation, - Inc. - -DDEESSCCRRIIPPTTIIOONN - rreeaaddlliinnee will read a line from the terminal and return it, using pprroommpptt - as a prompt. If pprroommpptt is NNUULLLL or the empty string, no prompt is - issued. The line returned is allocated with _m_a_l_l_o_c(3); the caller must - free it when finished. The line returned has the final newline - removed, so only the text of the line remains. - - rreeaaddlliinnee offers editing capabilities while the user is entering the - line. By default, the line editing commands are similar to those of - emacs. A vi-style line editing interface is also available. - - This manual page describes only the most basic use of rreeaaddlliinnee. Much - more functionality is available; see _T_h_e _G_N_U _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y and _T_h_e - _G_N_U _H_i_s_t_o_r_y _L_i_b_r_a_r_y for additional information. - -RREETTUURRNN VVAALLUUEE - rreeaaddlliinnee returns the text of the line read. A blank line returns the - empty string. If EEOOFF is encountered while reading a line, and the line - is empty, NNUULLLL is returned. If an EEOOFF is read with a non-empty line, - it is treated as a newline. - -NNOOTTAATTIIOONN - An emacs-style notation is used to denote keystrokes. Control keys are - denoted by C-_k_e_y, e.g., C-n means Control-N. Similarly, _m_e_t_a keys are - denoted by M-_k_e_y, so M-x means Meta-X. (On keyboards without a _m_e_t_a - key, M-_x means ESC _x, i.e., press the Escape key then the _x key. This - makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means ESC-Control-_x, - or press the Escape key then hold the Control key while pressing the _x - key.) - - Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which normally act as - a repeat count. Sometimes, however, it is the sign of the argument - that is significant. Passing a negative argument to a command that - acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to - act in a backward direction. Commands whose behavior with arguments - deviates from this are noted. - - When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved - for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a - _k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one - unit, which can be yanked all at once. Commands which do not kill text - separate the chunks of text on the kill ring. - -IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE - Readline is customized by putting commands in an initialization file - (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of - the IINNPPUUTTRRCC environment variable. If that variable is unset, the - default is _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library - starts up, the init file is read, and the key bindings and variables - are set. There are only a few basic constructs allowed in the readline - init file. Blank lines are ignored. Lines beginning with a ## are com- - ments. Lines beginning with a $$ indicate conditional constructs. - Other lines denote key bindings and variable settings. Each program - using this library may add its own commands and bindings. - - For example, placing - - M-Control-u: universal-argument - or - C-Meta-u: universal-argument - - into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- - _s_a_l_-_a_r_g_u_m_e_n_t. - - The following symbolic character names are recognized while processing - key bindings: _D_E_L, _E_S_C, _E_S_C_A_P_E, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T, - _S_P_A_C_E, _S_P_C, and _T_A_B. - - In addition to command names, readline allows keys to be bound to a - string that is inserted when the key is pressed (a _m_a_c_r_o). - - - KKeeyy BBiinnddiinnggss - The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. - All that is required is the name of the command or the text of a macro - and a key sequence to which it should be bound. The name may be speci- - fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or - _C_o_n_t_r_o_l_- prefixes, or as a key sequence. - - When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name - of a key spelled out in English. For example: - - Control-u: universal-argument - Meta-Rubout: backward-kill-word - Control-o: "> output" - - In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, - _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, 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). - - In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs - from kkeeyynnaammee above in that strings denoting an entire key sequence may - be specified by placing the sequence within double quotes. Some GNU - Emacs style key escapes can be used, as in the following example, but - the symbolic character names are not recognized. - - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\e[11~": "Function Key 1" - - In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt. - _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is - bound to insert the text ``Function Key 1''. - - The full set of GNU Emacs style escape sequences available when speci- - fying key sequences is - \\CC-- control prefix - \\MM-- meta prefix - \\ee an escape character - \\\\ backslash - \\"" literal ", a double quote - \\'' literal ', a single quote - - In addition to the GNU Emacs style escape sequences, a second set of - backslash escapes is available: - \\aa alert (bell) - \\bb backspace - \\dd delete - \\ff form feed - \\nn newline - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\_n_n_n the eight-bit character whose value is the octal value - _n_n_n (one to three digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal - value _H_H (one or two hex digits) - - When entering the text of a macro, single or double quotes should be - used to indicate a macro definition. Unquoted text is assumed to be a - function name. In the macro body, the backslash escapes described - above are expanded. Backslash will quote any other character in the - macro text, including " and '. - - BBaasshh allows the current readline key bindings to be displayed or modi- - fied with the bbiinndd builtin command. The editing mode may be switched - during interactive use by using the --oo option to the sseett builtin com- - mand. Other programs using this library provide similar mechanisms. - The _i_n_p_u_t_r_c file may be edited and re-read if a program does not pro- - vide any other means to incorporate new bindings. - - VVaarriiaabblleess - Readline has variables that can be used to further customize its behav- - ior. A variable may be set in the _i_n_p_u_t_r_c file with a statement of the - form - - sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - - Except where noted, readline variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When a variable value is read, empty or null values, "on" (case-insen- - sitive), and "1" are equivalent to OOnn. All other values are equivalent - to OOffff. The variables and their default values are: - - bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when readline wants to ring the terminal - bell. If set to nnoonnee, readline never rings the bell. If set to - vviissiibbllee, readline uses a visible bell if one is available. If - set to aauuddiibbllee, readline attempts to ring the terminal's bell. - bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, readline attempts to bind the control characters - treated specially by the kernel's terminal driver to their read- - line equivalents. - ccoommmmeenntt--bbeeggiinn ((````##'''')) - The string that is inserted in vvii mode when the iinnsseerrtt--ccoommmmeenntt - command is executed. This command is bound to MM--## in emacs mode - and to ## in vi command mode. - ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) - If set to OOnn, readline performs filename matching and completion - in a case-insensitive fashion. - ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss command. It may be set to any integer value greater than - or equal to zero. If the number of possible completions is - greater than or equal to the value of this variable, the user is - asked whether or not he wishes to view them; otherwise they are - simply listed on the terminal. A negative value causes readline - to never ask. - ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, readline will convert characters with the eighth - bit set to an ASCII key sequence by stripping the eighth bit and - prefixing it with an escape character (in effect, using escape - as the _m_e_t_a _p_r_e_f_i_x). - ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) - If set to OOnn, readline will inhibit word completion. Completion - characters will be inserted into the line as if they had been - mapped to sseellff--iinnsseerrtt. - eeddiittiinngg--mmooddee ((eemmaaccss)) - Controls whether readline begins with a set of key bindings sim- - ilar to emacs or vi. eeddiittiinngg--mmooddee can be set to either eemmaaccss or - vvii. - eennaabbllee--kkeeyyppaadd ((OOffff)) - When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the - arrow keys. - eexxppaanndd--ttiillddee ((OOffff)) - If set to oonn, tilde expansion is performed when readline - attempts word completion. - hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to oonn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- - ttoorryy or nneexxtt--hhiissttoorryy. - hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - When set to OOnn, makes readline use a single line for display, - scrolling the input horizontally on a single screen line when it - becomes longer than the screen width rather than wrapping to a - new line. - iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will enable eight-bit input (that is, it - will not clear the eighth bit in the characters it reads), - regardless of what the terminal claims it can support. The name - mmeettaa--ffllaagg is a synonym for this variable. - iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[ CC--JJ'''')) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- - ters _E_S_C and _C_-_J will terminate an incremental search. - kkeeyymmaapp ((eemmaaccss)) - Set the current readline keymap. The set of legal keymap names - is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, - _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; - _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is - _e_m_a_c_s. The value of eeddiittiinngg--mmooddee also affects the default - keymap. - mmaarrkk--ddiirreeccttoorriieess ((OOnn)) - If set to OOnn, completed directory names have a slash appended. - mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- - played with a preceding asterisk (**). - mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) - If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of - mmaarrkk--ddiirreeccttoorriieess). - mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion, unless the leading `.' is supplied by the - user in the filename to be completed. - oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth - bit set directly rather than as a meta-prefixed escape sequence. - ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- - play a screenful of possible completions at a time. - pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the - screen. - sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. - If set to oonn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing - the bell. - sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in - a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to oonn, 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 - instead of ringing the bell. - vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- - pletions. - - CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There - are four parser directives used. - - $$iiff The $$iiff 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 extends to the end of the line; - no characters are required to isolate it. - - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in - emacs mode. - - tteerrmm The tteerrmm== form may be used to include 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 _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for - instance. - - aapppplliiccaattiioonn - The aapppplliiccaattiioonn construct is used to include application- - specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization - file can test for a particular value. This could be used - to bind key sequences to functions useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in - Bash: - - $$iiff Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $$eennddiiff - - $$eennddiiff This command, as seen in the previous example, terminates an $$iiff - command. - - $$eellssee Commands in this branch of the $$iiff directive are executed if the - test fails. - - $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- - ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: - - $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c - -SSEEAARRCCHHIINNGG - Readline provides commands for searching through the command history - for lines containing a specified string. There are two search modes: - _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, 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 - history for a particular string, type CC--rr. Typing CC--ss searches forward - through the history. The characters present in the value of the - iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental - search. If that variable has not been assigned a value the _E_s_c_a_p_e and - CC--JJ characters will terminate an incremental search. CC--GG 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 CC--ss or CC--rr as - appropriate. This will search backward or forward in the history for - the next line matching the search string typed so far. Any other key - sequence bound to a readline command will terminate the search and exe- - cute that command. For instance, a newline will terminate the search - and accept the line, thereby executing the command from the history - list. A movement command will terminate the search, make the last line - found the current line, and begin editing. - - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed - by the user or be part of the contents of the current line. - -EEDDIITTIINNGG CCOOMMMMAANNDDSS - The following is a list of the names of the commands and the default - key sequences to which they are bound. Command names without an accom- - panying key sequence are unbound by default. - - In the following descriptions, _p_o_i_n_t refers to the current cursor posi- - tion, and _m_a_r_k refers to a cursor position saved by the sseett--mmaarrkk com- - mand. The text between the point and mark is referred to as the - _r_e_g_i_o_n. - - CCoommmmaannddss ffoorr MMoovviinngg - bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa)) - Move to the start of the current line. - eenndd--ooff--lliinnee ((CC--ee)) - Move to the end of the line. - ffoorrwwaarrdd--cchhaarr ((CC--ff)) - Move forward a character. - bbaacckkwwaarrdd--cchhaarr ((CC--bb)) - Move back a character. - ffoorrwwaarrdd--wwoorrdd ((MM--ff)) - Move forward to the end of the next word. Words are composed of - alphanumeric characters (letters and digits). - bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words - are composed of alphanumeric characters (letters and digits). - cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without - clearing the screen. - rreeddrraaww--ccuurrrreenntt--lliinnee - Refresh the current line. - - CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy - aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) - Accept the line regardless of where the cursor is. If this line - is non-empty, it may be added to the history list for future - recall with aadddd__hhiissttoorryy(()). If the line is a modified history - line, the history line is restored to its original state. - pprreevviioouuss--hhiissttoorryy ((CC--pp)) - Fetch the previous command from the history list, moving back in - the list. - nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in - the list. - bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) - Move to the first line in the history. - eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently - being entered. - rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental - search. - ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental - search. - nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) - Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the - user. - nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental - search for a string supplied by the user. - hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the current cursor - position (the _p_o_i_n_t). This is a non-incremental search. - hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd - Search backward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. - yyaannkk--nntthh--aarrgg ((MM--CC--yy)) - Insert the first argument to the previous command (usually the - second word on the previous line) at point. With an argument _n, - insert the _nth word from the previous command (the words in the - 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. - yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word - of the previous history entry). With an argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last argument - of each line in turn. The history expansion facilities are used - to extract the last argument, as if the "!$" history expansion - had been specified. - - CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt - ddeelleettee--cchhaarr ((CC--dd)) - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to ddeelleettee--cchhaarr, then return EEOOFF. - bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) - Delete the character behind the cursor. When given a numeric - argument, save the deleted text on the kill ring. - ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr - Delete the character under the cursor, unless the cursor is at - the end of the line, in which case the character behind the cur- - sor is deleted. - qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv)) - Add the next character that you type to the line verbatim. This - is how to insert characters like CC--qq, for example. - ttaabb--iinnsseerrtt ((MM--TTAABB)) - Insert a tab character. - sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......)) - Insert the character typed. - ttrraannssppoossee--cchhaarrss ((CC--tt)) - Drag the character before point forward over the character at - point, moving point forward as well. If point is at the end of - the line, then this transposes the two characters before point. - Negative arguments have no effect. - ttrraannssppoossee--wwoorrddss ((MM--tt)) - Drag the word before point past the word after point, moving - point over that word as well. If point is at the end of the - line, this transposes the last two words on the line. - uuppccaassee--wwoorrdd ((MM--uu)) - Uppercase the current (or following) word. With a negative - argument, uppercase the previous word, but do not move point. - ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative - argument, lowercase the previous word, but do not move point. - ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - Capitalize the current (or following) word. With a negative - argument, capitalize the previous word, but do not move point. - oovveerrwwrriittee--mmooddee - 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 eemmaaccss mode; vvii mode does overwrite differently. Each call - to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac- - ters bound to sseellff--iinnsseerrtt replace the text at point rather than - pushing the text to the right. Characters bound to bbaacckk-- - wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a - space. By default, this command is unbound. - - KKiilllliinngg aanndd YYaannkkiinngg - kkiillll--lliinnee ((CC--kk)) - Kill the text from point to the end of the line. - bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) - Kill backward to the beginning of the line. - uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) - Kill backward from point to the beginning of the line. The - killed text is saved on the kill-ring. - kkiillll--wwhhoollee--lliinnee - Kill all characters on the current line, no matter where point - is. - kkiillll--wwoorrdd ((MM--dd)) - Kill from point the end of the current word, or if between - words, to the end of the next word. Word boundaries are the - same as those used by ffoorrwwaarrdd--wwoorrdd. - bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as - those used by bbaacckkwwaarrdd--wwoorrdd. - uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) - Kill the word behind point, using white space as a word bound- - ary. The killed text is saved on the kill-ring. - uunniixx--ffiilleennaammee--rruubboouutt - 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. - ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) - Delete all spaces and tabs around point. - kkiillll--rreeggiioonn - Kill the text between the point and _m_a_r_k (saved cursor posi- - tion). This text is referred to as the _r_e_g_i_o_n. - ccooppyy--rreeggiioonn--aass--kkiillll - Copy the text in the region to the kill buffer. - ccooppyy--bbaacckkwwaarrdd--wwoorrdd - Copy the word before point to the kill buffer. The word bound- - aries are the same as bbaacckkwwaarrdd--wwoorrdd. - ccooppyy--ffoorrwwaarrdd--wwoorrdd - Copy the word following point to the kill buffer. The word - boundaries are the same as ffoorrwwaarrdd--wwoorrdd. - yyaannkk ((CC--yy)) - Yank the top of the kill ring into the buffer at point. - yyaannkk--ppoopp ((MM--yy)) - Rotate the kill ring, and yank the new top. Only works follow- - ing yyaannkk or yyaannkk--ppoopp. - - NNuummeerriicc AArrgguummeennttss - ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----)) - Add this digit to the argument already accumulating, or start a - new argument. M-- starts a negative argument. - uunniivveerrssaall--aarrgguummeenntt - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the - numeric argument, but is otherwise ignored. As a special case, - if this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- - ment count four, a second time makes the argument count sixteen, - and so on. - - CCoommpplleettiinngg - ccoommpplleettee ((TTAABB)) - Attempt to perform completion on the text before point. The - actual completion performed is application-specific. BBaasshh, 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. GGddbb, on the other - hand, allows completion of program functions and variables, and - only attempts filename completion under certain circumstances. - ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) - List the possible completions of the text before point. - iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) - Insert all completions of the text before point that would have - been generated by ppoossssiibbllee--ccoommpplleettiioonnss. - mmeennuu--ccoommpplleettee - Similar to ccoommpplleettee, but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of mmeennuu--ccoommpplleettee 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 - bbeellll--ssttyyllee) and the original text is restored. An argument of _n - moves _n positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to TTAABB, but is unbound by - default. - ddeelleettee--cchhaarr--oorr--lliisstt - Deletes the character under the cursor if not at the beginning - or end of the line (like ddeelleettee--cchhaarr). If at the end of the - line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. - - KKeeyybbooaarrdd MMaaccrrooss - ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (()) - Begin saving the characters typed into the current keyboard - macro. - eenndd--kkbbdd--mmaaccrroo ((CC--xx )))) - Stop saving the characters typed into the current keyboard macro - and store the definition. - ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee)) - Re-execute the last keyboard macro defined, by making the char- - acters in the macro appear as if typed at the keyboard. - - MMiisscceellllaanneeoouuss - rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr)) - Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any - bindings or variable assignments found there. - aabboorrtt ((CC--gg)) - Abort the current editing command and ring the terminal's bell - (subject to the setting of bbeellll--ssttyyllee). - ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that - is bound to the corresponding uppercase character. - pprreeffiixx--mmeettaa ((EESSCC)) - Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. - uunnddoo ((CC--__,, CC--xx CC--uu)) - Incremental undo, separately remembered for each line. - rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial - state. - ttiillddee--eexxppaanndd ((MM--&&)) - Perform tilde expansion on the current word. - sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>)) - Set the mark to the point. If a numeric argument is supplied, - the mark is set to that position. - eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved - as the mark. - cchhaarraacctteerr--sseeaarrcchh ((CC--]])) - A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- - rences. - cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- - quent occurrences. - iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn 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 ccoommmmeenntt--bbeeggiinn, the value is inserted, other- - wise the characters in ccoommmmeenntt--bbeeggiinn 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 ccoommmmeenntt--bbeeggiinn - makes the current line a shell comment. If a numeric argument - causes the comment character to be removed, the line will be - executed by the shell. - dduummpp--ffuunnccttiioonnss - 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 - _i_n_p_u_t_r_c file. - dduummpp--vvaarriiaabblleess - 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 - _i_n_p_u_t_r_c file. - dduummpp--mmaaccrrooss - 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 - _i_n_p_u_t_r_c file. - eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee)) - When in vvii command mode, this causes a switch to eemmaaccss editing - mode. - vvii--eeddiittiinngg--mmooddee ((MM--CC--jj)) - When in eemmaaccss editing mode, this causes a switch to vvii editing - mode. - -DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS - The following is a list of the default emacs and vi bindings. Charac- - ters with the eighth bit set are written as M-<character>, and are - referred to as _m_e_t_a_f_i_e_d characters. The printable ASCII characters not - mentioned in the list of emacs standard bindings are bound to the - sseellff--iinnsseerrtt function, which just inserts the given character into the - input line. In vi insertion mode, all characters not specifically men- - tioned are bound to sseellff--iinnsseerrtt. Characters assigned to signal genera- - tion by _s_t_t_y(1) or the terminal driver, such as C-Z or C-C, retain that - function. Upper and lower case metafied characters are bound to the - same function in the emacs mode meta keymap. The remaining characters - are unbound, which causes readline to ring the bell (subject to the - setting of the bbeellll--ssttyyllee variable). - - EEmmaaccss MMooddee - Emacs Standard bindings - - "C-@" set-mark - "C-A" beginning-of-line - "C-B" backward-char - "C-D" delete-char - "C-E" end-of-line - "C-F" forward-char - "C-G" abort - "C-H" backward-delete-char - "C-I" complete - "C-J" accept-line - "C-K" kill-line - "C-L" clear-screen - "C-M" accept-line - "C-N" next-history - "C-P" previous-history - "C-Q" quoted-insert - "C-R" reverse-search-history - "C-S" forward-search-history - "C-T" transpose-chars - "C-U" unix-line-discard - "C-V" quoted-insert - "C-W" unix-word-rubout - "C-Y" yank - "C-]" character-search - "C-_" undo - " " to "/" self-insert - "0" to "9" self-insert - ":" to "~" self-insert - "C-?" backward-delete-char - - Emacs Meta bindings - - "M-C-G" abort - "M-C-H" backward-kill-word - "M-C-I" tab-insert - "M-C-J" vi-editing-mode - "M-C-M" vi-editing-mode - "M-C-R" revert-line - "M-C-Y" yank-nth-arg - "M-C-[" complete - "M-C-]" character-search-backward - "M-space" set-mark - "M-#" insert-comment - "M-&" tilde-expand - "M-*" insert-completions - "M--" digit-argument - "M-." yank-last-arg - "M-0" digit-argument - "M-1" digit-argument - "M-2" digit-argument - "M-3" digit-argument - "M-4" digit-argument - "M-5" digit-argument - "M-6" digit-argument - "M-7" digit-argument - "M-8" digit-argument - "M-9" digit-argument - "M-<" beginning-of-history - "M-=" possible-completions - "M->" end-of-history - "M-?" possible-completions - "M-B" backward-word - "M-C" capitalize-word - "M-D" kill-word - "M-F" forward-word - "M-L" downcase-word - "M-N" non-incremental-forward-search-history - "M-P" non-incremental-reverse-search-history - "M-R" revert-line - "M-T" transpose-words - "M-U" upcase-word - "M-Y" yank-pop - "M-\" delete-horizontal-space - "M-~" tilde-expand - "M-C-?" backward-kill-word - "M-_" yank-last-arg - - Emacs Control-X bindings - - "C-XC-G" abort - "C-XC-R" re-read-init-file - "C-XC-U" undo - "C-XC-X" exchange-point-and-mark - "C-X(" start-kbd-macro - "C-X)" end-kbd-macro - "C-XE" call-last-kbd-macro - "C-XC-?" backward-kill-line - - - VVII MMooddee bbiinnddiinnggss - VI Insert Mode functions - - "C-D" vi-eof-maybe - "C-H" backward-delete-char - "C-I" complete - "C-J" accept-line - "C-M" accept-line - "C-R" reverse-search-history - "C-S" forward-search-history - "C-T" transpose-chars - "C-U" unix-line-discard - "C-V" quoted-insert - "C-W" unix-word-rubout - "C-Y" yank - "C-[" vi-movement-mode - "C-_" undo - " " to "~" self-insert - "C-?" backward-delete-char - - VI Command Mode functions - - "C-D" vi-eof-maybe - "C-E" emacs-editing-mode - "C-G" abort - "C-H" backward-char - "C-J" accept-line - "C-K" kill-line - "C-L" clear-screen - "C-M" accept-line - "C-N" next-history - "C-P" previous-history - "C-Q" quoted-insert - "C-R" reverse-search-history - "C-S" forward-search-history - "C-T" transpose-chars - "C-U" unix-line-discard - "C-V" quoted-insert - "C-W" unix-word-rubout - "C-Y" yank - "C-_" vi-undo - " " forward-char - "#" insert-comment - "$" end-of-line - "%" vi-match - "&" vi-tilde-expand - "*" vi-complete - "+" next-history - "," vi-char-search - "-" previous-history - "." vi-redo - "/" vi-search - "0" beginning-of-line - "1" to "9" vi-arg-digit - ";" vi-char-search - "=" vi-complete - "?" vi-search - "A" vi-append-eol - "B" vi-prev-word - "C" vi-change-to - "D" vi-delete-to - "E" vi-end-word - "F" vi-char-search - "G" vi-fetch-history - "I" vi-insert-beg - "N" vi-search-again - "P" vi-put - "R" vi-replace - "S" vi-subst - "T" vi-char-search - "U" revert-line - "W" vi-next-word - "X" backward-delete-char - "Y" vi-yank-to - "\" vi-complete - "^" vi-first-print - "_" vi-yank-arg - "`" vi-goto-mark - "a" vi-append-mode - "b" vi-prev-word - "c" vi-change-to - "d" vi-delete-to - "e" vi-end-word - "f" vi-char-search - "h" backward-char - "i" vi-insertion-mode - "j" next-history - "k" prev-history - "l" forward-char - "m" vi-set-mark - "n" vi-search-again - "p" vi-put - "r" vi-change-char - "s" vi-subst - "t" vi-char-search - "u" vi-undo - "w" vi-next-word - "x" vi-delete - "y" vi-yank-to - "|" vi-column - "~" vi-change-case - -SSEEEE AALLSSOO - _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _b_a_s_h(1) - -FFIILLEESS - _~_/_._i_n_p_u_t_r_c - Individual rreeaaddlliinnee initialization file - -AAUUTTHHOORRSS - Brian Fox, Free Software Foundation - bfox@gnu.org - - Chet Ramey, Case Western Reserve University - chet@ins.CWRU.Edu - -BBUUGG RREEPPOORRTTSS - If you find a bug in rreeaaddlliinnee,, you should report it. But first, you - should make sure that it really is a bug, and that it appears in the - latest version of the rreeaaddlliinnee library that you have. - - Once you have determined that a bug actually exists, mail a bug report - to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix, you are welcome to mail - that as well! Suggestions and `philosophical' bug reports may be - mailed to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup - ggnnuu..bbaasshh..bbuugg. - - Comments and bug reports concerning this manual page should be directed - to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u. - -BBUUGGSS - It's too big and too slow. - - - -GNU Readline 5.1-beta1 2005 Sep 13 READLINE(3) diff --git a/readline/doc/readline.3 b/readline/doc/readline.3 index 90cd997..afd6ba2 100644 --- a/readline/doc/readline.3 +++ b/readline/doc/readline.3 @@ -6,9 +6,9 @@ .\" Case Western Reserve University .\" chet@ins.CWRU.Edu .\" -.\" Last Change: Tue Sep 13 12:07:26 EDT 2005 +.\" Last Change: Tue Jan 22 09:18:25 EST 2002 .\" -.TH READLINE 3 "2005 Sep 13" "GNU Readline 5.1-beta1" +.TH READLINE 3 "2002 January 22" "GNU Readline 4.3" .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. @@ -34,8 +34,8 @@ readline \- get a line from a user with editing \fBreadline\fP (\fIconst char *prompt\fP); .fi .SH COPYRIGHT -.if n Readline is Copyright (C) 1989\-2004 by the Free Software Foundation, Inc. -.if t Readline is Copyright \(co 1989\-2004 by the Free Software Foundation, Inc. +.if n Readline is Copyright (C) 1989\-2002 by the Free Software Foundation, Inc. +.if t Readline is Copyright \(co 1989\-2002 by the Free Software Foundation, Inc. .SH DESCRIPTION .LP .B readline @@ -328,10 +328,6 @@ Except where noted, readline variables can take the values or .B Off (without regard to case). -Unrecognized variable names are ignored. -When a variable value is read, empty or null values, "on" (case-insensitive), -and "1" are equivalent to \fBOn\fP. All other values are equivalent to -\fBOff\fP. The variables and their default values are: .PP .PD 0 @@ -342,11 +338,6 @@ If set to \fBnone\fP, readline never rings the bell. If set to \fBvisible\fP, readline uses a visible bell if one is available. If set to \fBaudible\fP, readline attempts to ring the terminal's bell. .TP -.B bind\-tty\-special\-chars (On) -If set to \fBOn\fP, readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their readline -equivalents. -.TP .B comment\-begin (``#'') The string that is inserted in \fBvi\fP mode when the .B insert\-comment @@ -369,7 +360,7 @@ It may be set to any integer value greater than or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is asked whether or not he wishes to view them; otherwise they are simply listed -on the terminal. A negative value causes readline to never ask. +on the terminal. .TP .B convert\-meta (On) If set to \fBOn\fP, readline will convert characters with the @@ -400,9 +391,9 @@ arrow keys. If set to \fBon\fP, tilde expansion is performed when readline attempts word completion. .TP -.B history\-preserve\-point (Off) +.B history-preserve-point If set to \fBon\fP, the history code attempts to place point at the -same location on each history line retrieved with \fBprevious-history\fP +same location on each history line retrived with \fBprevious-history\fP or \fBnext-history\fP. .TP .B horizontal\-scroll\-mode (Off) @@ -474,16 +465,6 @@ set to words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. .TP -.B show\-all\-if\-unmodified (Off) -This alters the default behavior of the completion functions in -a fashion similar to \fBshow\-all\-if\-ambiguous\fP. -If set to -.BR on , -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -of ringing the bell. -.TP .B visible\-stats (Off) If set to \fBOn\fP, a character denoting a file's type as reported by \fIstat\fP(2) is appended to the filename when listing possible @@ -700,8 +681,6 @@ With an argument insert the \fIn\fPth word from the previous command (the words in the previous command begin with word 0). A negative argument inserts the \fIn\fPth word from the end of the previous command. -Once the argument \fIn\fP is computed, the argument is extracted -as if the "!\fIn\fP" history expansion had been specified. .TP .B yank\-last\-arg (M\-.\^, M\-_\^) @@ -710,8 +689,6 @@ the previous history entry). With an argument, behave exactly like \fByank\-nth\-arg\fP. Successive calls to \fByank\-last\-arg\fP move back through the history list, inserting the last argument of each line in turn. -The history expansion facilities are used to extract the last argument, -as if the "!$" history expansion had been specified. .PD .SS Commands for Changing Text .PP @@ -810,11 +787,6 @@ Word boundaries are the same as those used by \fBbackward\-word\fP. Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. .TP -.B unix\-filename\-rubout -Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. -.TP .B delete\-horizontal\-space (M\-\e) Delete all spaces and tabs around point. .TP @@ -896,7 +868,7 @@ with a single match from the list of possible completions. Repeated execution of \fBmenu\-complete\fP steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung -(subject to the setting of \fBbell\-style\fP) +(subject to the setting of \Bbell\-style\fP) and the original text is restored. An argument of \fIn\fP moves \fIn\fP positions forward in the list of matches; a negative argument may be used to move backward @@ -1007,7 +979,7 @@ of an \fIinputrc\fP file. .TP .B dump\-macros Print all of the readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, +strings they ouput. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an \fIinputrc\fP file. .TP diff --git a/readline/doc/readline.dvi b/readline/doc/readline.dvi Binary files differdeleted file mode 100644 index bea55e6..0000000 --- a/readline/doc/readline.dvi +++ /dev/null diff --git a/readline/doc/readline.html b/readline/doc/readline.html deleted file mode 100644 index 11d496a..0000000 --- a/readline/doc/readline.html +++ /dev/null @@ -1,6713 +0,0 @@ -<HTML> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<!-- Created on December, 6 2005 by texi2html 1.64 --> -<!-- -Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) - Karl Berry <karl@freefriends.org> - Olaf Bachmann <obachman@mathematik.uni-kl.de> - and many others. -Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de> -Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> - ---> -<HEAD> -<TITLE>GNU Readline Library: </TITLE> - -<META NAME="description" CONTENT="GNU Readline Library: "> -<META NAME="keywords" CONTENT="GNU Readline Library: "> -<META NAME="resource-type" CONTENT="document"> -<META NAME="distribution" CONTENT="global"> -<META NAME="Generator" CONTENT="texi2html 1.64"> - -</HEAD> - -<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> - -<A NAME="SEC_Top"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>GNU Readline Library</H1></P><P> - -This document describes the GNU Readline Library, a utility which aids -in the consistency of user interface across discrete programs which -provide a command line interface. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">A. Copying This Manual</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Copying this manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC52">Concept Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC53">Function and Variable Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions - and variables.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<HR SIZE=1> -<A NAME="SEC1"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<A NAME="Command Line Editing"></A> -<H1> 1. Command Line Editing </H1> -<!--docid::SEC1::--> -<P> - -This chapter describes the basic features of the GNU -command line editing interface. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands - available for binding</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline - behave like the vi editor.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Introduction and Notation"></A> -<HR SIZE="6"> -<A NAME="SEC2"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.1 Introduction to Line Editing </H2> -<!--docid::SEC2::--> -<P> - -The following paragraphs describe the notation used to represent -keystrokes. -</P><P> - -The text <KBD>C-k</KBD> is read as `Control-K' and describes the character -produced when the <KBD>k</KBD> key is pressed while the Control key -is depressed. -</P><P> - -The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD> -key is pressed. -The Meta key is labeled <KBD>ALT</KBD> on many keyboards. -On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of -the space bar), the <KBD>ALT</KBD> on the left side is generally set to -work as a Meta key. -The <KBD>ALT</KBD> key on the right may also be configured to work as a -Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. -</P><P> - -If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as -a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD> -<EM>first</EM>, and then typing <KBD>k</KBD>. -Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key. -</P><P> - -The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the -character produced by <EM>metafying</EM> <KBD>C-k</KBD>. -</P><P> - -In addition, several keys have their own names. Specifically, -<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all -stand for themselves when seen in this text, or in an init file -(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>). -If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will -produce the desired character. -The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on -some keyboards. -</P><P> - -<A NAME="Readline Interaction"></A> -<HR SIZE="6"> -<A NAME="SEC3"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.2 Readline Interaction </H2> -<!--docid::SEC3::--> -<P> - -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press <KBD>RET</KBD>. You do not have to be at the -end of the line to press <KBD>RET</KBD>; the entire line is accepted -regardless of the location of the cursor within the line. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Readline Bare Essentials"></A> -<HR SIZE="6"> -<A NAME="SEC4"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.1 Readline Bare Essentials </H3> -<!--docid::SEC4::--> -<P> - -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your -erase character to back up and delete the mistyped character. -</P><P> - -Sometimes you may mistype a character, and -not notice the error until you have typed several other characters. In -that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then -correct your mistake. Afterwards, you can move the cursor to the right -with <KBD>C-f</KBD>. -</P><P> - -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text -that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the -blank space created by the removal of the text. A list of the bare -essentials for editing the text of an input line follows. -</P><P> - -<DL COMPACT> -<DT><KBD>C-b</KBD> -<DD>Move back one character. -<DT><KBD>C-f</KBD> -<DD>Move forward one character. -<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD> -<DD>Delete the character to the left of the cursor. -<DT><KBD>C-d</KBD> -<DD>Delete the character underneath the cursor. -<DT>Printing characters -<DD>Insert the character into the line at the cursor. -<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD> -<DD>Undo the last editing command. You can undo all the way back to an -empty line. -</DL> -<P> - -(Depending on your configuration, the <KBD>Backspace</KBD> key be set to -delete the character to the left of the cursor and the <KBD>DEL</KBD> key set -to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather -than the character to the left of the cursor.) -</P><P> - -<A NAME="Readline Movement Commands"></A> -<HR SIZE="6"> -<A NAME="SEC5"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.2 Readline Movement Commands </H3> -<!--docid::SEC5::--> -<P> - -The above table describes the most basic keystrokes that you need -in order to do editing of the input line. For your convenience, many -other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>, -<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly -about the line. -</P><P> - -<DL COMPACT> -<DT><KBD>C-a</KBD> -<DD>Move to the start of the line. -<DT><KBD>C-e</KBD> -<DD>Move to the end of the line. -<DT><KBD>M-f</KBD> -<DD>Move forward a word, where a word is composed of letters and digits. -<DT><KBD>M-b</KBD> -<DD>Move backward a word. -<DT><KBD>C-l</KBD> -<DD>Clear the screen, reprinting the current line at the top. -</DL> -<P> - -Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. -</P><P> - -<A NAME="Readline Killing Commands"></A> -<HR SIZE="6"> -<A NAME="SEC6"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.3 Readline Killing Commands </H3> -<!--docid::SEC6::--> -<P> - -<A NAME="IDX1"></A> -<A NAME="IDX2"></A> -</P><P> - -<EM>Killing</EM> text means to delete the text from the line, but to save -it away for later use, usually by <EM>yanking</EM> (re-inserting) -it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) -</P><P> - -If the description for a command says that it `kills' text, then you can -be sure that you can get the text back in a different (or the same) -place later. -</P><P> - -When you use a kill command, the text is saved in a <EM>kill-ring</EM>. -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill -ring is not line specific; the text that you killed on a previously -typed line is available to be yanked back later, when you are typing -another line. -<A NAME="IDX3"></A> -</P><P> - -Here is the list of commands for killing text. -</P><P> - -<DL COMPACT> -<DT><KBD>C-k</KBD> -<DD>Kill the text from the current cursor position to the end of the line. -<P> - -<DT><KBD>M-d</KBD> -<DD>Kill from the cursor to the end of the current word, or, if between -words, to the end of the next word. -Word boundaries are the same as those used by <KBD>M-f</KBD>. -<P> - -<DT><KBD>M-<KBD>DEL</KBD></KBD> -<DD>Kill from the cursor the start of the current word, or, if between -words, to the start of the previous word. -Word boundaries are the same as those used by <KBD>M-b</KBD>. -<P> - -<DT><KBD>C-w</KBD> -<DD>Kill from the cursor to the previous whitespace. This is different than -<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ. -<P> - -</DL> -<P> - -Here is how to <EM>yank</EM> the text back into the line. Yanking -means to copy the most-recently-killed text from the kill buffer. -</P><P> - -<DL COMPACT> -<DT><KBD>C-y</KBD> -<DD>Yank the most recently killed text back into the buffer at the cursor. -<P> - -<DT><KBD>M-y</KBD> -<DD>Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>. -</DL> -<P> - -<A NAME="Readline Arguments"></A> -<HR SIZE="6"> -<A NAME="SEC7"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.4 Readline Arguments </H3> -<!--docid::SEC7::--> -<P> - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the <I>sign</I> of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type <SAMP>`M-- C-k'</SAMP>. -</P><P> - -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once -you have typed one meta digit to get the argument started, you can type -the remainder of the digits, and then the command. For example, to give -the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>, -which will delete the next ten characters on the input line. -</P><P> - -<A NAME="Searching"></A> -<HR SIZE="6"> -<A NAME="SEC8"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.5 Searching for Commands in the History </H3> -<!--docid::SEC8::--> -<P> - -Readline provides commands for searching through the command history -for lines containing a specified string. -There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>. -</P><P> - -Incremental searches begin before the user has finished typing the -search string. -As each character of the search string is typed, Readline displays -the next entry from the history matching the string typed so far. -An incremental search requires only as many characters as needed to -find the desired history entry. -To search backward in the history for a particular string, type -<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history. -The characters present in the value of the <CODE>isearch-terminators</CODE> variable -are used to terminate an incremental search. -If that variable has not been assigned a value, the <KBD>ESC</KBD> and -<KBD>C-J</KBD> characters will terminate an incremental search. -<KBD>C-g</KBD> will abort an incremental search and restore the original line. -When the search is terminated, the history entry containing the -search string becomes the current line. -</P><P> - -To find other matching entries in the history list, type <KBD>C-r</KBD> or -<KBD>C-s</KBD> as appropriate. -This will search backward or forward in the history for the next -entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate -the search and execute that command. -For instance, a <KBD>RET</KBD> will terminate the search and accept -the line, thereby executing the command from the history list. -A movement command will terminate the search, make the last line found -the current line, and begin editing. -</P><P> - -Readline remembers the last incremental search string. If two -<KBD>C-r</KBD>s are typed without any intervening characters defining a new -search string, any remembered search string is used. -</P><P> - -Non-incremental searches read the entire search string before starting -to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. -</P><P> - -<A NAME="Readline Init File"></A> -<HR SIZE="6"> -<A NAME="SEC9"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.3 Readline Init File </H2> -<!--docid::SEC9::--> -<P> - -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. -Any user can customize programs that use Readline by putting -commands in an <EM>inputrc</EM> file, conventionally in his home directory. -The name of this -file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If -that variable is unset, the default is <TT>`~/.inputrc'</TT>. -</P><P> - -When a program which uses the Readline library starts up, the -init file is read, and the key bindings are set. -</P><P> - -In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus -incorporating any changes that you might have made to it. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR> -</TABLE> - -<br> -<TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR> -</TABLE> - -<br> -<TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Readline Init File Syntax"></A> -<HR SIZE="6"> -<A NAME="SEC10"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.1 Readline Init File Syntax </H3> -<!--docid::SEC10::--> -<P> - -There are only a few basic constructs allowed in the -Readline init file. Blank lines are ignored. -Lines beginning with a <SAMP>`#'</SAMP> are comments. -Lines beginning with a <SAMP>`$'</SAMP> indicate conditional -constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines -denote variable settings and key bindings. -</P><P> - -<DL COMPACT> -<DT>Variable Settings -<DD>You can modify the run-time behavior of Readline by -altering the values of variables in Readline -using the <CODE>set</CODE> command within the init file. -The syntax is simple: -<P> - -<TABLE><tr><td> </td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR> -</pre></td></tr></table></P><P> - -Here, for example, is how to -change from the default Emacs-like key binding to use -<CODE>vi</CODE> line editing commands: -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>set editing-mode vi -</pre></td></tr></table></P><P> - -Variable names and values, where appropriate, are recognized without regard -to case. Unrecognized variable names are ignored. -</P><P> - -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other -value results in the variable being set to off. -</P><P> - -A great deal of run-time behavior is changeable with the following -variables. -</P><P> - -<A NAME="IDX4"></A> -<DL COMPACT> - -<DT><CODE>bell-style</CODE> -<DD><A NAME="IDX5"></A> -Controls what happens when Readline wants to ring the terminal bell. -If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to -<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available. -If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring -the terminal's bell. -<P> - -<DT><CODE>bind-tty-special-chars</CODE> -<DD><A NAME="IDX6"></A> -If set to <SAMP>`on'</SAMP>, Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. -<P> - -<DT><CODE>comment-begin</CODE> -<DD><A NAME="IDX7"></A> -The string to insert at the beginning of the line when the -<CODE>insert-comment</CODE> command is executed. The default value -is <CODE>"#"</CODE>. -<P> - -<DT><CODE>completion-ignore-case</CODE> -<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion -in a case-insensitive fashion. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>completion-query-items</CODE> -<DD><A NAME="IDX8"></A> -The number of possible completions that determines when the user is -asked whether the list of possibilities should be displayed. -If the number of possible completions is greater than this value, -Readline will ask the user whether or not he wishes to view -them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is <CODE>100</CODE>. -<P> - -<DT><CODE>convert-meta</CODE> -<DD><A NAME="IDX9"></A> -If set to <SAMP>`on'</SAMP>, Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an <KBD>ESC</KBD> character, converting them to a -meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>. -<P> - -<DT><CODE>disable-completion</CODE> -<DD><A NAME="IDX10"></A> -If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion. -Completion characters will be inserted into the line as if they had -been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>editing-mode</CODE> -<DD><A NAME="IDX11"></A> -The <CODE>editing-mode</CODE> variable controls which default set of -key bindings is used. By default, Readline starts up in Emacs editing -mode, where the keystrokes are most similar to Emacs. This variable can be -set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>. -<P> - -<DT><CODE>enable-keypad</CODE> -<DD><A NAME="IDX12"></A> -When set to <SAMP>`on'</SAMP>, Readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>expand-tilde</CODE> -<DD><A NAME="IDX13"></A> -If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline -attempts word completion. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>history-preserve-point</CODE> -<DD><A NAME="IDX14"></A> -If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the -same location on each history line retrieved with <CODE>previous-history</CODE> -or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>horizontal-scroll-mode</CODE> -<DD><A NAME="IDX15"></A> -This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it -to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll -horizontally on a single screen line when they are longer than the width -of the screen, instead of wrapping onto a new screen line. By default, -this variable is set to <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>input-meta</CODE> -<DD><A NAME="IDX16"></A> -<A NAME="IDX17"></A> -If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it -will not clear the eighth bit in the characters it reads), -regardless of what the terminal claims it can support. The -default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a -synonym for this variable. -<P> - -<DT><CODE>isearch-terminators</CODE> -<DD><A NAME="IDX18"></A> -The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>). -If this variable has not been given a value, the characters <KBD>ESC</KBD> and -<KBD>C-J</KBD> will terminate an incremental search. -<P> - -<DT><CODE>keymap</CODE> -<DD><A NAME="IDX19"></A> -Sets Readline's idea of the current keymap for key binding commands. -Acceptable <CODE>keymap</CODE> names are -<CODE>emacs</CODE>, -<CODE>emacs-standard</CODE>, -<CODE>emacs-meta</CODE>, -<CODE>emacs-ctlx</CODE>, -<CODE>vi</CODE>, -<CODE>vi-move</CODE>, -<CODE>vi-command</CODE>, and -<CODE>vi-insert</CODE>. -<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is -equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>. -The value of the <CODE>editing-mode</CODE> variable also affects the -default keymap. -<P> - -<DT><CODE>mark-directories</CODE> -<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash -appended. The default is <SAMP>`on'</SAMP>. -<P> - -<DT><CODE>mark-modified-lines</CODE> -<DD><A NAME="IDX20"></A> -This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an -asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified. -This variable is <SAMP>`off'</SAMP> by default. -<P> - -<DT><CODE>mark-symlinked-directories</CODE> -<DD><A NAME="IDX21"></A> -If set to <SAMP>`on'</SAMP>, completed names which are symbolic links -to directories have a slash appended (subject to the value of -<CODE>mark-directories</CODE>). -The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>match-hidden-files</CODE> -<DD><A NAME="IDX22"></A> -This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose -names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename -completion, unless the leading <SAMP>`.'</SAMP> is -supplied by the user in the filename to be completed. -This variable is <SAMP>`on'</SAMP> by default. -<P> - -<DT><CODE>output-meta</CODE> -<DD><A NAME="IDX23"></A> -If set to <SAMP>`on'</SAMP>, Readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>page-completions</CODE> -<DD><A NAME="IDX24"></A> -If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager -to display a screenful of possible completions at a time. -This variable is <SAMP>`on'</SAMP> by default. -<P> - -<DT><CODE>print-completions-horizontally</CODE> -<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>show-all-if-ambiguous</CODE> -<DD><A NAME="IDX25"></A> -This alters the default behavior of the completion functions. If -set to <SAMP>`on'</SAMP>, -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>show-all-if-unmodified</CODE> -<DD><A NAME="IDX26"></A> -This alters the default behavior of the completion functions in -a fashion similar to <VAR>show-all-if-ambiguous</VAR>. -If set to <SAMP>`on'</SAMP>, -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -of ringing the bell. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>visible-stats</CODE> -<DD><A NAME="IDX27"></A> -If set to <SAMP>`on'</SAMP>, a character denoting a file's type -is appended to the filename when listing possible -completions. The default is <SAMP>`off'</SAMP>. -<P> - -</DL> -<P> - -<DT>Key Bindings -<DD>The syntax for controlling key bindings in the init file is -simple. First you need to find the name of the command that you -want to change. The following sections contain tables of the command -name, the default keybinding, if any, and a short description of what -the command does. -<P> - -Once you know the name of the command, simply place on a line -in the init file the name of the key -you wish to bind the command to, a colon, and then the name of the -command. The name of the key -can be expressed in different ways, depending on what you find most -comfortable. -</P><P> - -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a <VAR>macro</VAR>). -</P><P> - -<DL COMPACT> -<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR> -<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example: -<TABLE><tr><td> </td><td class=example><pre>Control-u: universal-argument -Meta-Rubout: backward-kill-word -Control-o: "> output" -</pre></td></tr></table><P> - -In the above example, <KBD>C-u</KBD> is bound to the function -<CODE>universal-argument</CODE>, -<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and -<KBD>C-o</KBD> is bound to run the macro -expressed on the right hand side (that is, to insert the text -<SAMP>`> output'</SAMP> into the line). -</P><P> - -A number of symbolic character names are recognized while -processing this key binding syntax: -<VAR>DEL</VAR>, -<VAR>ESC</VAR>, -<VAR>ESCAPE</VAR>, -<VAR>LFD</VAR>, -<VAR>NEWLINE</VAR>, -<VAR>RET</VAR>, -<VAR>RETURN</VAR>, -<VAR>RUBOUT</VAR>, -<VAR>SPACE</VAR>, -<VAR>SPC</VAR>, -and -<VAR>TAB</VAR>. -</P><P> - -<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR> -<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings -denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some GNU Emacs style key -escapes can be used, as in the following example, but the -special character names are not recognized. -<P> - -<TABLE><tr><td> </td><td class=example><pre>"\C-u": universal-argument -"\C-x\C-r": re-read-init-file -"\e[11~": "Function Key 1" -</pre></td></tr></table></P><P> - -In the above example, <KBD>C-u</KBD> is again bound to the function -<CODE>universal-argument</CODE> (just as it was in the first example), -<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>, -and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert -the text <SAMP>`Function Key 1'</SAMP>. -</P><P> - -</DL> -<P> - -The following GNU Emacs style escape sequences are available when -specifying key sequences: -</P><P> - -<DL COMPACT> -<DT><CODE><KBD>\C-</KBD></CODE> -<DD>control prefix -<DT><CODE><KBD>\M-</KBD></CODE> -<DD>meta prefix -<DT><CODE><KBD>\e</KBD></CODE> -<DD>an escape character -<DT><CODE><KBD>\\</KBD></CODE> -<DD>backslash -<DT><CODE><KBD>\"</KBD></CODE> -<DD><KBD>"</KBD>, a double quotation mark -<DT><CODE><KBD>\'</KBD></CODE> -<DD><KBD>'</KBD>, a single quote or apostrophe -</DL> -<P> - -In addition to the GNU Emacs style escape sequences, a second -set of backslash escapes is available: -</P><P> - -<DL COMPACT> -<DT><CODE>\a</CODE> -<DD>alert (bell) -<DT><CODE>\b</CODE> -<DD>backspace -<DT><CODE>\d</CODE> -<DD>delete -<DT><CODE>\f</CODE> -<DD>form feed -<DT><CODE>\n</CODE> -<DD>newline -<DT><CODE>\r</CODE> -<DD>carriage return -<DT><CODE>\t</CODE> -<DD>horizontal tab -<DT><CODE>\v</CODE> -<DD>vertical tab -<DT><CODE>\<VAR>nnn</VAR></CODE> -<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR> -(one to three digits) -<DT><CODE>\x<VAR>HH</VAR></CODE> -<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR> -(one or two hex digits) -</DL> -<P> - -When entering the text of a macro, single or double quotes must -be used to indicate a macro definition. -Unquoted text is assumed to be a function name. -In the macro body, the backslash escapes described above are expanded. -Backslash will quote any other character in the macro text, -including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>. -For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP> -insert a single <SAMP>`\'</SAMP> into the line: -<TABLE><tr><td> </td><td class=example><pre>"\C-x\\": "\\" -</pre></td></tr></table></P><P> - -</DL> -<P> - -<A NAME="Conditional Init Constructs"></A> -<HR SIZE="6"> -<A NAME="SEC11"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.2 Conditional Init Constructs </H3> -<!--docid::SEC11::--> -<P> - -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key -bindings and variable settings to be performed as the result -of tests. There are four parser directives used. -</P><P> - -<DL COMPACT> -<DT><CODE>$if</CODE> -<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the -editing mode, the terminal being used, or the application using -Readline. The text of the test extends to the end of the line; -no characters are required to isolate it. -<P> - -<DL COMPACT> -<DT><CODE>mode</CODE> -<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test -whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode. -This may be used in conjunction -with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in -the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if -Readline is starting out in <CODE>emacs</CODE> mode. -<P> - -<DT><CODE>term</CODE> -<DD>The <CODE>term=</CODE> form may be used to include terminal-specific -key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -<SAMP>`='</SAMP> is tested against both the full name of the terminal and -the portion of the terminal name before the first <SAMP>`-'</SAMP>. This -allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>, -for instance. -<P> - -<DT><CODE>application</CODE> -<DD>The <VAR>application</VAR> construct is used to include -application-specific settings. Each program using the Readline -library sets the <VAR>application name</VAR>, and you can test for -a particular value. -This could be used to bind key sequences to functions useful for -a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in Bash: -<TABLE><tr><td> </td><td class=example><pre>$if Bash -# Quote the current or previous word -"\C-xq": "\eb\"\ef\"" -$endif -</pre></td></tr></table></DL> -<P> - -<DT><CODE>$endif</CODE> -<DD>This command, as seen in the previous example, terminates an -<CODE>$if</CODE> command. -<P> - -<DT><CODE>$else</CODE> -<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if -the test fails. -<P> - -<DT><CODE>$include</CODE> -<DD>This directive takes a single filename as an argument and reads commands -and bindings from that file. -For example, the following directive reads from <TT>`/etc/inputrc'</TT>: -<TABLE><tr><td> </td><td class=example><pre>$include /etc/inputrc -</pre></td></tr></table></DL> -<P> - -<A NAME="Sample Init File"></A> -<HR SIZE="6"> -<A NAME="SEC12"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.3 Sample Init File </H3> -<!--docid::SEC12::--> -<P> - -Here is an example of an <VAR>inputrc</VAR> file. This illustrates key -binding, variable assignment, and conditional syntax. -</P><P> - -<TABLE><tr><td> </td><td class=example><pre># This file controls the behaviour of line input editing for -# programs that use the GNU Readline library. Existing -# programs include FTP, Bash, and GDB. -# -# You can re-read the inputrc file with C-x C-r. -# Lines beginning with '#' are comments. -# -# First, include any systemwide bindings and variable -# assignments from /etc/Inputrc -$include /etc/Inputrc - -# -# Set various bindings for emacs mode. - -set editing-mode emacs - -$if mode=emacs - -Meta-Control-h: backward-kill-word Text after the function name is ignored - -# -# Arrow keys in keypad mode -# -#"\M-OD": backward-char -#"\M-OC": forward-char -#"\M-OA": previous-history -#"\M-OB": next-history -# -# Arrow keys in ANSI mode -# -"\M-[D": backward-char -"\M-[C": forward-char -"\M-[A": previous-history -"\M-[B": next-history -# -# Arrow keys in 8 bit keypad mode -# -#"\M-\C-OD": backward-char -#"\M-\C-OC": forward-char -#"\M-\C-OA": previous-history -#"\M-\C-OB": next-history -# -# Arrow keys in 8 bit ANSI mode -# -#"\M-\C-[D": backward-char -#"\M-\C-[C": forward-char -#"\M-\C-[A": previous-history -#"\M-\C-[B": next-history - -C-q: quoted-insert - -$endif - -# An old-style binding. This happens to be the default. -TAB: complete - -# Macros that are convenient for shell interaction -$if Bash -# edit the path -"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" -# prepare to type a quoted word -- -# insert open and close double quotes -# and move to just after the open quote -"\C-x\"": "\"\"\C-b" -# insert a backslash (testing backslash escapes -# in sequences and macros) -"\C-x\\": "\\" -# Quote the current or previous word -"\C-xq": "\eb\"\ef\"" -# Add a binding to refresh the line, which is unbound -"\C-xr": redraw-current-line -# Edit variable on current line. -"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" -$endif - -# use a visible bell if one is available -set bell-style visible - -# don't strip characters to 7 bits when reading -set input-meta on - -# allow iso-latin1 characters to be inserted rather -# than converted to prefix-meta sequences -set convert-meta off - -# display characters with the eighth bit set directly -# rather than as meta-prefixed characters -set output-meta on - -# if there are more than 150 possible completions for -# a word, ask the user if he wants to see all of them -set completion-query-items 150 - -# For FTP -$if Ftp -"\C-xg": "get \M-?" -"\C-xt": "put \M-?" -"\M-.": yank-last-arg -$endif -</pre></td></tr></table></P><P> - -<A NAME="Bindable Readline Commands"></A> -<HR SIZE="6"> -<A NAME="SEC13"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.4 Bindable Readline Commands </H2> -<!--docid::SEC13::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -This section describes Readline commands that may be bound to key -sequences. -Command names without an accompanying key sequence are unbound by default. -</P><P> - -In the following descriptions, <EM>point</EM> refers to the current cursor -position, and <EM>mark</EM> refers to a cursor position saved by the -<CODE>set-mark</CODE> command. -The text between the point and mark is referred to as the <EM>region</EM>. -</P><P> - -<A NAME="Commands For Moving"></A> -<HR SIZE="6"> -<A NAME="SEC14"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.1 Commands For Moving </H3> -<!--docid::SEC14::--> -<DL COMPACT> -<A NAME="IDX28"></A> -<DT><CODE>beginning-of-line (C-a)</CODE> -<DD><A NAME="IDX29"></A> -Move to the start of the current line. -<P> - -<A NAME="IDX30"></A> -<DT><CODE>end-of-line (C-e)</CODE> -<DD><A NAME="IDX31"></A> -Move to the end of the line. -<P> - -<A NAME="IDX32"></A> -<DT><CODE>forward-char (C-f)</CODE> -<DD><A NAME="IDX33"></A> -Move forward a character. -<P> - -<A NAME="IDX34"></A> -<DT><CODE>backward-char (C-b)</CODE> -<DD><A NAME="IDX35"></A> -Move back a character. -<P> - -<A NAME="IDX36"></A> -<DT><CODE>forward-word (M-f)</CODE> -<DD><A NAME="IDX37"></A> -Move forward to the end of the next word. Words are composed of -letters and digits. -<P> - -<A NAME="IDX38"></A> -<DT><CODE>backward-word (M-b)</CODE> -<DD><A NAME="IDX39"></A> -Move back to the start of the current or previous word. Words are -composed of letters and digits. -<P> - -<A NAME="IDX40"></A> -<DT><CODE>clear-screen (C-l)</CODE> -<DD><A NAME="IDX41"></A> -Clear the screen and redraw the current line, -leaving the current line at the top of the screen. -<P> - -<A NAME="IDX42"></A> -<DT><CODE>redraw-current-line ()</CODE> -<DD><A NAME="IDX43"></A> -Refresh the current line. By default, this is unbound. -<P> - -</DL> -<P> - -<A NAME="Commands For History"></A> -<HR SIZE="6"> -<A NAME="SEC15"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.2 Commands For Manipulating The History </H3> -<!--docid::SEC15::--> -<P> - -<DL COMPACT> -<A NAME="IDX44"></A> -<DT><CODE>accept-line (Newline or Return)</CODE> -<DD><A NAME="IDX45"></A> -Accept the line regardless of where the cursor is. -If this line is -non-empty, it may be added to the history list for future recall with -<CODE>add_history()</CODE>. -If this line is a modified history line, the history line is restored -to its original state. -<P> - -<A NAME="IDX46"></A> -<DT><CODE>previous-history (C-p)</CODE> -<DD><A NAME="IDX47"></A> -Move `back' through the history list, fetching the previous command. -<P> - -<A NAME="IDX48"></A> -<DT><CODE>next-history (C-n)</CODE> -<DD><A NAME="IDX49"></A> -Move `forward' through the history list, fetching the next command. -<P> - -<A NAME="IDX50"></A> -<DT><CODE>beginning-of-history (M-<)</CODE> -<DD><A NAME="IDX51"></A> -Move to the first line in the history. -<P> - -<A NAME="IDX52"></A> -<DT><CODE>end-of-history (M->)</CODE> -<DD><A NAME="IDX53"></A> -Move to the end of the input history, i.e., the line currently -being entered. -<P> - -<A NAME="IDX54"></A> -<DT><CODE>reverse-search-history (C-r)</CODE> -<DD><A NAME="IDX55"></A> -Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. -<P> - -<A NAME="IDX56"></A> -<DT><CODE>forward-search-history (C-s)</CODE> -<DD><A NAME="IDX57"></A> -Search forward starting at the current line and moving `down' through -the the history as necessary. This is an incremental search. -<P> - -<A NAME="IDX58"></A> -<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE> -<DD><A NAME="IDX59"></A> -Search backward starting at the current line and moving `up' -through the history as necessary using a non-incremental search -for a string supplied by the user. -<P> - -<A NAME="IDX60"></A> -<DT><CODE>non-incremental-forward-search-history (M-n)</CODE> -<DD><A NAME="IDX61"></A> -Search forward starting at the current line and moving `down' -through the the history as necessary using a non-incremental search -for a string supplied by the user. -<P> - -<A NAME="IDX62"></A> -<DT><CODE>history-search-forward ()</CODE> -<DD><A NAME="IDX63"></A> -Search forward through the history for the string of characters -between the start of the current line and the point. -This is a non-incremental search. -By default, this command is unbound. -<P> - -<A NAME="IDX64"></A> -<DT><CODE>history-search-backward ()</CODE> -<DD><A NAME="IDX65"></A> -Search backward through the history for the string of characters -between the start of the current line and the point. This -is a non-incremental search. By default, this command is unbound. -<P> - -<A NAME="IDX66"></A> -<DT><CODE>yank-nth-arg (M-C-y)</CODE> -<DD><A NAME="IDX67"></A> -Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument <VAR>n</VAR>, -insert the <VAR>n</VAR>th word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the <VAR>n</VAR>th word from the end of the previous command. -Once the argument <VAR>n</VAR> is computed, the argument is extracted -as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified. -<P> - -<A NAME="IDX68"></A> -<DT><CODE>yank-last-arg (M-. or M-_)</CODE> -<DD><A NAME="IDX69"></A> -Insert last argument to the previous command (the last word of the -previous history entry). With an -argument, behave exactly like <CODE>yank-nth-arg</CODE>. -Successive calls to <CODE>yank-last-arg</CODE> move back through the history -list, inserting the last argument of each line in turn. -The history expansion facilities are used to extract the last argument, -as if the <SAMP>`!$'</SAMP> history expansion had been specified. -<P> - -</DL> -<P> - -<A NAME="Commands For Text"></A> -<HR SIZE="6"> -<A NAME="SEC16"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.3 Commands For Changing Text </H3> -<!--docid::SEC16::--> -<P> - -<DL COMPACT> -<A NAME="IDX70"></A> -<DT><CODE>delete-char (C-d)</CODE> -<DD><A NAME="IDX71"></A> -Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to <CODE>delete-char</CODE>, then -return EOF. -<P> - -<A NAME="IDX72"></A> -<DT><CODE>backward-delete-char (Rubout)</CODE> -<DD><A NAME="IDX73"></A> -Delete the character behind the cursor. A numeric argument means -to kill the characters instead of deleting them. -<P> - -<A NAME="IDX74"></A> -<DT><CODE>forward-backward-delete-char ()</CODE> -<DD><A NAME="IDX75"></A> -Delete the character under the cursor, unless the cursor is at the -end of the line, in which case the character behind the cursor is -deleted. By default, this is not bound to a key. -<P> - -<A NAME="IDX76"></A> -<DT><CODE>quoted-insert (C-q or C-v)</CODE> -<DD><A NAME="IDX77"></A> -Add the next character typed to the line verbatim. This is -how to insert key sequences like <KBD>C-q</KBD>, for example. -<P> - -<A NAME="IDX78"></A> -<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX79"></A> -Insert a tab character. -<P> - -<A NAME="IDX80"></A> -<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE> -<DD><A NAME="IDX81"></A> -Insert yourself. -<P> - -<A NAME="IDX82"></A> -<DT><CODE>transpose-chars (C-t)</CODE> -<DD><A NAME="IDX83"></A> -Drag the character before the cursor forward over -the character at the cursor, moving the -cursor forward as well. If the insertion point -is at the end of the line, then this -transposes the last two characters of the line. -Negative arguments have no effect. -<P> - -<A NAME="IDX84"></A> -<DT><CODE>transpose-words (M-t)</CODE> -<DD><A NAME="IDX85"></A> -Drag the word before point past the word after point, -moving point past that word as well. -If the insertion point is at the end of the line, this transposes -the last two words on the line. -<P> - -<A NAME="IDX86"></A> -<DT><CODE>upcase-word (M-u)</CODE> -<DD><A NAME="IDX87"></A> -Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move the cursor. -<P> - -<A NAME="IDX88"></A> -<DT><CODE>downcase-word (M-l)</CODE> -<DD><A NAME="IDX89"></A> -Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move the cursor. -<P> - -<A NAME="IDX90"></A> -<DT><CODE>capitalize-word (M-c)</CODE> -<DD><A NAME="IDX91"></A> -Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move the cursor. -<P> - -<A NAME="IDX92"></A> -<DT><CODE>overwrite-mode ()</CODE> -<DD><A NAME="IDX93"></A> -Toggle overwrite mode. With an explicit positive numeric argument, -switches to overwrite mode. With an explicit non-positive numeric -argument, switches to insert mode. This command affects only -<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently. -Each call to <CODE>readline()</CODE> starts in insert mode. -<P> - -In overwrite mode, characters bound to <CODE>self-insert</CODE> replace -the text at point rather than pushing the text to the right. -Characters bound to <CODE>backward-delete-char</CODE> replace the character -before point with a space. -</P><P> - -By default, this command is unbound. -</P><P> - -</DL> -<P> - -<A NAME="Commands For Killing"></A> -<HR SIZE="6"> -<A NAME="SEC17"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.4 Killing And Yanking </H3> -<!--docid::SEC17::--> -<P> - -<DL COMPACT> - -<A NAME="IDX94"></A> -<DT><CODE>kill-line (C-k)</CODE> -<DD><A NAME="IDX95"></A> -Kill the text from point to the end of the line. -<P> - -<A NAME="IDX96"></A> -<DT><CODE>backward-kill-line (C-x Rubout)</CODE> -<DD><A NAME="IDX97"></A> -Kill backward to the beginning of the line. -<P> - -<A NAME="IDX98"></A> -<DT><CODE>unix-line-discard (C-u)</CODE> -<DD><A NAME="IDX99"></A> -Kill backward from the cursor to the beginning of the current line. -<P> - -<A NAME="IDX100"></A> -<DT><CODE>kill-whole-line ()</CODE> -<DD><A NAME="IDX101"></A> -Kill all characters on the current line, no matter where point is. -By default, this is unbound. -<P> - -<A NAME="IDX102"></A> -<DT><CODE>kill-word (M-d)</CODE> -<DD><A NAME="IDX103"></A> -Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as <CODE>forward-word</CODE>. -<P> - -<A NAME="IDX104"></A> -<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE> -<DD><A NAME="IDX105"></A> -Kill the word behind point. -Word boundaries are the same as <CODE>backward-word</CODE>. -<P> - -<A NAME="IDX106"></A> -<DT><CODE>unix-word-rubout (C-w)</CODE> -<DD><A NAME="IDX107"></A> -Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. -<P> - -<A NAME="IDX108"></A> -<DT><CODE>unix-filename-rubout ()</CODE> -<DD><A NAME="IDX109"></A> -Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. -<P> - -<A NAME="IDX110"></A> -<DT><CODE>delete-horizontal-space ()</CODE> -<DD><A NAME="IDX111"></A> -Delete all spaces and tabs around point. By default, this is unbound. -<P> - -<A NAME="IDX112"></A> -<DT><CODE>kill-region ()</CODE> -<DD><A NAME="IDX113"></A> -Kill the text in the current region. -By default, this command is unbound. -<P> - -<A NAME="IDX114"></A> -<DT><CODE>copy-region-as-kill ()</CODE> -<DD><A NAME="IDX115"></A> -Copy the text in the region to the kill buffer, so it can be yanked -right away. By default, this command is unbound. -<P> - -<A NAME="IDX116"></A> -<DT><CODE>copy-backward-word ()</CODE> -<DD><A NAME="IDX117"></A> -Copy the word before point to the kill buffer. -The word boundaries are the same as <CODE>backward-word</CODE>. -By default, this command is unbound. -<P> - -<A NAME="IDX118"></A> -<DT><CODE>copy-forward-word ()</CODE> -<DD><A NAME="IDX119"></A> -Copy the word following point to the kill buffer. -The word boundaries are the same as <CODE>forward-word</CODE>. -By default, this command is unbound. -<P> - -<A NAME="IDX120"></A> -<DT><CODE>yank (C-y)</CODE> -<DD><A NAME="IDX121"></A> -Yank the top of the kill ring into the buffer at point. -<P> - -<A NAME="IDX122"></A> -<DT><CODE>yank-pop (M-y)</CODE> -<DD><A NAME="IDX123"></A> -Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. -</DL> -<P> - -<A NAME="Numeric Arguments"></A> -<HR SIZE="6"> -<A NAME="SEC18"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.5 Specifying Numeric Arguments </H3> -<!--docid::SEC18::--> -<DL COMPACT> - -<A NAME="IDX124"></A> -<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE> -<DD><A NAME="IDX125"></A> -Add this digit to the argument already accumulating, or start a new -argument. <KBD>M--</KBD> starts a negative argument. -<P> - -<A NAME="IDX126"></A> -<DT><CODE>universal-argument ()</CODE> -<DD><A NAME="IDX127"></A> -This is another way to specify an argument. -If this command is followed by one or more digits, optionally with a -leading minus sign, those digits define the argument. -If the command is followed by digits, executing <CODE>universal-argument</CODE> -again ends the numeric argument, but is otherwise ignored. -As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count -for the next command is multiplied by four. -The argument count is initially one, so executing this function the -first time makes the argument count four, a second time makes the -argument count sixteen, and so on. -By default, this is not bound to a key. -</DL> -<P> - -<A NAME="Commands For Completion"></A> -<HR SIZE="6"> -<A NAME="SEC19"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.6 Letting Readline Type For You </H3> -<!--docid::SEC19::--> -<P> - -<DL COMPACT> -<A NAME="IDX128"></A> -<DT><CODE>complete (<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX129"></A> -Attempt to perform completion on the text before point. -The actual completion performed is application-specific. -The default is filename completion. -<P> - -<A NAME="IDX130"></A> -<DT><CODE>possible-completions (M-?)</CODE> -<DD><A NAME="IDX131"></A> -List the possible completions of the text before point. -<P> - -<A NAME="IDX132"></A> -<DT><CODE>insert-completions (M-*)</CODE> -<DD><A NAME="IDX133"></A> -Insert all completions of the text before point that would have -been generated by <CODE>possible-completions</CODE>. -<P> - -<A NAME="IDX134"></A> -<DT><CODE>menu-complete ()</CODE> -<DD><A NAME="IDX135"></A> -Similar to <CODE>complete</CODE>, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of <CODE>menu-complete</CODE> steps through the list -of possible completions, inserting each match in turn. -At the end of the list of completions, the bell is rung -(subject to the setting of <CODE>bell-style</CODE>) -and the original text is restored. -An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list -of matches; a negative argument may be used to move backward -through the list. -This command is intended to be bound to <KBD>TAB</KBD>, but is unbound -by default. -<P> - -<A NAME="IDX136"></A> -<DT><CODE>delete-char-or-list ()</CODE> -<DD><A NAME="IDX137"></A> -Deletes the character under the cursor if not at the beginning or -end of the line (like <CODE>delete-char</CODE>). -If at the end of the line, behaves identically to -<CODE>possible-completions</CODE>. -This command is unbound by default. -<P> - -</DL> -<P> - -<A NAME="Keyboard Macros"></A> -<HR SIZE="6"> -<A NAME="SEC20"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.7 Keyboard Macros </H3> -<!--docid::SEC20::--> -<DL COMPACT> - -<A NAME="IDX138"></A> -<DT><CODE>start-kbd-macro (C-x ()</CODE> -<DD><A NAME="IDX139"></A> -Begin saving the characters typed into the current keyboard macro. -<P> - -<A NAME="IDX140"></A> -<DT><CODE>end-kbd-macro (C-x ))</CODE> -<DD><A NAME="IDX141"></A> -Stop saving the characters typed into the current keyboard macro -and save the definition. -<P> - -<A NAME="IDX142"></A> -<DT><CODE>call-last-kbd-macro (C-x e)</CODE> -<DD><A NAME="IDX143"></A> -Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. -<P> - -</DL> -<P> - -<A NAME="Miscellaneous Commands"></A> -<HR SIZE="6"> -<A NAME="SEC21"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.8 Some Miscellaneous Commands </H3> -<!--docid::SEC21::--> -<DL COMPACT> - -<A NAME="IDX144"></A> -<DT><CODE>re-read-init-file (C-x C-r)</CODE> -<DD><A NAME="IDX145"></A> -Read in the contents of the <VAR>inputrc</VAR> file, and incorporate -any bindings or variable assignments found there. -<P> - -<A NAME="IDX146"></A> -<DT><CODE>abort (C-g)</CODE> -<DD><A NAME="IDX147"></A> -Abort the current editing command and -ring the terminal's bell (subject to the setting of -<CODE>bell-style</CODE>). -<P> - -<A NAME="IDX148"></A> -<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE> -<DD><A NAME="IDX149"></A> -If the metafied character <VAR>x</VAR> is lowercase, run the command -that is bound to the corresponding uppercase character. -<P> - -<A NAME="IDX150"></A> -<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE> -<DD><A NAME="IDX151"></A> -Metafy the next character typed. This is for keyboards -without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing -<KBD>M-f</KBD>. -<P> - -<A NAME="IDX152"></A> -<DT><CODE>undo (C-_ or C-x C-u)</CODE> -<DD><A NAME="IDX153"></A> -Incremental undo, separately remembered for each line. -<P> - -<A NAME="IDX154"></A> -<DT><CODE>revert-line (M-r)</CODE> -<DD><A NAME="IDX155"></A> -Undo all changes made to this line. This is like executing the <CODE>undo</CODE> -command enough times to get back to the beginning. -<P> - -<A NAME="IDX156"></A> -<DT><CODE>tilde-expand (M-~)</CODE> -<DD><A NAME="IDX157"></A> -Perform tilde expansion on the current word. -<P> - -<A NAME="IDX158"></A> -<DT><CODE>set-mark (C-@)</CODE> -<DD><A NAME="IDX159"></A> -Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. -<P> - -<A NAME="IDX160"></A> -<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE> -<DD><A NAME="IDX161"></A> -Swap the point with the mark. The current cursor position is set to -the saved position, and the old cursor position is saved as the mark. -<P> - -<A NAME="IDX162"></A> -<DT><CODE>character-search (C-])</CODE> -<DD><A NAME="IDX163"></A> -A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. -<P> - -<A NAME="IDX164"></A> -<DT><CODE>character-search-backward (M-C-])</CODE> -<DD><A NAME="IDX165"></A> -A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent -occurrences. -<P> - -<A NAME="IDX166"></A> -<DT><CODE>insert-comment (M-#)</CODE> -<DD><A NAME="IDX167"></A> -Without a numeric argument, the value of the <CODE>comment-begin</CODE> -variable is inserted at the beginning of the current line. -If a numeric argument is supplied, this command acts as a toggle: if -the characters at the beginning of the line do not match the value -of <CODE>comment-begin</CODE>, the value is inserted, otherwise -the characters in <CODE>comment-begin</CODE> are deleted from the beginning of -the line. -In either case, the line is accepted as if a newline had been typed. -<P> - -<A NAME="IDX168"></A> -<DT><CODE>dump-functions ()</CODE> -<DD><A NAME="IDX169"></A> -Print all of the functions and their key bindings to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX170"></A> -<DT><CODE>dump-variables ()</CODE> -<DD><A NAME="IDX171"></A> -Print all of the settable variables and their values to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX172"></A> -<DT><CODE>dump-macros ()</CODE> -<DD><A NAME="IDX173"></A> -Print all of the Readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX174"></A> -<DT><CODE>emacs-editing-mode (C-e)</CODE> -<DD><A NAME="IDX175"></A> -When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE> -editing mode. -<P> - -<A NAME="IDX176"></A> -<DT><CODE>vi-editing-mode (M-C-j)</CODE> -<DD><A NAME="IDX177"></A> -When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE> -editing mode. -<P> - -</DL> -<P> - -<A NAME="Readline vi Mode"></A> -<HR SIZE="6"> -<A NAME="SEC22"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.5 Readline vi Mode </H2> -<!--docid::SEC22::--> -<P> - -While the Readline library does not have a full set of <CODE>vi</CODE> -editing functions, it does contain enough to allow simple editing -of the line. The Readline <CODE>vi</CODE> mode behaves as specified in -the POSIX 1003.2 standard. -</P><P> - -In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE> -editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode -when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode). -The Readline default is <CODE>emacs</CODE> mode. -</P><P> - -When you enter a line in <CODE>vi</CODE> mode, you are already placed in -`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD> -switches you into `command' mode, where you can edit the text of the -line with the standard <CODE>vi</CODE> movement keys, move to previous -history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and -so forth. -</P><P> - -This document describes the GNU Readline Library, a utility for aiding -in the consistency of user interface across discrete programs that need -to provide a command line interface. -</P><P> - -Copyright (C) 1988-2005 Free Software Foundation, Inc. -</P><P> - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -pare preserved on all copies. -</P><P> - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. -</P><P> - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Foundation. -</P><P> - -<A NAME="Programming with GNU Readline"></A> -<HR SIZE="6"> -<A NAME="SEC23"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> 2. Programming with GNU Readline </H1> -<!--docid::SEC23::--> -<P> - -This chapter describes the interface between the GNU Readline Library and -other programs. If you are a programmer, and you wish to include the -features found in GNU Readline -such as completion, line editing, and interactive history manipulation -in your own programs, this section is for you. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom - functions.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to - aid in writing your own custom - functions.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.6 Custom Completers</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's - completion functions.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Basic Behavior"></A> -<HR SIZE="6"> -<A NAME="SEC24"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.1 Basic Behavior </H2> -<!--docid::SEC24::--> -<P> - -Many programs provide a command line interface, such as <CODE>mail</CODE>, -<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of -Readline is sufficient. This section describes how to use Readline in -the simplest way possible, perhaps to replace calls in your code to -<CODE>gets()</CODE> or <CODE>fgets()</CODE>. -</P><P> - -<A NAME="IDX178"></A> -<A NAME="IDX179"></A> -</P><P> - -The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR> -and then reads and returns a single line of text from the user. -If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed. -The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>; -the caller should <CODE>free()</CODE> the line when it has finished with it. -The declaration for <CODE>readline</CODE> in ANSI C is -</P><P> - -<TABLE><tr><td> </td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE> -</pre></td></tr></table></P><P> - -So, one might say -<TABLE><tr><td> </td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE> -</pre></td></tr></table>in order to read a line of text from the user. -The line returned has the final newline removed, so only the -text remains. -</P><P> - -If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the -line is empty at that point, then <CODE>(char *)NULL</CODE> is returned. -Otherwise, the line is ended just as if a newline had been typed. -</P><P> - -If you want the user to be able to get at the line later, (with -<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the -line away in a <EM>history</EM> list of such lines. -</P><P> - -<TABLE><tr><td> </td><td class=example><pre><CODE>add_history (line)</CODE>; -</pre></td></tr></table></P><P> - -For full details on the GNU History Library, see the associated manual. -</P><P> - -It is preferable to avoid saving empty lines on the history list, since -users rarely have a burning need to reuse a blank line. Here is -a function which usefully replaces the standard <CODE>gets()</CODE> library -function, and has the advantage of no static buffer to overflow: -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>/* A static variable for holding the line. */ -static char *line_read = (char *)NULL; - -/* Read a string, and return a pointer to it. - Returns NULL on EOF. */ -char * -rl_gets () -{ - /* If the buffer has already been allocated, - return the memory to the free pool. */ - if (line_read) - { - free (line_read); - line_read = (char *)NULL; - } - - /* Get a line from the user. */ - line_read = readline (""); - - /* If the line has any text in it, - save it on the history. */ - if (line_read && *line_read) - add_history (line_read); - - return (line_read); -} -</pre></td></tr></table></P><P> - -This function gives the user the default behaviour of <KBD>TAB</KBD> -completion: completion on file names. If you do not want Readline to -complete on filenames, you can change the binding of the <KBD>TAB</KBD> key -with <CODE>rl_bind_key()</CODE>. -</P><P> - -<TABLE><tr><td> </td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE> -</pre></td></tr></table></P><P> - -<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that -you want to bind, and <VAR>function</VAR> is the address of the function to -call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE> -makes <KBD>TAB</KBD> insert itself. -<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid -ASCII character code (between 0 and 255). -</P><P> - -Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices: -<TABLE><tr><td> </td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE> -</pre></td></tr></table></P><P> - -This code should be executed once at the start of your program; you -might write a function called <CODE>initialize_readline()</CODE> which -performs this and other desired initializations, such as installing -custom completers (see section <A HREF="readline.html#SEC44">2.6 Custom Completers</A>). -</P><P> - -<A NAME="Custom Functions"></A> -<HR SIZE="6"> -<A NAME="SEC25"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.2 Custom Functions </H2> -<!--docid::SEC25::--> -<P> - -Readline provides many functions for manipulating the text of -the line, but it isn't possible to anticipate the needs of all -programs. This section describes the various functions and variables -defined within the Readline library which allow a user program to add -customized functionality to Readline. -</P><P> - -Before declaring any functions that customize Readline's behavior, or -using any functionality Readline provides in other code, an -application writer should include the file <CODE><readline/readline.h></CODE> -in any file that uses Readline's features. Since some of the definitions -in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file -<CODE><stdio.h></CODE> should be included before <CODE>readline.h</CODE>. -</P><P> - -<CODE>readline.h</CODE> defines a C preprocessor variable that should -be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may -be used to conditionally compile application code depending on -the installed Readline version. The value is a hexadecimal -encoding of the major and minor version numbers of the library, -of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major -version number; <VAR>mm</VAR> is the two-digit minor version number. -For Readline 4.2, for example, the value of -<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Readline Typedefs"></A> -<HR SIZE="6"> -<A NAME="SEC26"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.2.1 Readline Typedefs </H3> -<!--docid::SEC26::--> -<P> - -For readabilty, we declare a number of new object types, all pointers -to functions. -</P><P> - -The reason for declaring these new types is to make it easier to write -code describing pointers to C functions with appropriately prototyped -arguments and return values. -</P><P> - -For instance, say we want to declare a variable <VAR>func</VAR> as a pointer -to a function which takes two <CODE>int</CODE> arguments and returns an -<CODE>int</CODE> (this is the type of all of the Readline bindable functions). -Instead of the classic C declaration -</P><P> - -<CODE>int (*func)();</CODE> -</P><P> - -or the ANSI-C style declaration -</P><P> - -<CODE>int (*func)(int, int);</CODE> -</P><P> - -we may write -</P><P> - -<CODE>rl_command_func_t *func;</CODE> -</P><P> - -The full list of function pointer types available is -</P><P> - -<DL COMPACT> -<DT><CODE>typedef int rl_command_func_t (int, int);</CODE> -<DD><P> - -<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE> -<DD><P> - -<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE> -<DD><P> - -<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE> -<DD><P> - -<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE> -<DD><P> - -<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE> -<DD><P> - -<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE> -<DD><P> - -<DT><CODE>typedef int rl_hook_func_t (void);</CODE> -<DD><P> - -<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE> -<DD><P> - -<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE> -<DD><P> - -<DT><CODE>typedef int rl_intfunc_t (int);</CODE> -<DD><DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE> -<DD><DT><CODE>typedef int rl_icpfunc_t (char *);</CODE> -<DD><DT><CODE>typedef int rl_icppfunc_t (char **);</CODE> -<DD><P> - -<DT><CODE>typedef void rl_voidfunc_t (void);</CODE> -<DD><DT><CODE>typedef void rl_vintfunc_t (int);</CODE> -<DD><DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE> -<DD><DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE> -<DD><P> - -</DL> -<P> - -<A NAME="Function Writing"></A> -<HR SIZE="6"> -<A NAME="SEC27"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.2.2 Writing a New Function </H3> -<!--docid::SEC27::--> -<P> - -In order to write new functions for Readline, you need to know the -calling conventions for keyboard-invoked functions, and the names of the -variables that describe the current state of the line read so far. -</P><P> - -The calling sequence for a command <CODE>foo</CODE> looks like -</P><P> - -<TABLE><tr><td> </td><td class=example><pre><CODE>int foo (int count, int key)</CODE> -</pre></td></tr></table></P><P> - -where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and -<VAR>key</VAR> is the key that invoked this function. -</P><P> - -It is completely up to the function as to what should be done with the -numeric argument. Some functions use it as a repeat count, some -as a flag, and others to choose alternate behavior (refreshing the current -line as opposed to refreshing the screen, for example). Some choose to -ignore it. In general, if a -function uses the numeric argument as a repeat count, it should be able -to do something useful with both negative and positive arguments. -At the very least, it should be aware that it can be passed a -negative argument. -</P><P> - -A command function should return 0 if its action completes successfully, -and a non-zero value if some error occurs. -This is the convention obeyed by all of the builtin Readline bindable -command functions. -</P><P> - -<A NAME="Readline Variables"></A> -<HR SIZE="6"> -<A NAME="SEC28"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.3 Readline Variables </H2> -<!--docid::SEC28::--> -<P> - -These variables are available to function writers. -</P><P> - -<A NAME="IDX180"></A> -<DL> -<DT><U>Variable:</U> char * <B>rl_line_buffer</B> -<DD>This is the line gathered so far. You are welcome to modify the -contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>. The -function <CODE>rl_extend_line_buffer</CODE> is available to increase -the memory allocated to <CODE>rl_line_buffer</CODE>. -</DL> -</P><P> - -<A NAME="IDX181"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_point</B> -<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE> -(the <EM>point</EM>). -</DL> -</P><P> - -<A NAME="IDX182"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_end</B> -<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When -<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and -<CODE>rl_end</CODE> are equal. -</DL> -</P><P> - -<A NAME="IDX183"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_mark</B> -<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark -and point define a <EM>region</EM>. -</DL> -</P><P> - -<A NAME="IDX184"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_done</B> -<DD>Setting this to a non-zero value causes Readline to return the current -line immediately. -</DL> -</P><P> - -<A NAME="IDX185"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B> -<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes -Readline to return after accepting that many characters, rather -than reading up to a character bound to <CODE>accept-line</CODE>. -</DL> -</P><P> - -<A NAME="IDX186"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_pending_input</B> -<DD>Setting this to a value makes it the next keystroke read. This is a -way to stuff a single character into the input stream. -</DL> -</P><P> - -<A NAME="IDX187"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_dispatching</B> -<DD>Set to a non-zero value if a function is being called from a key binding; -zero otherwise. Application functions can test this to discover whether -they were called directly or by Readline's dispatching mechanism. -</DL> -</P><P> - -<A NAME="IDX188"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_erase_empty_line</B> -<DD>Setting this to a non-zero value causes Readline to completely erase -the current line, including any prompt, any time a newline is typed as -the only character on an otherwise-empty line. The cursor is moved to -the beginning of the newly-blank line. -</DL> -</P><P> - -<A NAME="IDX189"></A> -<DL> -<DT><U>Variable:</U> char * <B>rl_prompt</B> -<DD>The prompt Readline uses. This is set from the argument to -<CODE>readline()</CODE>, and should not be assigned to directly. -The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may -be used to modify the prompt string after calling <CODE>readline()</CODE>. -</DL> -</P><P> - -<A NAME="IDX190"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_already_prompted</B> -<DD>If an application wishes to display the prompt itself, rather than have -Readline do it the first time <CODE>readline()</CODE> is called, it should set -this variable to a non-zero value after displaying the prompt. -The prompt must also be passed as the argument to <CODE>readline()</CODE> so -the redisplay functions can update the display properly. -The calling application is responsible for managing the value; Readline -never sets it. -</DL> -</P><P> - -<A NAME="IDX191"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_library_version</B> -<DD>The version number of this revision of the library. -</DL> -</P><P> - -<A NAME="IDX192"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_readline_version</B> -<DD>An integer encoding the current version of the library. The encoding is -of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version -number, and <VAR>mm</VAR> is the two-digit minor version number. -For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the -value 0x0402. -</DL> -</P><P> - -<A NAME="IDX193"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B> -<DD>Always set to 1, denoting that this is GNU readline rather than some -emulation. -</DL> -</P><P> - -<A NAME="IDX194"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_terminal_name</B> -<DD>The terminal type, used for initialization. If not set by the application, -Readline sets this to the value of the <CODE>TERM</CODE> environment variable -the first time it is called. -</DL> -</P><P> - -<A NAME="IDX195"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_readline_name</B> -<DD>This variable is set to a unique name by each application using Readline. -The value allows conditional parsing of the inputrc file -(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). -</DL> -</P><P> - -<A NAME="IDX196"></A> -<DL> -<DT><U>Variable:</U> FILE * <B>rl_instream</B> -<DD>The stdio stream from which Readline reads input. -If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>. -</DL> -</P><P> - -<A NAME="IDX197"></A> -<DL> -<DT><U>Variable:</U> FILE * <B>rl_outstream</B> -<DD>The stdio stream to which Readline performs output. -If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>. -</DL> -</P><P> - -<A NAME="IDX198"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_prefer_env_winsize</B> -<DD>If non-zero, Readline gives values found in the <CODE>LINES</CODE> and -<CODE>COLUMNS</CODE> environment variables greater precedence than values fetched -from the kernel when computing the screen dimensions. -</DL> -</P><P> - -<A NAME="IDX199"></A> -<DL> -<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B> -<DD>The address of the last command function Readline executed. May be used to -test whether or not a function is being executed twice in succession, for -example. -</DL> -</P><P> - -<A NAME="IDX200"></A> -<DL> -<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B> -<DD>If non-zero, this is the address of a function to call just -before <CODE>readline</CODE> prints the first prompt. -</DL> -</P><P> - -<A NAME="IDX201"></A> -<DL> -<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B> -<DD>If non-zero, this is the address of a function to call after -the first prompt has been printed and just before <CODE>readline</CODE> -starts reading input characters. -</DL> -</P><P> - -<A NAME="IDX202"></A> -<DL> -<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B> -<DD>If non-zero, this is the address of a function to call periodically -when Readline is waiting for terminal input. -By default, this will be called at most ten times a second if there -is no keyboard input. -</DL> -</P><P> - -<A NAME="IDX203"></A> -<DL> -<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B> -<DD>If non-zero, Readline will call indirectly through this pointer -to get a character from the input stream. By default, it is set to -<CODE>rl_getc</CODE>, the default Readline character input function -(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>). -</DL> -</P><P> - -<A NAME="IDX204"></A> -<DL> -<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B> -<DD>If non-zero, Readline will call indirectly through this pointer -to update the display with the current contents of the editing buffer. -By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline -redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>). -</DL> -</P><P> - -<A NAME="IDX205"></A> -<DL> -<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B> -<DD>If non-zero, Readline will call indirectly through this pointer -to initialize the terminal. The function takes a single argument, an -<CODE>int</CODE> flag that says whether or not to use eight-bit characters. -By default, this is set to <CODE>rl_prep_terminal</CODE> -(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>). -</DL> -</P><P> - -<A NAME="IDX206"></A> -<DL> -<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B> -<DD>If non-zero, Readline will call indirectly through this pointer -to reset the terminal. This function should undo the effects of -<CODE>rl_prep_term_function</CODE>. -By default, this is set to <CODE>rl_deprep_terminal</CODE> -(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>). -</DL> -</P><P> - -<A NAME="IDX207"></A> -<DL> -<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B> -<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the -currently executing readline function was found. -</DL> -</P><P> - -<A NAME="IDX208"></A> -<DL> -<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B> -<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the -last key binding occurred. -</DL> -</P><P> - -<A NAME="IDX209"></A> -<DL> -<DT><U>Variable:</U> char * <B>rl_executing_macro</B> -<DD>This variable is set to the text of any currently-executing macro. -</DL> -</P><P> - -<A NAME="IDX210"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_readline_state</B> -<DD>A variable with bit values that encapsulate the current Readline state. -A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the -<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test -whether a particular state bit is set. Current state bits include: -</P><P> - -<DL COMPACT> -<DT><CODE>RL_STATE_NONE</CODE> -<DD>Readline has not yet been called, nor has it begun to intialize. -<DT><CODE>RL_STATE_INITIALIZING</CODE> -<DD>Readline is initializing its internal data structures. -<DT><CODE>RL_STATE_INITIALIZED</CODE> -<DD>Readline has completed its initialization. -<DT><CODE>RL_STATE_TERMPREPPED</CODE> -<DD>Readline has modified the terminal modes to do its own input and redisplay. -<DT><CODE>RL_STATE_READCMD</CODE> -<DD>Readline is reading a command from the keyboard. -<DT><CODE>RL_STATE_METANEXT</CODE> -<DD>Readline is reading more input after reading the meta-prefix character. -<DT><CODE>RL_STATE_DISPATCHING</CODE> -<DD>Readline is dispatching to a command. -<DT><CODE>RL_STATE_MOREINPUT</CODE> -<DD>Readline is reading more input while executing an editing command. -<DT><CODE>RL_STATE_ISEARCH</CODE> -<DD>Readline is performing an incremental history search. -<DT><CODE>RL_STATE_NSEARCH</CODE> -<DD>Readline is performing a non-incremental history search. -<DT><CODE>RL_STATE_SEARCH</CODE> -<DD>Readline is searching backward or forward through the history for a string. -<DT><CODE>RL_STATE_NUMERICARG</CODE> -<DD>Readline is reading a numeric argument. -<DT><CODE>RL_STATE_MACROINPUT</CODE> -<DD>Readline is currently getting its input from a previously-defined keyboard -macro. -<DT><CODE>RL_STATE_MACRODEF</CODE> -<DD>Readline is currently reading characters defining a keyboard macro. -<DT><CODE>RL_STATE_OVERWRITE</CODE> -<DD>Readline is in overwrite mode. -<DT><CODE>RL_STATE_COMPLETING</CODE> -<DD>Readline is performing word completion. -<DT><CODE>RL_STATE_SIGHANDLER</CODE> -<DD>Readline is currently executing the readline signal handler. -<DT><CODE>RL_STATE_UNDOING</CODE> -<DD>Readline is performing an undo. -<DT><CODE>RL_STATE_DONE</CODE> -<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE> -and is about to return the line to the caller. -</DL> -<P> - -</DL> -</P><P> - -<A NAME="IDX211"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_explicit_arg</B> -<DD>Set to a non-zero value if an explicit numeric argument was specified by -the user. Only valid in a bindable command function. -</DL> -</P><P> - -<A NAME="IDX212"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_numeric_arg</B> -<DD>Set to the value of any numeric argument explicitly specified by the user -before executing the current Readline function. Only valid in a bindable -command function. -</DL> -</P><P> - -<A NAME="IDX213"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_editing_mode</B> -<DD>Set to a value denoting Readline's current editing mode. A value of -<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR> -means that vi mode is active. -</DL> -</P><P> - -<A NAME="Readline Convenience Functions"></A> -<HR SIZE="6"> -<A NAME="SEC29"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.4 Readline Convenience Functions </H2> -<!--docid::SEC29::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Translate function names to - key sequences.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Function Naming"></A> -<HR SIZE="6"> -<A NAME="SEC30"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.1 Naming a Function </H3> -<!--docid::SEC30::--> -<P> - -The user can dynamically change the bindings of keys while using -Readline. This is done by representing the function with a descriptive -name. The user is able to type the descriptive name when referring to -the function. Thus, in an init file, one might find -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>Meta-Rubout: backward-kill-word -</pre></td></tr></table></P><P> - -This binds the keystroke <KBD>Meta-Rubout</KBD> to the function -<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the -programmer, should bind the functions you write to descriptive names as -well. Readline provides a function for doing that: -</P><P> - -<A NAME="IDX214"></A> -<DL> -<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I> -<DD>Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be -the function that gets called. If <VAR>key</VAR> is not -1, then bind it to -<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>. -</DL> -</P><P> - -Using this function alone is sufficient for most applications. -It is the recommended way to add a few functions to the default -functions that Readline has built in. -If you need to do something other than adding a function to Readline, -you may need to use the underlying functions described below. -</P><P> - -<A NAME="Keymaps"></A> -<HR SIZE="6"> -<A NAME="SEC31"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.2 Selecting a Keymap </H3> -<!--docid::SEC31::--> -<P> - -Key bindings take place on a <EM>keymap</EM>. The keymap is the -association between the keys that the user types and the functions that -get run. You can make your own keymaps, copy existing keymaps, and tell -Readline which keymap to use. -</P><P> - -<A NAME="IDX215"></A> -<DL> -<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I> -<DD>Returns a new, empty keymap. The space for the keymap is allocated with -<CODE>malloc()</CODE>; the caller should free it by calling -<CODE>rl_discard_keymap()</CODE> when done. -</DL> -</P><P> - -<A NAME="IDX216"></A> -<DL> -<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I> -<DD>Return a new keymap which is a copy of <VAR>map</VAR>. -</DL> -</P><P> - -<A NAME="IDX217"></A> -<DL> -<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I> -<DD>Return a new keymap with the printing characters bound to rl_insert, -the lowercase Meta characters bound to run their equivalents, and -the Meta digits bound to produce numeric arguments. -</DL> -</P><P> - -<A NAME="IDX218"></A> -<DL> -<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I> -<DD>Free the storage associated with <VAR>keymap</VAR>. -</DL> -</P><P> - -Readline has several internal keymaps. These functions allow you to -change which keymap is active. -</P><P> - -<A NAME="IDX219"></A> -<DL> -<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I> -<DD>Returns the currently active keymap. -</DL> -</P><P> - -<A NAME="IDX220"></A> -<DL> -<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I> -<DD>Makes <VAR>keymap</VAR> the currently active keymap. -</DL> -</P><P> - -<A NAME="IDX221"></A> -<DL> -<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I> -<DD>Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would -be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>). -</DL> -</P><P> - -<A NAME="IDX222"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I> -<DD>Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would -be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>). -</DL> -</P><P> - -<A NAME="Binding Keys"></A> -<HR SIZE="6"> -<A NAME="SEC32"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.3 Binding Keys </H3> -<!--docid::SEC32::--> -<P> - -Key sequences are associate with functions through the keymap. -Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>, -<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>, -<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>. -<CODE>emacs_standard_keymap</CODE> is the default, and the examples in -this manual assume that. -</P><P> - -Since <CODE>readline()</CODE> installs a set of default key bindings the first -time it is called, there is always the danger that a custom binding -installed before the first call to <CODE>readline()</CODE> will be overridden. -An alternate mechanism is to install custom key bindings in an -initialization function assigned to the <CODE>rl_startup_hook</CODE> variable -(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>). -</P><P> - -These functions manage key bindings. -</P><P> - -<A NAME="IDX223"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I> -<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap. -Returns non-zero in the case of an invalid <VAR>key</VAR>. -</DL> -</P><P> - -<A NAME="IDX224"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I> -<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>. -Returns non-zero in the case of an invalid <VAR>key</VAR>. -</DL> -</P><P> - -<A NAME="IDX225"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I> -<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the -currently active keymap. -Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is -already bound. -</DL> -</P><P> - -<A NAME="IDX226"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I> -<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>. -Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is -already bound. -</DL> -</P><P> - -<A NAME="IDX227"></A> -<DL> -<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I> -<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap. -Returns non-zero in case of error. -</DL> -</P><P> - -<A NAME="IDX228"></A> -<DL> -<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I> -<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>. -Returns non-zero in case of error. -</DL> -</P><P> - -<A NAME="IDX229"></A> -<DL> -<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I> -<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>. -</DL> -</P><P> - -<A NAME="IDX230"></A> -<DL> -<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I> -<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>. -</DL> -</P><P> - -<A NAME="IDX231"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I> -<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function -<VAR>function</VAR>, beginning in the current keymap. -This makes new keymaps as necessary. -The return value is non-zero if <VAR>keyseq</VAR> is invalid. -</DL> -</P><P> - -<A NAME="IDX232"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I> -<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function -<VAR>function</VAR>. This makes new keymaps as necessary. -Initial bindings are performed in <VAR>map</VAR>. -The return value is non-zero if <VAR>keyseq</VAR> is invalid. -</DL> -</P><P> - -<A NAME="IDX233"></A> -<DL> -<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I> -<DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>. -</DL> -</P><P> - -<A NAME="IDX234"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I> -<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the -currently active keymap. -Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is -already bound. -</DL> -</P><P> - -<A NAME="IDX235"></A> -<DL> -<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I> -<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>. -Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is -already bound. -</DL> -</P><P> - -<A NAME="IDX236"></A> -<DL> -<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I> -<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary -pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by -<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro -(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as -necessary. The initial keymap in which to do bindings is <VAR>map</VAR>. -</DL> -</P><P> - -<A NAME="IDX237"></A> -<DL> -<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I> -<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and -perform any key bindings and variable assignments found -(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>). -</DL> -</P><P> - -<A NAME="IDX238"></A> -<DL> -<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I> -<DD>Read keybindings and variable assignments from <VAR>filename</VAR> -(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>). -</DL> -</P><P> - -<A NAME="Associating Function Names and Bindings"></A> -<HR SIZE="6"> -<A NAME="SEC33"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.4 Associating Function Names and Bindings </H3> -<!--docid::SEC33::--> -<P> - -These functions allow you to find out what keys invoke named functions -and the functions invoked by a particular key sequence. You may also -associate a new function name with an arbitrary function. -</P><P> - -<A NAME="IDX239"></A> -<DL> -<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I> -<DD>Return the function with name <VAR>name</VAR>. -</DL> -</P><P> - -<A NAME="IDX240"></A> -<DL> -<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I> -<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>. -If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is -not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable -it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>). -</DL> -</P><P> - -<A NAME="IDX241"></A> -<DL> -<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I> -<DD>Return an array of strings representing the key sequences used to -invoke <VAR>function</VAR> in the current keymap. -</DL> -</P><P> - -<A NAME="IDX242"></A> -<DL> -<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I> -<DD>Return an array of strings representing the key sequences used to -invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>. -</DL> -</P><P> - -<A NAME="IDX243"></A> -<DL> -<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I> -<DD>Print the readline function names and the key sequences currently -bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero, -the list is formatted in such a way that it can be made part of an -<CODE>inputrc</CODE> file and re-read. -</DL> -</P><P> - -<A NAME="IDX244"></A> -<DL> -<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I> -<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>. -</DL> -</P><P> - -<A NAME="IDX245"></A> -<DL> -<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I> -<DD>Return a NULL terminated array of known function names. The array is -sorted. The array itself is allocated, but not the strings inside. You -should <CODE>free()</CODE> the array when you are done, but not the pointers. -</DL> -</P><P> - -<A NAME="IDX246"></A> -<DL> -<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I> -<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make -<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked. -</DL> -</P><P> - -<A NAME="Allowing Undoing"></A> -<HR SIZE="6"> -<A NAME="SEC34"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.5 Allowing Undoing </H3> -<!--docid::SEC34::--> -<P> - -Supporting the undo command is a painless thing, and makes your -functions much more useful. It is certainly easy to try -something if you know you can undo it. -</P><P> - -If your function simply inserts text once, or deletes text once, and -uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then -undoing is already done for you automatically. -</P><P> - -If you do multiple insertions or multiple deletions, or any combination -of these operations, you should group them together into one operation. -This is done with <CODE>rl_begin_undo_group()</CODE> and -<CODE>rl_end_undo_group()</CODE>. -</P><P> - -The types of events that can be undone are: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; -</FONT></pre></td></tr></table></P><P> - -Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and -<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code -tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and -<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and -<CODE>rl_end_undo_group()</CODE>. -</P><P> - -<A NAME="IDX247"></A> -<DL> -<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I> -<DD>Begins saving undo information in a group construct. The undo -information usually comes from calls to <CODE>rl_insert_text()</CODE> and -<CODE>rl_delete_text()</CODE>, but could be the result of calls to -<CODE>rl_add_undo()</CODE>. -</DL> -</P><P> - -<A NAME="IDX248"></A> -<DL> -<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I> -<DD>Closes the current undo group started with <CODE>rl_begin_undo_group -()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE> -for each call to <CODE>rl_begin_undo_group()</CODE>. -</DL> -</P><P> - -<A NAME="IDX249"></A> -<DL> -<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I> -<DD>Remember how to undo an event (according to <VAR>what</VAR>). The affected -text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>. -</DL> -</P><P> - -<A NAME="IDX250"></A> -<DL> -<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I> -<DD>Free the existing undo list. -</DL> -</P><P> - -<A NAME="IDX251"></A> -<DL> -<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I> -<DD>Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was -nothing to undo, non-zero if something was undone. -</DL> -</P><P> - -Finally, if you neither insert nor delete text, but directly modify the -existing text (e.g., change its case), call <CODE>rl_modifying()</CODE> -once, just before you modify the text. You must supply the indices of -the text range that you are going to modify. -</P><P> - -<A NAME="IDX252"></A> -<DL> -<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I> -<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a -single undo unit. It is assumed that you will subsequently modify -that text. -</DL> -</P><P> - -<A NAME="Redisplay"></A> -<HR SIZE="6"> -<A NAME="SEC35"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.6 Redisplay </H3> -<!--docid::SEC35::--> -<P> - -<A NAME="IDX253"></A> -<DL> -<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I> -<DD>Change what's displayed on the screen to reflect the current contents -of <CODE>rl_line_buffer</CODE>. -</DL> -</P><P> - -<A NAME="IDX254"></A> -<DL> -<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I> -<DD>Force the line to be updated and redisplayed, whether or not -Readline thinks the screen display is correct. -</DL> -</P><P> - -<A NAME="IDX255"></A> -<DL> -<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I> -<DD>Tell the update functions that we have moved onto a new (empty) line, -usually after ouputting a newline. -</DL> -</P><P> - -<A NAME="IDX256"></A> -<DL> -<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I> -<DD>Tell the update functions that we have moved onto a new line, with -<VAR>rl_prompt</VAR> already displayed. -This could be used by applications that want to output the prompt string -themselves, but still need Readline to know the prompt string length for -redisplay. -It should be used after setting <VAR>rl_already_prompted</VAR>. -</DL> -</P><P> - -<A NAME="IDX257"></A> -<DL> -<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I> -<DD>Reset the display state to a clean state and redisplay the current line -starting on a new line. -</DL> -</P><P> - -<A NAME="IDX258"></A> -<DL> -<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I> -<DD>Move the cursor to the start of the next screen line. -</DL> -</P><P> - -<A NAME="IDX259"></A> -<DL> -<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I> -<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>. -If Readline has not been set to display meta characters directly, this -will convert meta characters to a meta-prefixed key sequence. -This is intended for use by applications which wish to do their own -redisplay. -</DL> -</P><P> - -<A NAME="IDX260"></A> -<DL> -<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I> -<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>, -possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and -any additional arguments necessary to satisfy the conversion specifications. -The resulting string is displayed in the <EM>echo area</EM>. The echo area -is also used to display numeric arguments and search strings. -You should call <CODE>rl_save_prompt</CODE> to save the prompt information -before calling this function. -</DL> -</P><P> - -<A NAME="IDX261"></A> -<DL> -<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I> -<DD>Clear the message in the echo area. If the prompt was saved with a call to -<CODE>rl_save_prompt</CODE> before the last call to <CODE>rl_message</CODE>, -call <CODE>rl_restore_prompt</CODE> before calling this function. -</DL> -</P><P> - -<A NAME="IDX262"></A> -<DL> -<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I> -<DD>Save the local Readline prompt display state in preparation for -displaying a new message in the message area with <CODE>rl_message()</CODE>. -</DL> -</P><P> - -<A NAME="IDX263"></A> -<DL> -<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I> -<DD>Restore the local Readline prompt display state saved by the most -recent call to <CODE>rl_save_prompt</CODE>. -if <CODE>rl_save_prompt</CODE> was called to save the prompt before a call -to <CODE>rl_message</CODE>, this function should be called before the -corresponding call to <CODE>rl_clear_message</CODE>. -</DL> -</P><P> - -<A NAME="IDX264"></A> -<DL> -<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I> -<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the -local Readline prompt redisplay variables. -This function is called by <CODE>readline()</CODE>. It may also be called to -expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE> -function or <CODE>rl_already_prompted</CODE> variable is used. -It returns the number of visible characters on the last line of the -(possibly multi-line) prompt. -Applications may indicate that the prompt contains characters that take -up no physical screen space when displayed by bracketing a sequence of -such characters with the special markers <CODE>RL_PROMPT_START_IGNORE</CODE> -and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT>. This may -be used to embed terminal-specific escape sequences in prompts. -</DL> -</P><P> - -<A NAME="IDX265"></A> -<DL> -<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I> -<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls -<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE> -to the result. -</DL> -</P><P> - -<A NAME="Modifying Text"></A> -<HR SIZE="6"> -<A NAME="SEC36"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.7 Modifying Text </H3> -<!--docid::SEC36::--> -<P> - -<A NAME="IDX266"></A> -<DL> -<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I> -<DD>Insert <VAR>text</VAR> into the line at the current cursor position. -Returns the number of characters inserted. -</DL> -</P><P> - -<A NAME="IDX267"></A> -<DL> -<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I> -<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line. -Returns the number of characters deleted. -</DL> -</P><P> - -<A NAME="IDX268"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I> -<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in -the current line. -</DL> -</P><P> - -<A NAME="IDX269"></A> -<DL> -<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I> -<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line -to the kill ring, appending or prepending to the last kill if the -last command was a kill command. The text is deleted. -If <VAR>start</VAR> is less than <VAR>end</VAR>, -the text is appended, otherwise prepended. If the last command was -not a kill, a new kill ring slot is used. -</DL> -</P><P> - -<A NAME="IDX270"></A> -<DL> -<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I> -<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked -by a key bound to a macro. Not especially useful; use -<CODE>rl_insert_text()</CODE> instead. -</DL> -</P><P> - -<A NAME="Character Input"></A> -<HR SIZE="6"> -<A NAME="SEC37"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.8 Character Input </H3> -<!--docid::SEC37::--> -<P> - -<A NAME="IDX271"></A> -<DL> -<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I> -<DD>Return the next character available from Readline's current input stream. -This handles input inserted into -the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>) -and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard. -While waiting for input, this function will call any function assigned to -the <CODE>rl_event_hook</CODE> variable. -</DL> -</P><P> - -<A NAME="IDX272"></A> -<DL> -<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I> -<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to -be the keyboard. -</DL> -</P><P> - -<A NAME="IDX273"></A> -<DL> -<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I> -<DD>Insert <VAR>c</VAR> into the Readline input stream. It will be "read" -before Readline attempts to read characters from the terminal with -<CODE>rl_read_key()</CODE>. Up to 512 characters may be pushed back. -<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted; -0 otherwise. -</DL> -</P><P> - -<A NAME="IDX274"></A> -<DL> -<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I> -<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE> -is called. This sets <VAR>rl_pending_input</VAR>. -</DL> -</P><P> - -<A NAME="IDX275"></A> -<DL> -<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I> -<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any -previous call to <CODE>rl_execute_next()</CODE>. This works only if the -pending input has not already been read with <CODE>rl_read_key()</CODE>. -</DL> -</P><P> - -<A NAME="IDX276"></A> -<DL> -<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I> -<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will -wait for <VAR>u</VAR> microseconds for input before calling any function -assigned to <CODE>rl_event_hook</CODE>. The default waiting period is -one-tenth of a second. Returns the old timeout value. -</DL> -</P><P> - -<A NAME="Terminal Management"></A> -<HR SIZE="6"> -<A NAME="SEC38"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.9 Terminal Management </H3> -<!--docid::SEC38::--> -<P> - -<A NAME="IDX277"></A> -<DL> -<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I> -<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE> -can read a single character at a time from the keyboard. -The <VAR>meta_flag</VAR> argument should be non-zero if Readline should -read eight-bit input. -</DL> -</P><P> - -<A NAME="IDX278"></A> -<DL> -<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I> -<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in -the state in which it was before the most recent call to -<CODE>rl_prep_terminal()</CODE>. -</DL> -</P><P> - -<A NAME="IDX279"></A> -<DL> -<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I> -<DD>Read the operating system's terminal editing characters (as would be -displayed by <CODE>stty</CODE>) to their Readline equivalents. -The bindings are performed in <VAR>kmap</VAR>. -</DL> -</P><P> - -<A NAME="IDX280"></A> -<DL> -<DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I> -<DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so -that the terminal editing characters are bound to <CODE>rl_insert</CODE>. -The bindings are performed in <VAR>kmap</VAR>. -</DL> -</P><P> - -<A NAME="IDX281"></A> -<DL> -<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I> -<DD>Reinitialize Readline's idea of the terminal settings using -<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>). -If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE> -environment variable is used. -</DL> -</P><P> - -<A NAME="Utility Functions"></A> -<HR SIZE="6"> -<A NAME="SEC39"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.10 Utility Functions </H3> -<!--docid::SEC39::--> -<P> - -<A NAME="IDX282"></A> -<DL> -<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I> -<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>. -The point and mark are preserved, if possible. -If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the -current line is cleared. -</DL> -</P><P> - -<A NAME="IDX283"></A> -<DL> -<DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I> -<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR> -characters, possibly reallocating it if necessary. -</DL> -</P><P> - -<A NAME="IDX284"></A> -<DL> -<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I> -<DD>Initialize or re-initialize Readline's internal state. -It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before -reading any input. -</DL> -</P><P> - -<A NAME="IDX285"></A> -<DL> -<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I> -<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>. -</DL> -</P><P> - -<A NAME="IDX286"></A> -<DL> -<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I> -<DD>Return 1 if <VAR>c</VAR> is an alphabetic character. -</DL> -</P><P> - -<A NAME="IDX287"></A> -<DL> -<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I> -<DD>A convenience function for displaying a list of strings in -columnar format on Readline's output stream. <CODE>matches</CODE> is the list -of strings, in argv format, such as a list of completion matches. -<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE> -is the length of the longest string in <CODE>matches</CODE>. This function uses -the setting of <CODE>print-completions-horizontally</CODE> to select how the -matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>). -</DL> -</P><P> - -The following are implemented as macros, defined in <CODE>chardefs.h</CODE>. -Applications should refrain from using them. -</P><P> - -<A NAME="IDX288"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I> -<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character. -</DL> -</P><P> - -<A NAME="IDX289"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I> -<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character. -</DL> -</P><P> - -<A NAME="IDX290"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I> -<DD>Return 1 if <VAR>c</VAR> is a numeric character. -</DL> -</P><P> - -<A NAME="IDX291"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I> -<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding -uppercase character. -</DL> -</P><P> - -<A NAME="IDX292"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I> -<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding -lowercase character. -</DL> -</P><P> - -<A NAME="IDX293"></A> -<DL> -<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I> -<DD>If <VAR>c</VAR> is a number, return the value it represents. -</DL> -</P><P> - -<A NAME="Miscellaneous Functions"></A> -<HR SIZE="6"> -<A NAME="SEC40"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.11 Miscellaneous Functions </H3> -<!--docid::SEC40::--> -<P> - -<A NAME="IDX294"></A> -<DL> -<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I> -<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>. -The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the -<VAR>macro</VAR> will be inserted into the line. This function is deprecated; -use <CODE>rl_generic_bind()</CODE> instead. -</DL> -</P><P> - -<A NAME="IDX295"></A> -<DL> -<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I> -<DD>Print the key sequences bound to macros and their values, using -the current keymap, to <CODE>rl_outstream</CODE>. -If <VAR>readable</VAR> is non-zero, the list is formatted in such a way -that it can be made part of an <CODE>inputrc</CODE> file and re-read. -</DL> -</P><P> - -<A NAME="IDX296"></A> -<DL> -<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I> -<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>. -This behaves as if the readline command -<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE> -file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>). -</DL> -</P><P> - -<A NAME="IDX297"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_variable_value</B> <I>(const char *variable)</I> -<DD>Return a string representing the value of the Readline variable <VAR>variable</VAR>. -For boolean variables, this string is either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. -</DL> -</P><P> - -<A NAME="IDX298"></A> -<DL> -<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I> -<DD>Print the readline variable names and their current values -to <CODE>rl_outstream</CODE>. -If <VAR>readable</VAR> is non-zero, the list is formatted in such a way -that it can be made part of an <CODE>inputrc</CODE> file and re-read. -</DL> -</P><P> - -<A NAME="IDX299"></A> -<DL> -<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I> -<DD>Set the time interval (in microseconds) that Readline waits when showing -a balancing character when <CODE>blink-matching-paren</CODE> has been enabled. -</DL> -</P><P> - -<A NAME="IDX300"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I> -<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>. -Readline fetches the termcap entry for the current terminal name and -uses those capabilities to move around the screen line and perform other -terminal-specific operations, like erasing a line. Readline does not -use all of a terminal's capabilities, and this function will return -values for only those capabilities Readline uses. -</DL> -</P><P> - -<A NAME="Alternate Interface"></A> -<HR SIZE="6"> -<A NAME="SEC41"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.12 Alternate Interface </H3> -<!--docid::SEC41::--> -<P> - -An alternate interface is available to plain <CODE>readline()</CODE>. Some -applications need to interleave keyboard I/O with file, device, or -window system I/O, typically by using a main loop to <CODE>select()</CODE> -on various file descriptors. To accomodate this need, readline can -also be invoked as a `callback' function from an event loop. There -are functions available to make this easy. -</P><P> - -<A NAME="IDX301"></A> -<DL> -<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I> -<DD>Set up the terminal for readline I/O and display the initial -expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to -use as a function to call when a complete line of input has been entered. -The function takes the text of the line as an argument. -</DL> -</P><P> - -<A NAME="IDX302"></A> -<DL> -<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I> -<DD>Whenever an application determines that keyboard input is available, it -should call <CODE>rl_callback_read_char()</CODE>, which will read the next -character from the current input source. -If that character completes the line, <CODE>rl_callback_read_char</CODE> will -invoke the <VAR>lhandler</VAR> function saved by <CODE>rl_callback_handler_install</CODE> -to process the line. -Before calling the <VAR>lhandler</VAR> function, the terminal settings are -reset to the values they had before calling -<CODE>rl_callback_handler_install</CODE>. -If the <VAR>lhandler</VAR> function returns, -the terminal settings are modified for Readline's use again. -<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a -<CODE>NULL</CODE> line. -</DL> -</P><P> - -<A NAME="IDX303"></A> -<DL> -<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I> -<DD>Restore the terminal to its initial state and remove the line handler. -This may be called from within a callback as well as independently. -If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE> -does not exit the program, either this function or the function referred -to by the value of <CODE>rl_deprep_term_function</CODE> should be called before -the program exits to reset the terminal settings. -</DL> -</P><P> - -<A NAME="A Readline Example"></A> -<HR SIZE="6"> -<A NAME="SEC42"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.4.13 A Readline Example </H3> -<!--docid::SEC42::--> -<P> - -Here is a function which changes lowercase characters to their uppercase -equivalents, and uppercase characters to lowercase. If -this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would -change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP> -would change the case of the following 10 characters, leaving the cursor on -the last character changed. -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>/* Invert the case of the COUNT following characters. */ -int -invert_case_line (count, key) - int count, key; -{ - register int start, end, i; - - start = rl_point; - - if (rl_point >= rl_end) - return (0); - - if (count < 0) - { - direction = -1; - count = -count; - } - else - direction = 1; - - /* Find the end of the range to modify. */ - end = start + (count * direction); - - /* Force it to be within range. */ - if (end > rl_end) - end = rl_end; - else if (end < 0) - end = 0; - - if (start == end) - return (0); - - if (start > end) - { - int temp = start; - start = end; - end = temp; - } - - /* Tell readline that we are modifying the line, - so it will save the undo information. */ - rl_modifying (start, end); - - for (i = start; i != end; i++) - { - if (_rl_uppercase_p (rl_line_buffer[i])) - rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); - else if (_rl_lowercase_p (rl_line_buffer[i])) - rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]); - } - /* Move point to on top of the last character changed. */ - rl_point = (direction == 1) ? end - 1 : start; - return (0); -} -</pre></td></tr></table></P><P> - -<A NAME="Readline Signal Handling"></A> -<HR SIZE="6"> -<A NAME="SEC43"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.5 Readline Signal Handling </H2> -<!--docid::SEC43::--> -<P> - -Signals are asynchronous events sent to a process by the Unix kernel, -sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his terminal, -or a network connection being broken. There is a class of signals that can -be sent to the process currently reading input from the keyboard. Since -Readline changes the terminal attributes when it is called, it needs to -perform special processing when such a signal is received in order to -restore the terminal to a sane state, or provide application writers with -functions to do so manually. -</P><P> - -Readline contains an internal signal handler that is installed for a -number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, -<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>). -When one of these signals is received, the signal handler -will reset the terminal attributes to those that were in effect before -<CODE>readline()</CODE> was called, reset the signal handling to what it was -before <CODE>readline()</CODE> was called, and resend the signal to the calling -application. -If and when the calling application's signal handler returns, Readline -will reinitialize the terminal and continue to accept input. -When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs -some additional work, which will cause any partially-entered line to be -aborted (see the description of <CODE>rl_free_line_state()</CODE> below). -</P><P> - -There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which -the kernel sends to a process whenever the terminal's size changes (for -example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE> -handler updates Readline's internal screen size information, and then calls -any <CODE>SIGWINCH</CODE> signal handler the calling application has installed. -Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without -resetting the terminal to its original state. If the application's signal -handler does more than update its idea of the terminal size and return (for -example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM> -call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the -terminal state. -</P><P> - -Readline provides two variables that allow application writers to -control whether or not it will catch certain signals and act on them -when they are received. It is important that applications change the -values of these variables only when calling <CODE>readline()</CODE>, not in -a signal handler, so Readline's internal signal state is not corrupted. -</P><P> - -<A NAME="IDX304"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_catch_signals</B> -<DD>If this variable is non-zero, Readline will install signal handlers for -<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, -<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>. -</P><P> - -The default value of <CODE>rl_catch_signals</CODE> is 1. -</DL> -</P><P> - -<A NAME="IDX305"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B> -<DD>If this variable is non-zero, Readline will install a signal handler for -<CODE>SIGWINCH</CODE>. -</P><P> - -The default value of <CODE>rl_catch_sigwinch</CODE> is 1. -</DL> -</P><P> - -If an application does not wish to have Readline catch any signals, or -to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>, -for example), -Readline provides convenience functions to do the necessary terminal -and internal state cleanup upon receipt of a signal. -</P><P> - -<A NAME="IDX306"></A> -<DL> -<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I> -<DD>This function will reset the state of the terminal to what it was before -<CODE>readline()</CODE> was called, and remove the Readline signal handlers for -all signals, depending on the values of <CODE>rl_catch_signals</CODE> and -<CODE>rl_catch_sigwinch</CODE>. -</DL> -</P><P> - -<A NAME="IDX307"></A> -<DL> -<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I> -<DD>This will free any partial state associated with the current input line -(undo information, any partial history entry, any partially-entered -keyboard macro, and any partially-entered numeric argument). This -should be called before <CODE>rl_cleanup_after_signal()</CODE>. The -Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the -current input line. -</DL> -</P><P> - -<A NAME="IDX308"></A> -<DL> -<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I> -<DD>This will reinitialize the terminal and reinstall any Readline signal -handlers, depending on the values of <CODE>rl_catch_signals</CODE> and -<CODE>rl_catch_sigwinch</CODE>. -</DL> -</P><P> - -If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may -call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force -Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE> -is received. -</P><P> - -<A NAME="IDX309"></A> -<DL> -<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I> -<DD>Update Readline's internal screen size by reading values from the kernel. -</DL> -</P><P> - -<A NAME="IDX310"></A> -<DL> -<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I> -<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and -<VAR>cols</VAR> columns. If either <VAR>rows</VAR> or <VAR>columns</VAR> is less than -or equal to 0, Readline's idea of that terminal dimension is unchanged. -</DL> -</P><P> - -If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but -is still interested in the screen dimensions, Readline's idea of the screen -size may be queried. -</P><P> - -<A NAME="IDX311"></A> -<DL> -<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I> -<DD>Return Readline's idea of the terminal's size in the -variables pointed to by the arguments. -</DL> -</P><P> - -<A NAME="IDX312"></A> -<DL> -<DT><U>Function:</U> void <B>rl_reset_screen_size</B> <I>(void)</I> -<DD>Cause Readline to reobtain the screen size and recalculate its dimensions. -</DL> -</P><P> - -The following functions install and remove Readline's signal handlers. -</P><P> - -<A NAME="IDX313"></A> -<DL> -<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I> -<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, -<CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, -<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of -<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>. -</DL> -</P><P> - -<A NAME="IDX314"></A> -<DL> -<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I> -<DD>Remove all of the Readline signal handlers installed by -<CODE>rl_set_signals()</CODE>. -</DL> -</P><P> - -<A NAME="Custom Completers"></A> -<HR SIZE="6"> -<A NAME="SEC44"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 2.6 Custom Completers </H2> -<!--docid::SEC44::--> -<P> - -Typically, a program that reads commands from the user has a way of -disambiguating commands and data. If your program is one of these, then -it can provide completion for commands, data, or both. -The following sections describe how your program and Readline -cooperate to provide this service. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="How Completing Works"></A> -<HR SIZE="6"> -<A NAME="SEC45"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.6.1 How Completing Works </H3> -<!--docid::SEC45::--> -<P> - -In order to complete some text, the full list of possible completions -must be available. That is, it is not possible to accurately -expand a partial word without knowing all of the possible words -which make sense in that context. The Readline library provides -the user interface to completion, and two of the most common -completion functions: filename and username. For completing other types -of text, you must write your own completion function. This section -describes exactly what such functions must do, and provides an example. -</P><P> - -There are three major functions used to perform completion: -</P><P> - -<OL> -<LI> -The user-interface function <CODE>rl_complete()</CODE>. This function is -called with the same arguments as other bindable Readline functions: -<VAR>count</VAR> and <VAR>invoking_key</VAR>. -It isolates the word to be completed and calls -<CODE>rl_completion_matches()</CODE> to generate a list of possible completions. -It then either lists the possible completions, inserts the possible -completions, or actually performs the -completion, depending on which behavior is desired. -<P> - -<LI> -The internal function <CODE>rl_completion_matches()</CODE> uses an -application-supplied <EM>generator</EM> function to generate the list of -possible matches, and then returns the array of these matches. -The caller should place the address of its generator function in -<CODE>rl_completion_entry_function</CODE>. -<P> - -<LI> -The generator function is called repeatedly from -<CODE>rl_completion_matches()</CODE>, returning a string each time. The -arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>. -<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the -first time the function is called, allowing the generator to perform -any necessary initialization, and a positive non-zero integer for -each subsequent call. The generator function returns -<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are -no more possibilities left. Usually the generator function computes the -list of possible completions when <VAR>state</VAR> is zero, and returns them -one at a time on subsequent calls. Each string the generator function -returns as a match must be allocated with <CODE>malloc()</CODE>; Readline -frees the strings when it has finished with them. -Such a generator function is referred to as an -<EM>application-specific completion function</EM>. -<P> - -</OL> -<P> - -<A NAME="IDX315"></A> -<DL> -<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I> -<DD>Complete the word at or before point. You have supplied the function -that does the initial simple matching selection algorithm (see -<CODE>rl_completion_matches()</CODE>). The default is to do filename completion. -</DL> -</P><P> - -<A NAME="IDX316"></A> -<DL> -<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B> -<DD>This is a pointer to the generator function for -<CODE>rl_completion_matches()</CODE>. -If the value of <CODE>rl_completion_entry_function</CODE> is -<CODE>NULL</CODE> then the default filename generator -function, <CODE>rl_filename_completion_function()</CODE>, is used. -An <EM>application-specific completion function</EM> is a function whose -address is assigned to <CODE>rl_completion_entry_function</CODE> and whose -return values are used to generate possible completions. -</DL> -</P><P> - -<A NAME="Completion Functions"></A> -<HR SIZE="6"> -<A NAME="SEC46"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.6.2 Completion Functions </H3> -<!--docid::SEC46::--> -<P> - -Here is the complete list of callable completion functions present in -Readline. -</P><P> - -<A NAME="IDX317"></A> -<DL> -<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I> -<DD>Complete the word at or before point. <VAR>what_to_do</VAR> says what to do -with the completion. A value of <SAMP>`?'</SAMP> means list the possible -completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means -insert all of the possible completions. <SAMP>`!'</SAMP> means to display -all of the possible completions, if there is more than one, as well as -performing partial completion. <SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but -possible completions are not listed if the possible completions share -a common prefix. -</DL> -</P><P> - -<A NAME="IDX318"></A> -<DL> -<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I> -<DD>Complete the word at or before point. You have supplied the function -that does the initial simple matching selection algorithm (see -<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>). -The default is to do filename -completion. This calls <CODE>rl_complete_internal()</CODE> with an -argument depending on <VAR>invoking_key</VAR>. -</DL> -</P><P> - -<A NAME="IDX319"></A> -<DL> -<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I> -<DD>List the possible completions. See description of <CODE>rl_complete -()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of -<SAMP>`?'</SAMP>. -</DL> -</P><P> - -<A NAME="IDX320"></A> -<DL> -<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I> -<DD>Insert the list of possible completions into the line, deleting the -partially-completed word. See description of <CODE>rl_complete()</CODE>. -This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>. -</DL> -</P><P> - -<A NAME="IDX321"></A> -<DL> -<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I> -<DD>Returns the apppriate value to pass to <CODE>rl_complete_internal()</CODE> -depending on whether <VAR>cfunc</VAR> was called twice in succession and -the values of the <CODE>show-all-if-ambiguous</CODE> and -<CODE>show-all-if-unmodified</CODE> variables. -Application-specific completion functions may use this function to present -the same interface as <CODE>rl_complete()</CODE>. -</DL> -</P><P> - -<A NAME="IDX322"></A> -<DL> -<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I> -<DD>Returns an array of strings which is a list of completions for -<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>. -The first entry in the returned array is the substitution for <VAR>text</VAR>. -The remaining entries are the possible completions. The array is -terminated with a <CODE>NULL</CODE> pointer. -</P><P> - -<VAR>entry_func</VAR> is a function of two args, and returns a -<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a -state argument; it is zero on the first call, and non-zero on subsequent -calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller -when there are no more matches. -</DL> -</P><P> - -<A NAME="IDX323"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I> -<DD>A generator function for filename completion in the general case. -<VAR>text</VAR> is a partial filename. -The Bash source is a useful reference for writing application-specific -completion functions (the Bash completion functions call this and other -Readline functions). -</DL> -</P><P> - -<A NAME="IDX324"></A> -<DL> -<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I> -<DD>A completion generator for usernames. <VAR>text</VAR> contains a partial -username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all -completion generators, <VAR>state</VAR> is zero on the first call and non-zero -for subsequent calls. -</DL> -</P><P> - -<A NAME="Completion Variables"></A> -<HR SIZE="6"> -<A NAME="SEC47"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.6.3 Completion Variables </H3> -<!--docid::SEC47::--> -<P> - -<A NAME="IDX325"></A> -<DL> -<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B> -<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>. -<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>, -the default filename completer. -</DL> -</P><P> - -<A NAME="IDX326"></A> -<DL> -<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B> -<DD>A pointer to an alternative function to create matches. -The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>. -<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining -the boundaries of <VAR>text</VAR>, which is a character string. -If this function exists and returns <CODE>NULL</CODE>, or if this variable is -set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of -<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the -array of strings returned will be used. -If this function sets the <CODE>rl_attempted_completion_over</CODE> -variable to a non-zero value, Readline will not perform its default -completion even if this function returns no matches. -</DL> -</P><P> - -<A NAME="IDX327"></A> -<DL> -<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B> -<DD>A pointer to a function that will quote a filename in an -application-specific fashion. This is called if filename completion is being -attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE> -appears in a completed filename. The function is called with -<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR> -is the filename to be quoted. The <VAR>match_type</VAR> is either -<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or -<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to -insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer -to any opening quote character the user typed. Some functions choose -to reset this character. -</DL> -</P><P> - -<A NAME="IDX328"></A> -<DL> -<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B> -<DD>A pointer to a function that will remove application-specific quoting -characters from a filename before completion is attempted, so those -characters do not interfere with matching the text against names in -the filesystem. It is called with <VAR>text</VAR>, the text of the word -to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character -that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If -<VAR>quote_char</VAR> is zero, the filename was not in an embedded string. -</DL> -</P><P> - -<A NAME="IDX329"></A> -<DL> -<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B> -<DD>A pointer to a function to call that determines whether or not a specific -character in the line buffer is quoted, according to whatever quoting -mechanism the program calling Readline uses. The function is called with -two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the -index of the character in the line. It is used to decide whether a -character found in <CODE>rl_completer_word_break_characters</CODE> should be -used to break words for the completer. -</DL> -</P><P> - -<A NAME="IDX330"></A> -<DL> -<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B> -<DD>This function, if defined, is called by the completer when real filename -completion is done, after all the matching names have been generated. -It is passed a <CODE>NULL</CODE> terminated array of matches. -The first element (<CODE>matches[0]</CODE>) is the -maximal substring common to all matches. This function can -re-arrange the list of matches as required, but each element deleted -from the array must be freed. -</DL> -</P><P> - -<A NAME="IDX331"></A> -<DL> -<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B> -<DD>This function, if defined, is allowed to modify the directory portion -of filenames Readline completes. It is called with the address of a -string (the current directory name) as an argument, and may modify that string. -If the string is replaced with a new string, the old value should be freed. -Any modified directory name should have a trailing slash. -The modified value will be displayed as part of the completion, replacing -the directory portion of the pathname the user typed. -It returns an integer that should be non-zero if the function modifies -its directory argument. -It could be used to expand symbolic links or shell variables in pathnames. -</DL> -</P><P> - -<A NAME="IDX332"></A> -<DL> -<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B> -<DD>If non-zero, then this is the address of a function to call when -completing a word would normally display the list of possible matches. -This function is called in lieu of Readline displaying the list. -It takes three arguments: -(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>) -where <VAR>matches</VAR> is the array of matching strings, -<VAR>num_matches</VAR> is the number of strings in that array, and -<VAR>max_length</VAR> is the length of the longest string in that array. -Readline provides a convenience function, <CODE>rl_display_match_list</CODE>, -that takes care of doing the display to Readline's output stream. That -function may be called from this hook. -</DL> -</P><P> - -<A NAME="IDX333"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B> -<DD>The basic list of characters that signal a break between words for the -completer routine. The default value of this variable is the characters -which break words for completion in Bash: -<CODE>" \t\n\"\\'`@$><=;|&{("</CODE>. -</DL> -</P><P> - -<A NAME="IDX334"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B> -<DD>A list of quote characters which can cause a word break. -</DL> -</P><P> - -<A NAME="IDX335"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B> -<DD>The list of characters that signal a break between words for -<CODE>rl_complete_internal()</CODE>. The default list is the value of -<CODE>rl_basic_word_break_characters</CODE>. -</DL> -</P><P> - -<A NAME="IDX336"></A> -<DL> -<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B> -<DD>If non-zero, this is the address of a function to call when Readline is -deciding where to separate words for word completion. It should return -a character string like <CODE>rl_completer_word_break_characters</CODE> to be -used to perform the current completion. The function may choose to set -<CODE>rl_completer_word_break_characters</CODE> itself. If the function -returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is used. -</DL> -</P><P> - -<A NAME="IDX337"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B> -<DD>A list of characters which can be used to quote a substring of the line. -Completion occurs on the entire substring, and within the substring -<CODE>rl_completer_word_break_characters</CODE> are treated as any other character, -unless they also appear within this list. -</DL> -</P><P> - -<A NAME="IDX338"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B> -<DD>A list of characters that cause a filename to be quoted by the completer -when they appear in a completed filename. The default is the null string. -</DL> -</P><P> - -<A NAME="IDX339"></A> -<DL> -<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B> -<DD>The list of characters that are word break characters, but should be -left in <VAR>text</VAR> when it is passed to the completion function. -Programs can use this to help determine what kind of completing to do. -For instance, Bash sets this variable to "$@" so that it can complete -shell variables and hostnames. -</DL> -</P><P> - -<A NAME="IDX340"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_query_items</B> -<DD>Up to this many items will be displayed in response to a -possible-completions call. After that, readline asks the user if she is sure -she wants to see them all. The default value is 100. A negative value -indicates that Readline should never ask the user. -</DL> -</P><P> - -<A NAME="IDX341"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_append_character</B> -<DD>When a single completion alternative matches at the end of the command -line, this character is appended to the inserted completion text. The -default is a space character (<SAMP>` '</SAMP>). Setting this to the null -character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically. -This can be changed in application-specific completion functions to -provide the "most sensible word separator character" according to -an application-specific command line syntax specification. -</DL> -</P><P> - -<A NAME="IDX342"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B> -<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to -matches at the end of the command line, as described above. -It is set to 0 before any application-specific completion function -is called, and may only be changed within such a function. -</DL> -</P><P> - -<A NAME="IDX343"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_quote_character</B> -<DD>When Readline is completing quoted text, as delimited by one of the -characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable -to the quoting character found. -This is set before any application-specific completion function is called. -</DL> -</P><P> - -<A NAME="IDX344"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B> -<DD>If non-zero, Readline does not append a matching quote character when -performing completion on a quoted string. -It is set to 0 before any application-specific completion function -is called, and may only be changed within such a function. -</DL> -</P><P> - -<A NAME="IDX345"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_found_quote</B> -<DD>When Readline is completing quoted text, it sets this variable -to a non-zero value if the word being completed contains or is delimited -by any quoting characters, including backslashes. -This is set before any application-specific completion function is called. -</DL> -</P><P> - -<A NAME="IDX346"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B> -<DD>If non-zero, a slash will be appended to completed filenames that are -symbolic links to directory names, subject to the value of the -user-settable <VAR>mark-directories</VAR> variable. -This variable exists so that application-specific completion functions -can override the user's global preference (set via the -<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate. -This variable is set to the user's preference before any -application-specific completion function is called, so unless that -function modifies the value, the user's preferences are honored. -</DL> -</P><P> - -<A NAME="IDX347"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B> -<DD>If non-zero, then duplicates in the matches are removed. -The default is 1. -</DL> -</P><P> - -<A NAME="IDX348"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B> -<DD>Non-zero means that the results of the matches are to be treated as -filenames. This is <EM>always</EM> zero when completion is attempted, -and can only be changed -within an application-specific completion function. If it is set to a -non-zero value by such a function, directory names have a slash appended -and Readline attempts to quote completed filenames if they contain any -characters in <CODE>rl_filename_quote_characters</CODE> and -<CODE>rl_filename_quoting_desired</CODE> is set to a non-zero value. -</DL> -</P><P> - -<A NAME="IDX349"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B> -<DD>Non-zero means that the results of the matches are to be quoted using -double quotes (or an application-specific quoting mechanism) if the -completed filename contains any characters in -<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero -when completion is attempted, and can only be changed within an -application-specific completion function. -The quoting is effected via a call to the function pointed to -by <CODE>rl_filename_quoting_function</CODE>. -</DL> -</P><P> - -<A NAME="IDX350"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B> -<DD>If an application-specific completion function assigned to -<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero -value, Readline will not perform its default filename completion even -if the application's completion function returns no matches. -It should be set only by an application's completion function. -</DL> -</P><P> - -<A NAME="IDX351"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_completion_type</B> -<DD>Set to a character describing the type of completion Readline is currently -attempting; see the description of <CODE>rl_complete_internal()</CODE> -(see section <A HREF="readline.html#SEC46">2.6.2 Completion Functions</A>) for the list of characters. -This is set to the appropriate value before any application-specific -completion function is called, allowing such functions to present -the same interface as <CODE>rl_complete()</CODE>. -</DL> -</P><P> - -<A NAME="IDX352"></A> -<DL> -<DT><U>Variable:</U> int <B>rl_inhibit_completion</B> -<DD>If this variable is non-zero, completion is inhibited. The completion -character will be inserted as any other bound to <CODE>self-insert</CODE>. -</DL> -</P><P> - -<A NAME="A Short Completion Example"></A> -<HR SIZE="6"> -<A NAME="SEC48"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 2.6.4 A Short Completion Example </H3> -<!--docid::SEC48::--> -<P> - -Here is a small application demonstrating the use of the GNU Readline -library. It is called <CODE>fileman</CODE>, and the source code resides in -<TT>`examples/fileman.c'</TT>. This sample application provides -completion of command names, line editing features, and access to the -history list. -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the - GNU Readline library. This application interactively allows users - to manipulate files and their modes. */ - -#include <stdio.h> -#include <sys/types.h> -#include <sys/file.h> -#include <sys/stat.h> -#include <sys/errno.h> - -#include <readline/readline.h> -#include <readline/history.h> - -extern char *xmalloc (); - -/* The names of functions that actually do the manipulation. */ -int com_list __P((char *)); -int com_view __P((char *)); -int com_rename __P((char *)); -int com_stat __P((char *)); -int com_pwd __P((char *)); -int com_delete __P((char *)); -int com_help __P((char *)); -int com_cd __P((char *)); -int com_quit __P((char *)); - -/* A structure which contains information on the commands this program - can understand. */ - -typedef struct { - char *name; /* User printable name of the function. */ - rl_icpfunc_t *func; /* Function to call to do the job. */ - char *doc; /* Documentation for this function. */ -} COMMAND; - -COMMAND commands[] = { - { "cd", com_cd, "Change to directory DIR" }, - { "delete", com_delete, "Delete FILE" }, - { "help", com_help, "Display this text" }, - { "?", com_help, "Synonym for `help'" }, - { "list", com_list, "List files in DIR" }, - { "ls", com_list, "Synonym for `list'" }, - { "pwd", com_pwd, "Print the current working directory" }, - { "quit", com_quit, "Quit using Fileman" }, - { "rename", com_rename, "Rename FILE to NEWNAME" }, - { "stat", com_stat, "Print out statistics on FILE" }, - { "view", com_view, "View the contents of FILE" }, - { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL } -}; - -/* Forward declarations. */ -char *stripwhite (); -COMMAND *find_command (); - -/* The name of this program, as taken from argv[0]. */ -char *progname; - -/* When non-zero, this means the user is done using this program. */ -int done; - -char * -dupstr (s) - int s; -{ - char *r; - - r = xmalloc (strlen (s) + 1); - strcpy (r, s); - return (r); -} - -main (argc, argv) - int argc; - char **argv; -{ - char *line, *s; - - progname = argv[0]; - - initialize_readline (); /* Bind our completer. */ - - /* Loop reading and executing lines until the user quits. */ - for ( ; done == 0; ) - { - line = readline ("FileMan: "); - - if (!line) - break; - - /* Remove leading and trailing whitespace from the line. - Then, if there is anything left, add it to the history list - and execute it. */ - s = stripwhite (line); - - if (*s) - { - add_history (s); - execute_line (s); - } - - free (line); - } - exit (0); -} - -/* Execute a command line. */ -int -execute_line (line) - char *line; -{ - register int i; - COMMAND *command; - char *word; - - /* Isolate the command word. */ - i = 0; - while (line[i] && whitespace (line[i])) - i++; - word = line + i; - - while (line[i] && !whitespace (line[i])) - i++; - - if (line[i]) - line[i++] = '\0'; - - command = find_command (word); - - if (!command) - { - fprintf (stderr, "%s: No such command for FileMan.\n", word); - return (-1); - } - - /* Get argument to command, if any. */ - while (whitespace (line[i])) - i++; - - word = line + i; - - /* Call the function. */ - return ((*(command->func)) (word)); -} - -/* Look up NAME as the name of a command, and return a pointer to that - command. Return a NULL pointer if NAME isn't a command name. */ -COMMAND * -find_command (name) - char *name; -{ - register int i; - - for (i = 0; commands[i].name; i++) - if (strcmp (name, commands[i].name) == 0) - return (&commands[i]); - - return ((COMMAND *)NULL); -} - -/* Strip whitespace from the start and end of STRING. Return a pointer - into STRING. */ -char * -stripwhite (string) - char *string; -{ - register char *s, *t; - - for (s = string; whitespace (*s); s++) - ; - - if (*s == 0) - return (s); - - t = s + strlen (s) - 1; - while (t > s && whitespace (*t)) - t--; - *++t = '\0'; - - return s; -} - -/* **************************************************************** */ -/* */ -/* Interface to Readline Completion */ -/* */ -/* **************************************************************** */ - -char *command_generator __P((const char *, int)); -char **fileman_completion __P((const char *, int, int)); - -/* Tell the GNU Readline library how to complete. We want to try to - complete on command names if this is the first word in the line, or - on filenames if not. */ -initialize_readline () -{ - /* Allow conditional parsing of the ~/.inputrc file. */ - rl_readline_name = "FileMan"; - - /* Tell the completer that we want a crack first. */ - rl_attempted_completion_function = fileman_completion; -} - -/* Attempt to complete on the contents of TEXT. START and END - bound the region of rl_line_buffer that contains the word to - complete. TEXT is the word to complete. We can use the entire - contents of rl_line_buffer in case we want to do some simple - parsing. Returnthe array of matches, or NULL if there aren't any. */ -char ** -fileman_completion (text, start, end) - const char *text; - int start, end; -{ - char **matches; - - matches = (char **)NULL; - - /* If this word is at the start of the line, then it is a command - to complete. Otherwise it is the name of a file in the current - directory. */ - if (start == 0) - matches = rl_completion_matches (text, command_generator); - - return (matches); -} - -/* Generator function for command completion. STATE lets us - know whether to start from scratch; without any state - (i.e. STATE == 0), then we start at the top of the list. */ -char * -command_generator (text, state) - const char *text; - int state; -{ - static int list_index, len; - char *name; - - /* If this is a new word to complete, initialize now. This - includes saving the length of TEXT for efficiency, and - initializing the index variable to 0. */ - if (!state) - { - list_index = 0; - len = strlen (text); - } - - /* Return the next name which partially matches from the - command list. */ - while (name = commands[list_index].name) - { - list_index++; - - if (strncmp (name, text, len) == 0) - return (dupstr(name)); - } - - /* If no names matched, then return NULL. */ - return ((char *)NULL); -} - -/* **************************************************************** */ -/* */ -/* FileMan Commands */ -/* */ -/* **************************************************************** */ - -/* String to pass to system (). This is for the LIST, VIEW and RENAME - commands. */ -static char syscom[1024]; - -/* List the file(s) named in arg. */ -com_list (arg) - char *arg; -{ - if (!arg) - arg = ""; - - sprintf (syscom, "ls -FClg %s", arg); - return (system (syscom)); -} - -com_view (arg) - char *arg; -{ - if (!valid_argument ("view", arg)) - return 1; - - sprintf (syscom, "more %s", arg); - return (system (syscom)); -} - -com_rename (arg) - char *arg; -{ - too_dangerous ("rename"); - return (1); -} - -com_stat (arg) - char *arg; -{ - struct stat finfo; - - if (!valid_argument ("stat", arg)) - return (1); - - if (stat (arg, &finfo) == -1) - { - perror (arg); - return (1); - } - - printf ("Statistics for `%s':\n", arg); - - printf ("%s has %d link%s, and is %d byte%s in length.\n", arg, - finfo.st_nlink, - (finfo.st_nlink == 1) ? "" : "s", - finfo.st_size, - (finfo.st_size == 1) ? "" : "s"); - printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); - printf (" Last access at: %s", ctime (&finfo.st_atime)); - printf (" Last modified at: %s", ctime (&finfo.st_mtime)); - return (0); -} - -com_delete (arg) - char *arg; -{ - too_dangerous ("delete"); - return (1); -} - -/* Print out help for ARG, or for all of the commands if ARG is - not present. */ -com_help (arg) - char *arg; -{ - register int i; - int printed = 0; - - for (i = 0; commands[i].name; i++) - { - if (!*arg || (strcmp (arg, commands[i].name) == 0)) - { - printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); - printed++; - } - } - - if (!printed) - { - printf ("No commands match `%s'. Possibilties are:\n", arg); - - for (i = 0; commands[i].name; i++) - { - /* Print in six columns. */ - if (printed == 6) - { - printed = 0; - printf ("\n"); - } - - printf ("%s\t", commands[i].name); - printed++; - } - - if (printed) - printf ("\n"); - } - return (0); -} - -/* Change to the directory ARG. */ -com_cd (arg) - char *arg; -{ - if (chdir (arg) == -1) - { - perror (arg); - return 1; - } - - com_pwd (""); - return (0); -} - -/* Print out the current working directory. */ -com_pwd (ignore) - char *ignore; -{ - char dir[1024], *s; - - s = getcwd (dir, sizeof(dir) - 1); - if (s == 0) - { - printf ("Error getting pwd: %s\n", dir); - return 1; - } - - printf ("Current directory is %s\n", dir); - return 0; -} - -/* The user wishes to quit using this program. Just set DONE - non-zero. */ -com_quit (arg) - char *arg; -{ - done = 1; - return (0); -} - -/* Function which tells you that you can't do this. */ -too_dangerous (caller) - char *caller; -{ - fprintf (stderr, - "%s: Too dangerous for me to distribute.\n", - caller); - fprintf (stderr, "Write it yourself.\n"); -} - -/* Return non-zero if ARG is a valid argument for CALLER, - else print an error message and return zero. */ -int -valid_argument (caller, arg) - char *caller, *arg; -{ - if (!arg || !*arg) - { - fprintf (stderr, "%s: Argument required.\n", caller); - return (0); - } - - return (1); -} -</FONT></pre></td></tr></table></P><P> - -<A NAME="Copying This Manual"></A> -<HR SIZE="6"> -<A NAME="SEC49"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> A. Copying This Manual </H1> -<!--docid::SEC49::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">A.1 GNU Free Documentation License</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="GNU Free Documentation License"></A> -<HR SIZE="6"> -<A NAME="SEC50"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC51"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> A.1 GNU Free Documentation License </H2> -<!--docid::SEC50::--> -<P> - -<A NAME="IDX353"></A> -<center> - Version 1.2, November 2002 -</center> -</P><P> - -<TABLE><tr><td> </td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -</pre></td></tr></table></P><P> - -<OL> -<LI> -PREAMBLE -<P> - -The purpose of this License is to make a manual, textbook, or other -functional and useful document <EM>free</EM> in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. -</P><P> - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. -</P><P> - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. -</P><P> - -<LI> -APPLICABILITY AND DEFINITIONS -<P> - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. -</P><P> - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. -</P><P> - -A "Secondary Section" is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. -</P><P> - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. -</P><P> - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. -</P><P> - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -</P><P> - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available -<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples -of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and -<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or -<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are -not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for -output purposes only. -</P><P> - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -</P><P> - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -</P><P> - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. -</P><P> - -<LI> -VERBATIM COPYING -<P> - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. -</P><P> - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -</P><P> - -<LI> -COPYING IN QUANTITY -<P> - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. -</P><P> - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. -</P><P> - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. -</P><P> - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -</P><P> - -<LI> -MODIFICATIONS -<P> - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: -</P><P> - -<OL> -<LI> -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. -<P> - -<LI> -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. -<P> - -<LI> -State on the Title page the name of the publisher of the -Modified Version, as the publisher. -<P> - -<LI> -Preserve all the copyright notices of the Document. -<P> - -<LI> -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. -<P> - -<LI> -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. -<P> - -<LI> -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -<P> - -<LI> -Include an unaltered copy of this License. -<P> - -<LI> -Preserve the section Entitled "History", Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. -<P> - -<LI> -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. -<P> - -<LI> -For any section Entitled "Acknowledgements" or "Dedications", Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. -<P> - -<LI> -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. -<P> - -<LI> -Delete any section Entitled "Endorsements". Such a section -may not be included in the Modified Version. -<P> - -<LI> -Do not retitle any existing section to be Entitled "Endorsements" or -to conflict in title with any Invariant Section. -<P> - -<LI> -Preserve any Warranty Disclaimers. -</OL> -<P> - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. -</P><P> - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. -</P><P> - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. -</P><P> - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -</P><P> - -<LI> -COMBINING DOCUMENTS -<P> - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. -</P><P> - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. -</P><P> - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -</P><P> - -<LI> -COLLECTIONS OF DOCUMENTS -<P> - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. -</P><P> - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -</P><P> - -<LI> -AGGREGATION WITH INDEPENDENT WORKS -<P> - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. -</P><P> - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. -</P><P> - -<LI> -TRANSLATION -<P> - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. -</P><P> - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. -</P><P> - -<LI> -TERMINATION -<P> - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. -</P><P> - -<LI> -FUTURE REVISIONS OF THIS LICENSE -<P> - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>. -</P><P> - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -</OL> -<P> - -<HR SIZE="6"> -<A NAME="SEC51"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3> -<!--docid::SEC51::--> -<P> - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with - the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts - being <VAR>list</VAR>. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. -</P><P> - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. -</P><P> - -<A NAME="Concept Index"></A> -<HR SIZE="6"> -<A NAME="SEC52"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC51"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC53"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> Concept Index </H1> -<!--docid::SEC52::--> -<table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="readline.html#cp_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A> - -<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A> - -<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A> - -<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A> - -</td></tr></table><br><P></P> -<TABLE border=0> -<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC44">application-specific completion functions</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.6 Custom Completers</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="readline.html#SEC50">A.1 GNU Free Documentation License</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="readline.html#cp_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A> - -<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A> - -<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A> - -<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A> - -</td></tr></table><br><P> - -<A NAME="Function and Variable Index"></A> -<HR SIZE="6"> -<A NAME="SEC53"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ > ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> Function and Variable Index </H1> -<!--docid::SEC53::--> -<table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A> - -<BR> -<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A> - -<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A> - -<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A> - -<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A> - -<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A> - -<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A> - -<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A> - -<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A> - -<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A> - -<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A> - -<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A> - -<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A> - -<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A> - -<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A> - -</td></tr></table><br><P></P> -<TABLE border=0> -<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">bind-tty-special-chars</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">expand-tilde</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">isearch-terminators</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">meta-flag</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345">rl_completion_found_quote</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343">rl_completion_quote_character</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">show-all-if-unmodified</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27">visible-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR> -<TR><TD COLSPAN=3> <HR></TD></TR> -</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A> - -<BR> -<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A> - -<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A> - -<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A> - -<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A> - -<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A> - -<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A> - -<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A> - -<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A> - -<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A> - -<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A> - -<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A> - -<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A> - -<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A> - -<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A> - -<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A> - -<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A> - -<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A> - -<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A> - -<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A> - -<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A> - -</td></tr></table><br><P> - -<HR SIZE="6"> -<A NAME="SEC_Contents"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Table of Contents</H1> -<UL> -<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A> -<BR> -<UL> -<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A> -<BR> -<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A> -<BR> -<UL> -<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A> -<BR> -<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A> -<BR> -<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A> -<BR> -<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A> -<BR> -<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A> -<BR> -</UL> -<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A> -<BR> -<UL> -<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A> -<BR> -<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A> -<BR> -<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A> -<BR> -</UL> -<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A> -<BR> -<UL> -<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A> -<BR> -<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A> -<BR> -<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A> -<BR> -<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A> -<BR> -<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A> -<BR> -<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A> -<BR> -<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A> -<BR> -<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A> -<BR> -</UL> -<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A> -<BR> -</UL> -<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A> -<BR> -<UL> -<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A> -<BR> -<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A> -<BR> -<UL> -<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A> -<BR> -<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A> -<BR> -</UL> -<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A> -<BR> -<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A> -<BR> -<UL> -<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A> -<BR> -<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A> -<BR> -<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A> -<BR> -<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A> -<BR> -<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A> -<BR> -<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A> -<BR> -<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A> -<BR> -<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A> -<BR> -<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A> -<BR> -<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A> -<BR> -<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A> -<BR> -<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A> -<BR> -<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A> -<BR> -</UL> -<A NAME="TOC43" HREF="readline.html#SEC43">2.5 Readline Signal Handling</A> -<BR> -<A NAME="TOC44" HREF="readline.html#SEC44">2.6 Custom Completers</A> -<BR> -<UL> -<A NAME="TOC45" HREF="readline.html#SEC45">2.6.1 How Completing Works</A> -<BR> -<A NAME="TOC46" HREF="readline.html#SEC46">2.6.2 Completion Functions</A> -<BR> -<A NAME="TOC47" HREF="readline.html#SEC47">2.6.3 Completion Variables</A> -<BR> -<A NAME="TOC48" HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A> -<BR> -</UL> -</UL> -<A NAME="TOC49" HREF="readline.html#SEC49">A. Copying This Manual</A> -<BR> -<UL> -<A NAME="TOC50" HREF="readline.html#SEC50">A.1 GNU Free Documentation License</A> -<BR> -<UL> -<A NAME="TOC51" HREF="readline.html#SEC51">A.1.1 ADDENDUM: How to use this License for your documents</A> -<BR> -</UL> -</UL> -<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A> -<BR> -<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A> -<BR> -</UL> -<HR SIZE=1> -<A NAME="SEC_OVERVIEW"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Short Table of Contents</H1> -<BLOCKQUOTE> -<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A> -<BR> -<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A> -<BR> -<A NAME="TOC49" HREF="readline.html#SEC49">A. Copying This Manual</A> -<BR> -<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A> -<BR> -<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A> -<BR> - -</BLOCKQUOTE> -<HR SIZE=1> -<A NAME="SEC_About"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>About this document</H1> -This document was generated by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> -<P></P> -The buttons in the navigation panels have the following meaning: -<P></P> -<table border = "1"> -<TR> -<TH> Button </TH> -<TH> Name </TH> -<TH> Go to </TH> -<TH> From 1.2.3 go to</TH> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ < ] </TD> -<TD ALIGN="CENTER"> -Back -</TD> -<TD> -previous section in reading order -</TD> -<TD> -1.2.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ > ] </TD> -<TD ALIGN="CENTER"> -Forward -</TD> -<TD> -next section in reading order -</TD> -<TD> -1.2.4 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ << ] </TD> -<TD ALIGN="CENTER"> -FastBack -</TD> -<TD> -previous or up-and-previous section -</TD> -<TD> -1.1 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ Up ] </TD> -<TD ALIGN="CENTER"> -Up -</TD> -<TD> -up section -</TD> -<TD> -1.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ >> ] </TD> -<TD ALIGN="CENTER"> -FastForward -</TD> -<TD> -next or up-and-next section -</TD> -<TD> -1.3 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Top] </TD> -<TD ALIGN="CENTER"> -Top -</TD> -<TD> -cover (top) of document -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Contents] </TD> -<TD ALIGN="CENTER"> -Contents -</TD> -<TD> -table of contents -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Index] </TD> -<TD ALIGN="CENTER"> -Index -</TD> -<TD> -concept index -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ ? ] </TD> -<TD ALIGN="CENTER"> -About -</TD> -<TD> -this page -</TD> -<TD> - -</TD> -</TR> -</TABLE> -<P></P> -where the <STRONG> Example </STRONG> assumes that the current position -is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of -the following structure: -<UL> -<LI> 1. Section One </LI> -<UL> -<LI>1.1 Subsection One-One</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.2 Subsection One-Two</LI> -<UL> -<LI>1.2.1 Subsubsection One-Two-One -</LI><LI>1.2.2 Subsubsection One-Two-Two -</LI><LI>1.2.3 Subsubsection One-Two-Three <STRONG> -<== Current Position </STRONG> -</LI><LI>1.2.4 Subsubsection One-Two-Four -</LI></UL> -<LI>1.3 Subsection One-Three</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.4 Subsection One-Four</LI> -</UL> -</UL> - -<HR SIZE=1> -<BR> -<FONT SIZE="-1"> -This document was generated -by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> - -</BODY> -</HTML> diff --git a/readline/doc/readline.info b/readline/doc/readline.info deleted file mode 100644 index 7f2d0f3..0000000 --- a/readline/doc/readline.info +++ /dev/null @@ -1,4397 +0,0 @@ -This is readline.info, produced by makeinfo version 4.7 from -/Users/chet/src/bash/readline-src/doc/rlman.texi. - - This manual describes the GNU Readline Library (version 5.1-beta1, -11 November 2005), a library which aids in the consistency of user -interface across discrete programs which provide a command line -interface. - - Copyright (C) 1988-2004 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: "You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Libraries -START-INFO-DIR-ENTRY -* Readline: (readline). The GNU readline library API. -END-INFO-DIR-ENTRY - - -File: readline.info, Node: Top, Next: Command Line Editing, Up: (dir) - -GNU Readline Library -******************** - -This document describes the GNU Readline Library, a utility which aids -in the consistency of user interface across discrete programs which -provide a command line interface. - -* Menu: - -* Command Line Editing:: GNU Readline User's Manual. -* Programming with GNU Readline:: GNU Readline Programmer's Manual. -* Copying This Manual:: Copying this manual. -* Concept Index:: Index of concepts described in this manual. -* Function and Variable Index:: Index of externally visible functions - and variables. - - -File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top - -1 Command Line Editing -********************** - -This chapter describes the basic features of the GNU command line -editing interface. - -* Menu: - -* Introduction and Notation:: Notation used in this text. -* Readline Interaction:: The minimum set of commands for editing a line. -* Readline Init File:: Customizing Readline from a user's view. -* Bindable Readline Commands:: A description of most of the Readline commands - available for binding -* Readline vi Mode:: A short description of how to make Readline - behave like the vi editor. - - -File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing - -1.1 Introduction to Line Editing -================================ - -The following paragraphs describe the notation used to represent -keystrokes. - - The text `C-k' is read as `Control-K' and describes the character -produced when the <k> key is pressed while the Control key is depressed. - - The text `M-k' is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the <k> -key is pressed. The Meta key is labeled <ALT> on many keyboards. On -keyboards with two keys labeled <ALT> (usually to either side of the -space bar), the <ALT> on the left side is generally set to work as a -Meta key. The <ALT> key on the right may also be configured to work as -a Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. - - If you do not have a Meta or <ALT> key, or another key working as a -Meta key, the identical keystroke can be generated by typing <ESC> -_first_, and then typing <k>. Either process is known as "metafying" -the <k> key. - - The text `M-C-k' is read as `Meta-Control-k' and describes the -character produced by "metafying" `C-k'. - - In addition, several keys have their own names. Specifically, -<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves -when seen in this text, or in an init file (*note Readline Init File::). -If your keyboard lacks a <LFD> key, typing <C-j> will produce the -desired character. The <RET> key may be labeled <Return> or <Enter> on -some keyboards. - - -File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing - -1.2 Readline Interaction -======================== - -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press <RET>. You do not have to be at the end of -the line to press <RET>; the entire line is accepted regardless of the -location of the cursor within the line. - -* Menu: - -* Readline Bare Essentials:: The least you need to know about Readline. -* Readline Movement Commands:: Moving about the input line. -* Readline Killing Commands:: How to delete text, and how to get it back! -* Readline Arguments:: Giving numeric arguments to commands. -* Searching:: Searching through previous lines. - - -File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction - -1.2.1 Readline Bare Essentials ------------------------------- - -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your erase -character to back up and delete the mistyped character. - - Sometimes you may mistype a character, and not notice the error -until you have typed several other characters. In that case, you can -type `C-b' to move the cursor to the left, and then correct your -mistake. Afterwards, you can move the cursor to the right with `C-f'. - - When you add text in the middle of a line, you will notice that -characters to the right of the cursor are `pushed over' to make room -for the text that you have inserted. Likewise, when you delete text -behind the cursor, characters to the right of the cursor are `pulled -back' to fill in the blank space created by the removal of the text. A -list of the bare essentials for editing the text of an input line -follows. - -`C-b' - Move back one character. - -`C-f' - Move forward one character. - -<DEL> or <Backspace> - Delete the character to the left of the cursor. - -`C-d' - Delete the character underneath the cursor. - -Printing characters - Insert the character into the line at the cursor. - -`C-_' or `C-x C-u' - Undo the last editing command. You can undo all the way back to an - empty line. - -(Depending on your configuration, the <Backspace> key be set to delete -the character to the left of the cursor and the <DEL> key set to delete -the character underneath the cursor, like `C-d', rather than the -character to the left of the cursor.) - - -File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction - -1.2.2 Readline Movement Commands --------------------------------- - -The above table describes the most basic keystrokes that you need in -order to do editing of the input line. For your convenience, many -other commands have been added in addition to `C-b', `C-f', `C-d', and -<DEL>. Here are some commands for moving more rapidly about the line. - -`C-a' - Move to the start of the line. - -`C-e' - Move to the end of the line. - -`M-f' - Move forward a word, where a word is composed of letters and - digits. - -`M-b' - Move backward a word. - -`C-l' - Clear the screen, reprinting the current line at the top. - - Notice how `C-f' moves forward a character, while `M-f' moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. - - -File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction - -1.2.3 Readline Killing Commands -------------------------------- - -"Killing" text means to delete the text from the line, but to save it -away for later use, usually by "yanking" (re-inserting) it back into -the line. (`Cut' and `paste' are more recent jargon for `kill' and -`yank'.) - - If the description for a command says that it `kills' text, then you -can be sure that you can get the text back in a different (or the same) -place later. - - When you use a kill command, the text is saved in a "kill-ring". -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill ring is not line -specific; the text that you killed on a previously typed line is -available to be yanked back later, when you are typing another line. - - Here is the list of commands for killing text. - -`C-k' - Kill the text from the current cursor position to the end of the - line. - -`M-d' - Kill from the cursor to the end of the current word, or, if between - words, to the end of the next word. Word boundaries are the same - as those used by `M-f'. - -`M-<DEL>' - Kill from the cursor the start of the current word, or, if between - words, to the start of the previous word. Word boundaries are the - same as those used by `M-b'. - -`C-w' - Kill from the cursor to the previous whitespace. This is - different than `M-<DEL>' because the word boundaries differ. - - - Here is how to "yank" the text back into the line. Yanking means to -copy the most-recently-killed text from the kill buffer. - -`C-y' - Yank the most recently killed text back into the buffer at the - cursor. - -`M-y' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `C-y' or `M-y'. - - -File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction - -1.2.4 Readline Arguments ------------------------- - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. - - The general way to pass numeric arguments to a command is to type -meta digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once you -have typed one meta digit to get the argument started, you can type the -remainder of the digits, and then the command. For example, to give -the `C-d' command an argument of 10, you could type `M-1 0 C-d', which -will delete the next ten characters on the input line. - - -File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction - -1.2.5 Searching for Commands in the History -------------------------------------------- - -Readline provides commands for searching through the command history -for lines containing a specified string. There are two search modes: -"incremental" and "non-incremental". - - Incremental searches begin before the user has finished typing the -search string. As each character of the search string is typed, -Readline displays the next entry from the history matching the string -typed so far. An incremental search requires only as many characters -as needed to find the desired history entry. To search backward in the -history for a particular string, type `C-r'. Typing `C-s' searches -forward through the history. The characters present in the value of -the `isearch-terminators' variable are used to terminate an incremental -search. If that variable has not been assigned a value, the <ESC> and -`C-J' characters will terminate an incremental search. `C-g' will -abort an incremental search and restore the original line. When the -search is terminated, the history entry containing the search string -becomes the current line. - - To find other matching entries in the history list, type `C-r' or -`C-s' as appropriate. This will search backward or forward in the -history for the next entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate the -search and execute that command. For instance, a <RET> will terminate -the search and accept the line, thereby executing the command from the -history list. A movement command will terminate the search, make the -last line found the current line, and begin editing. - - Readline remembers the last incremental search string. If two -`C-r's are typed without any intervening characters defining a new -search string, any remembered search string is used. - - Non-incremental searches read the entire search string before -starting to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. - - -File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing - -1.3 Readline Init File -====================== - -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home -directory. The name of this file is taken from the value of the -environment variable `INPUTRC'. If that variable is unset, the default -is `~/.inputrc'. - - When a program which uses the Readline library starts up, the init -file is read, and the key bindings are set. - - In addition, the `C-x C-r' command re-reads this init file, thus -incorporating any changes that you might have made to it. - -* Menu: - -* Readline Init File Syntax:: Syntax for the commands in the inputrc file. - -* Conditional Init Constructs:: Conditional key bindings in the inputrc file. - -* Sample Init File:: An example inputrc file. - - -File: readline.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File - -1.3.1 Readline Init File Syntax -------------------------------- - -There are only a few basic constructs allowed in the Readline init -file. Blank lines are ignored. Lines beginning with a `#' are -comments. Lines beginning with a `$' indicate conditional constructs -(*note Conditional Init Constructs::). Other lines denote variable -settings and key bindings. - -Variable Settings - You can modify the run-time behavior of Readline by altering the - values of variables in Readline using the `set' command within the - init file. The syntax is simple: - - set VARIABLE VALUE - - Here, for example, is how to change from the default Emacs-like - key binding to use `vi' line editing commands: - - set editing-mode vi - - Variable names and values, where appropriate, are recognized - without regard to case. Unrecognized variable names are ignored. - - Boolean variables (those that can be set to on or off) are set to - on if the value is null or empty, ON (case-insensitive), or 1. - Any other value results in the variable being set to off. - - A great deal of run-time behavior is changeable with the following - variables. - - `bell-style' - Controls what happens when Readline wants to ring the - terminal bell. If set to `none', Readline never rings the - bell. If set to `visible', Readline uses a visible bell if - one is available. If set to `audible' (the default), - Readline attempts to ring the terminal's bell. - - `bind-tty-special-chars' - If set to `on', Readline attempts to bind the control - characters treated specially by the kernel's terminal driver - to their Readline equivalents. - - `comment-begin' - The string to insert at the beginning of the line when the - `insert-comment' command is executed. The default value is - `"#"'. - - `completion-ignore-case' - If set to `on', Readline performs filename matching and - completion in a case-insensitive fashion. The default value - is `off'. - - `completion-query-items' - The number of possible completions that determines when the - user is asked whether the list of possibilities should be - displayed. If the number of possible completions is greater - than this value, Readline will ask the user whether or not he - wishes to view them; otherwise, they are simply listed. This - variable must be set to an integer value greater than or - equal to 0. A negative value means Readline should never ask. - The default limit is `100'. - - `convert-meta' - If set to `on', Readline will convert characters with the - eighth bit set to an ASCII key sequence by stripping the - eighth bit and prefixing an <ESC> character, converting them - to a meta-prefixed key sequence. The default value is `on'. - - `disable-completion' - If set to `On', Readline will inhibit word completion. - Completion characters will be inserted into the line as if - they had been mapped to `self-insert'. The default is `off'. - - `editing-mode' - The `editing-mode' variable controls which default set of key - bindings is used. By default, Readline starts up in Emacs - editing mode, where the keystrokes are most similar to Emacs. - This variable can be set to either `emacs' or `vi'. - - `enable-keypad' - When set to `on', Readline will try to enable the application - keypad when it is called. Some systems need this to enable - the arrow keys. The default is `off'. - - `expand-tilde' - If set to `on', tilde expansion is performed when Readline - attempts word completion. The default is `off'. - - `history-preserve-point' - If set to `on', the history code attempts to place point at - the same location on each history line retrieved with - `previous-history' or `next-history'. The default is `off'. - - `horizontal-scroll-mode' - This variable can be set to either `on' or `off'. Setting it - to `on' means that the text of the lines being edited will - scroll horizontally on a single screen line when they are - longer than the width of the screen, instead of wrapping onto - a new screen line. By default, this variable is set to `off'. - - `input-meta' - If set to `on', Readline will enable eight-bit input (it will - not clear the eighth bit in the characters it reads), - regardless of what the terminal claims it can support. The - default value is `off'. The name `meta-flag' is a synonym - for this variable. - - `isearch-terminators' - The string of characters that should terminate an incremental - search without subsequently executing the character as a - command (*note Searching::). If this variable has not been - given a value, the characters <ESC> and `C-J' will terminate - an incremental search. - - `keymap' - Sets Readline's idea of the current keymap for key binding - commands. Acceptable `keymap' names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. The - default value is `emacs'. The value of the `editing-mode' - variable also affects the default keymap. - - `mark-directories' - If set to `on', completed directory names have a slash - appended. The default is `on'. - - `mark-modified-lines' - This variable, when set to `on', causes Readline to display an - asterisk (`*') at the start of history lines which have been - modified. This variable is `off' by default. - - `mark-symlinked-directories' - If set to `on', completed names which are symbolic links to - directories have a slash appended (subject to the value of - `mark-directories'). The default is `off'. - - `match-hidden-files' - This variable, when set to `on', causes Readline to match - files whose names begin with a `.' (hidden files) when - performing filename completion, unless the leading `.' is - supplied by the user in the filename to be completed. This - variable is `on' by default. - - `output-meta' - If set to `on', Readline will display characters with the - eighth bit set directly rather than as a meta-prefixed escape - sequence. The default is `off'. - - `page-completions' - If set to `on', Readline uses an internal `more'-like pager - to display a screenful of possible completions at a time. - This variable is `on' by default. - - `print-completions-horizontally' - If set to `on', Readline will display completions with matches - sorted horizontally in alphabetical order, rather than down - the screen. The default is `off'. - - `show-all-if-ambiguous' - This alters the default behavior of the completion functions. - If set to `on', words which have more than one possible - completion cause the matches to be listed immediately instead - of ringing the bell. The default value is `off'. - - `show-all-if-unmodified' - This alters the default behavior of the completion functions - in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to - `on', words which have more than one possible completion - without any possible partial completion (the possible - completions don't share a common prefix) cause the matches to - be listed immediately instead of ringing the bell. The - default value is `off'. - - `visible-stats' - If set to `on', a character denoting a file's type is - appended to the filename when listing possible completions. - The default is `off'. - - -Key Bindings - The syntax for controlling key bindings in the init file is - simple. First you need to find the name of the command that you - want to change. The following sections contain tables of the - command name, the default keybinding, if any, and a short - description of what the command does. - - Once you know the name of the command, simply place on a line in - the init file the name of the key you wish to bind the command to, - a colon, and then the name of the command. The name of the key - can be expressed in different ways, depending on what you find most - comfortable. - - In addition to command names, readline allows keys to be bound to - a string that is inserted when the key is pressed (a MACRO). - - KEYNAME: FUNCTION-NAME or MACRO - KEYNAME is the name of a key spelled out in English. For - example: - Control-u: universal-argument - Meta-Rubout: backward-kill-word - Control-o: "> output" - - In the above example, `C-u' is bound to the function - `universal-argument', `M-DEL' is bound to the function - `backward-kill-word', and `C-o' is bound to run the macro - expressed on the right hand side (that is, to insert the text - `> output' into the line). - - A number of symbolic character names are recognized while - processing this key binding syntax: DEL, ESC, ESCAPE, LFD, - NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. - - "KEYSEQ": FUNCTION-NAME or MACRO - KEYSEQ differs from KEYNAME above in that strings denoting an - entire key sequence can be specified, by placing the key - sequence in double quotes. Some GNU Emacs style key escapes - can be used, as in the following example, but the special - character names are not recognized. - - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\e[11~": "Function Key 1" - - In the above example, `C-u' is again bound to the function - `universal-argument' (just as it was in the first example), - `C-x C-r' is bound to the function `re-read-init-file', and - `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function - Key 1'. - - - The following GNU Emacs style escape sequences are available when - specifying key sequences: - - `\C-' - control prefix - - `\M-' - meta prefix - - `\e' - an escape character - - `\\' - backslash - - `\"' - <">, a double quotation mark - - `\'' - <'>, a single quote or apostrophe - - In addition to the GNU Emacs style escape sequences, a second set - of backslash escapes is available: - - `\a' - alert (bell) - - `\b' - backspace - - `\d' - delete - - `\f' - form feed - - `\n' - newline - - `\r' - carriage return - - `\t' - horizontal tab - - `\v' - vertical tab - - `\NNN' - the eight-bit character whose value is the octal value NNN - (one to three digits) - - `\xHH' - the eight-bit character whose value is the hexadecimal value - HH (one or two hex digits) - - When entering the text of a macro, single or double quotes must be - used to indicate a macro definition. Unquoted text is assumed to - be a function name. In the macro body, the backslash escapes - described above are expanded. Backslash will quote any other - character in the macro text, including `"' and `''. For example, - the following binding will make `C-x \' insert a single `\' into - the line: - "\C-x\\": "\\" - - - -File: readline.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File - -1.3.2 Conditional Init Constructs ---------------------------------- - -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key bindings -and variable settings to be performed as the result of tests. There -are four parser directives used. - -`$if' - The `$if' construct allows bindings to be made based on the - editing mode, the terminal being used, or the application using - Readline. The text of the test extends to the end of the line; no - characters are required to isolate it. - - `mode' - The `mode=' form of the `$if' directive is used to test - whether Readline is in `emacs' or `vi' mode. This may be - used in conjunction with the `set keymap' command, for - instance, to set bindings in the `emacs-standard' and - `emacs-ctlx' keymaps only if Readline is starting out in - `emacs' mode. - - `term' - The `term=' form may be used to include terminal-specific key - bindings, perhaps to bind the key sequences output by the - terminal's function keys. The word on the right side of the - `=' is tested against both the full name of the terminal and - the portion of the terminal name before the first `-'. This - allows `sun' to match both `sun' and `sun-cmd', for instance. - - `application' - The APPLICATION construct is used to include - application-specific settings. Each program using the - Readline library sets the APPLICATION NAME, and you can test - for a particular value. This could be used to bind key - sequences to functions useful for a specific program. For - instance, the following command adds a key sequence that - quotes the current or previous word in Bash: - $if Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $endif - -`$endif' - This command, as seen in the previous example, terminates an `$if' - command. - -`$else' - Commands in this branch of the `$if' directive are executed if the - test fails. - -`$include' - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the following - directive reads from `/etc/inputrc': - $include /etc/inputrc - - -File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File - -1.3.3 Sample Init File ----------------------- - -Here is an example of an INPUTRC file. This illustrates key binding, -variable assignment, and conditional syntax. - - - # This file controls the behaviour of line input editing for - # programs that use the GNU Readline library. Existing - # programs include FTP, Bash, and GDB. - # - # You can re-read the inputrc file with C-x C-r. - # Lines beginning with '#' are comments. - # - # First, include any systemwide bindings and variable - # assignments from /etc/Inputrc - $include /etc/Inputrc - - # - # Set various bindings for emacs mode. - - set editing-mode emacs - - $if mode=emacs - - Meta-Control-h: backward-kill-word Text after the function name is ignored - - # - # Arrow keys in keypad mode - # - #"\M-OD": backward-char - #"\M-OC": forward-char - #"\M-OA": previous-history - #"\M-OB": next-history - # - # Arrow keys in ANSI mode - # - "\M-[D": backward-char - "\M-[C": forward-char - "\M-[A": previous-history - "\M-[B": next-history - # - # Arrow keys in 8 bit keypad mode - # - #"\M-\C-OD": backward-char - #"\M-\C-OC": forward-char - #"\M-\C-OA": previous-history - #"\M-\C-OB": next-history - # - # Arrow keys in 8 bit ANSI mode - # - #"\M-\C-[D": backward-char - #"\M-\C-[C": forward-char - #"\M-\C-[A": previous-history - #"\M-\C-[B": next-history - - C-q: quoted-insert - - $endif - - # An old-style binding. This happens to be the default. - TAB: complete - - # Macros that are convenient for shell interaction - $if Bash - # edit the path - "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" - # prepare to type a quoted word -- - # insert open and close double quotes - # and move to just after the open quote - "\C-x\"": "\"\"\C-b" - # insert a backslash (testing backslash escapes - # in sequences and macros) - "\C-x\\": "\\" - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - # Add a binding to refresh the line, which is unbound - "\C-xr": redraw-current-line - # Edit variable on current line. - "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" - $endif - - # use a visible bell if one is available - set bell-style visible - - # don't strip characters to 7 bits when reading - set input-meta on - - # allow iso-latin1 characters to be inserted rather - # than converted to prefix-meta sequences - set convert-meta off - - # display characters with the eighth bit set directly - # rather than as meta-prefixed characters - set output-meta on - - # if there are more than 150 possible completions for - # a word, ask the user if he wants to see all of them - set completion-query-items 150 - - # For FTP - $if Ftp - "\C-xg": "get \M-?" - "\C-xt": "put \M-?" - "\M-.": yank-last-arg - $endif - - -File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing - -1.4 Bindable Readline Commands -============================== - -* Menu: - -* Commands For Moving:: Moving about the line. -* Commands For History:: Getting at previous lines. -* Commands For Text:: Commands for changing text. -* Commands For Killing:: Commands for killing and yanking. -* Numeric Arguments:: Specifying numeric arguments, repeat counts. -* Commands For Completion:: Getting Readline to do the typing for you. -* Keyboard Macros:: Saving and re-executing typed characters -* Miscellaneous Commands:: Other miscellaneous commands. - - This section describes Readline commands that may be bound to key -sequences. Command names without an accompanying key sequence are -unbound by default. - - In the following descriptions, "point" refers to the current cursor -position, and "mark" refers to a cursor position saved by the -`set-mark' command. The text between the point and mark is referred to -as the "region". - - -File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands - -1.4.1 Commands For Moving -------------------------- - -`beginning-of-line (C-a)' - Move to the start of the current line. - -`end-of-line (C-e)' - Move to the end of the line. - -`forward-char (C-f)' - Move forward a character. - -`backward-char (C-b)' - Move back a character. - -`forward-word (M-f)' - Move forward to the end of the next word. Words are composed of - letters and digits. - -`backward-word (M-b)' - Move back to the start of the current or previous word. Words are - composed of letters and digits. - -`clear-screen (C-l)' - Clear the screen and redraw the current line, leaving the current - line at the top of the screen. - -`redraw-current-line ()' - Refresh the current line. By default, this is unbound. - - - -File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands - -1.4.2 Commands For Manipulating The History -------------------------------------------- - -`accept-line (Newline or Return)' - Accept the line regardless of where the cursor is. If this line is - non-empty, it may be added to the history list for future recall - with `add_history()'. If this line is a modified history line, - the history line is restored to its original state. - -`previous-history (C-p)' - Move `back' through the history list, fetching the previous - command. - -`next-history (C-n)' - Move `forward' through the history list, fetching the next command. - -`beginning-of-history (M-<)' - Move to the first line in the history. - -`end-of-history (M->)' - Move to the end of the input history, i.e., the line currently - being entered. - -`reverse-search-history (C-r)' - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental search. - -`forward-search-history (C-s)' - Search forward starting at the current line and moving `down' - through the the history as necessary. This is an incremental - search. - -`non-incremental-reverse-search-history (M-p)' - Search backward starting at the current line and moving `up' - through the history as necessary using a non-incremental search - for a string supplied by the user. - -`non-incremental-forward-search-history (M-n)' - Search forward starting at the current line and moving `down' - through the the history as necessary using a non-incremental search - for a string supplied by the user. - -`history-search-forward ()' - Search forward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`history-search-backward ()' - Search backward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`yank-nth-arg (M-C-y)' - Insert the first argument to the previous command (usually the - second word on the previous line) at point. With an argument N, - insert the Nth word from the previous command (the words in the - previous command begin with word 0). A negative argument inserts - the Nth word from the end of the previous command. Once the - argument N is computed, the argument is extracted as if the `!N' - history expansion had been specified. - -`yank-last-arg (M-. or M-_)' - Insert last argument to the previous command (the last word of the - previous history entry). With an argument, behave exactly like - `yank-nth-arg'. Successive calls to `yank-last-arg' move back - through the history list, inserting the last argument of each line - in turn. The history expansion facilities are used to extract the - last argument, as if the `!$' history expansion had been specified. - - - -File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands - -1.4.3 Commands For Changing Text --------------------------------- - -`delete-char (C-d)' - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to `delete-char', then return EOF. - -`backward-delete-char (Rubout)' - Delete the character behind the cursor. A numeric argument means - to kill the characters instead of deleting them. - -`forward-backward-delete-char ()' - Delete the character under the cursor, unless the cursor is at the - end of the line, in which case the character behind the cursor is - deleted. By default, this is not bound to a key. - -`quoted-insert (C-q or C-v)' - Add the next character typed to the line verbatim. This is how to - insert key sequences like `C-q', for example. - -`tab-insert (M-<TAB>)' - Insert a tab character. - -`self-insert (a, b, A, 1, !, ...)' - Insert yourself. - -`transpose-chars (C-t)' - Drag the character before the cursor forward over the character at - the cursor, moving the cursor forward as well. If the insertion - point is at the end of the line, then this transposes the last two - characters of the line. Negative arguments have no effect. - -`transpose-words (M-t)' - Drag the word before point past the word after point, moving point - past that word as well. If the insertion point is at the end of - the line, this transposes the last two words on the line. - -`upcase-word (M-u)' - Uppercase the current (or following) word. With a negative - argument, uppercase the previous word, but do not move the cursor. - -`downcase-word (M-l)' - Lowercase the current (or following) word. With a negative - argument, lowercase the previous word, but do not move the cursor. - -`capitalize-word (M-c)' - Capitalize the current (or following) word. With a negative - argument, capitalize the previous word, but do not move the cursor. - -`overwrite-mode ()' - Toggle overwrite mode. With an explicit positive numeric argument, - switches to overwrite mode. With an explicit non-positive numeric - argument, switches to insert mode. This command affects only - `emacs' mode; `vi' mode does overwrite differently. Each call to - `readline()' starts in insert mode. - - In overwrite mode, characters bound to `self-insert' replace the - text at point rather than pushing the text to the right. - Characters bound to `backward-delete-char' replace the character - before point with a space. - - By default, this command is unbound. - - - -File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands - -1.4.4 Killing And Yanking -------------------------- - -`kill-line (C-k)' - Kill the text from point to the end of the line. - -`backward-kill-line (C-x Rubout)' - Kill backward to the beginning of the line. - -`unix-line-discard (C-u)' - Kill backward from the cursor to the beginning of the current line. - -`kill-whole-line ()' - Kill all characters on the current line, no matter where point is. - By default, this is unbound. - -`kill-word (M-d)' - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the same - as `forward-word'. - -`backward-kill-word (M-<DEL>)' - Kill the word behind point. Word boundaries are the same as - `backward-word'. - -`unix-word-rubout (C-w)' - Kill the word behind point, using white space as a word boundary. - The killed text is saved on the kill-ring. - -`unix-filename-rubout ()' - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on the - kill-ring. - -`delete-horizontal-space ()' - Delete all spaces and tabs around point. By default, this is - unbound. - -`kill-region ()' - Kill the text in the current region. By default, this command is - unbound. - -`copy-region-as-kill ()' - Copy the text in the region to the kill buffer, so it can be yanked - right away. By default, this command is unbound. - -`copy-backward-word ()' - Copy the word before point to the kill buffer. The word - boundaries are the same as `backward-word'. By default, this - command is unbound. - -`copy-forward-word ()' - Copy the word following point to the kill buffer. The word - boundaries are the same as `forward-word'. By default, this - command is unbound. - -`yank (C-y)' - Yank the top of the kill ring into the buffer at point. - -`yank-pop (M-y)' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `yank' or `yank-pop'. - - -File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands - -1.4.5 Specifying Numeric Arguments ----------------------------------- - -`digit-argument (M-0, M-1, ... M--)' - Add this digit to the argument already accumulating, or start a new - argument. `M--' starts a negative argument. - -`universal-argument ()' - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is - followed by digits, executing `universal-argument' again ends the - numeric argument, but is otherwise ignored. As a special case, if - this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argument - count four, a second time makes the argument count sixteen, and so - on. By default, this is not bound to a key. - - -File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands - -1.4.6 Letting Readline Type For You ------------------------------------ - -`complete (<TAB>)' - Attempt to perform completion on the text before point. The - actual completion performed is application-specific. The default - is filename completion. - -`possible-completions (M-?)' - List the possible completions of the text before point. - -`insert-completions (M-*)' - Insert all completions of the text before point that would have - been generated by `possible-completions'. - -`menu-complete ()' - Similar to `complete', but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of `menu-complete' steps through the list of possible - completions, inserting each match in turn. At the end of the list - of completions, the bell is rung (subject to the setting of - `bell-style') and the original text is restored. An argument of N - moves N positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to <TAB>, but is unbound by - default. - -`delete-char-or-list ()' - Deletes the character under the cursor if not at the beginning or - end of the line (like `delete-char'). If at the end of the line, - behaves identically to `possible-completions'. This command is - unbound by default. - - - -File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands - -1.4.7 Keyboard Macros ---------------------- - -`start-kbd-macro (C-x ()' - Begin saving the characters typed into the current keyboard macro. - -`end-kbd-macro (C-x ))' - Stop saving the characters typed into the current keyboard macro - and save the definition. - -`call-last-kbd-macro (C-x e)' - Re-execute the last keyboard macro defined, by making the - characters in the macro appear as if typed at the keyboard. - - - -File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands - -1.4.8 Some Miscellaneous Commands ---------------------------------- - -`re-read-init-file (C-x C-r)' - Read in the contents of the INPUTRC file, and incorporate any - bindings or variable assignments found there. - -`abort (C-g)' - Abort the current editing command and ring the terminal's bell - (subject to the setting of `bell-style'). - -`do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. - -`prefix-meta (<ESC>)' - Metafy the next character typed. This is for keyboards without a - meta key. Typing `<ESC> f' is equivalent to typing `M-f'. - -`undo (C-_ or C-x C-u)' - Incremental undo, separately remembered for each line. - -`revert-line (M-r)' - Undo all changes made to this line. This is like executing the - `undo' command enough times to get back to the beginning. - -`tilde-expand (M-~)' - Perform tilde expansion on the current word. - -`set-mark (C-@)' - Set the mark to the point. If a numeric argument is supplied, the - mark is set to that position. - -`exchange-point-and-mark (C-x C-x)' - Swap the point with the mark. The current cursor position is set - to the saved position, and the old cursor position is saved as the - mark. - -`character-search (C-])' - A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous - occurrences. - -`character-search-backward (M-C-])' - A character is read and point is moved to the previous occurrence - of that character. A negative count searches for subsequent - occurrences. - -`insert-comment (M-#)' - Without a numeric argument, the value of the `comment-begin' - variable is inserted at the beginning of the current line. If a - numeric argument is supplied, this command acts as a toggle: if - the characters at the beginning of the line do not match the value - of `comment-begin', the value is inserted, otherwise the - characters in `comment-begin' are deleted from the beginning of - the line. In either case, the line is accepted as if a newline - had been typed. - -`dump-functions ()' - Print all of the functions and their key bindings to the Readline - output stream. If a numeric argument is supplied, the output is - formatted in such a way that it can be made part of an INPUTRC - file. This command is unbound by default. - -`dump-variables ()' - Print all of the settable variables and their values to the - Readline output stream. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`dump-macros ()' - Print all of the Readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`emacs-editing-mode (C-e)' - When in `vi' command mode, this causes a switch to `emacs' editing - mode. - -`vi-editing-mode (M-C-j)' - When in `emacs' editing mode, this causes a switch to `vi' editing - mode. - - - -File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing - -1.5 Readline vi Mode -==================== - -While the Readline library does not have a full set of `vi' editing -functions, it does contain enough to allow simple editing of the line. -The Readline `vi' mode behaves as specified in the POSIX 1003.2 -standard. - - In order to switch interactively between `emacs' and `vi' editing -modes, use the command `M-C-j' (bound to emacs-editing-mode when in -`vi' mode and to vi-editing-mode in `emacs' mode). The Readline -default is `emacs' mode. - - When you enter a line in `vi' mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing <ESC> 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-2005 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. - - -File: readline.info, Node: Programming with GNU Readline, Next: Copying This Manual, Prev: Command Line Editing, Up: Top - -2 Programming with GNU Readline -******************************* - -This chapter describes the interface between the GNU Readline Library -and other programs. If you are a programmer, and you wish to include -the features found in GNU Readline such as completion, line editing, -and interactive history manipulation in your own programs, this section -is for you. - -* Menu: - -* Basic Behavior:: Using the default behavior of Readline. -* Custom Functions:: Adding your own functions to Readline. -* Readline Variables:: Variables accessible to custom - functions. -* Readline Convenience Functions:: Functions which Readline supplies to - aid in writing your own custom - functions. -* Readline Signal Handling:: How Readline behaves when it receives signals. -* Custom Completers:: Supplanting or supplementing Readline's - completion functions. - - -File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline - -2.1 Basic Behavior -================== - -Many programs provide a command line interface, such as `mail', `ftp', -and `sh'. For such programs, the default behaviour of Readline is -sufficient. This section describes how to use Readline in the simplest -way possible, perhaps to replace calls in your code to `gets()' or -`fgets()'. - - The function `readline()' prints a prompt PROMPT and then reads and -returns a single line of text from the user. If PROMPT is `NULL' or -the empty string, no prompt is displayed. The line `readline' returns -is allocated with `malloc()'; the caller should `free()' the line when -it has finished with it. The declaration for `readline' in ANSI C is - - `char *readline (const char *PROMPT);' - -So, one might say - `char *line = readline ("Enter a line: ");' - in order to read a line of text from the user. The line returned -has the final newline removed, so only the text remains. - - If `readline' encounters an `EOF' while reading the line, and the -line is empty at that point, then `(char *)NULL' is returned. -Otherwise, the line is ended just as if a newline had been typed. - - If you want the user to be able to get at the line later, (with -<C-p> for example), you must call `add_history()' to save the line away -in a "history" list of such lines. - - `add_history (line)'; - -For full details on the GNU History Library, see the associated manual. - - It is preferable to avoid saving empty lines on the history list, -since users rarely have a burning need to reuse a blank line. Here is -a function which usefully replaces the standard `gets()' library -function, and has the advantage of no static buffer to overflow: - - /* A static variable for holding the line. */ - static char *line_read = (char *)NULL; - - /* Read a string, and return a pointer to it. - Returns NULL on EOF. */ - char * - rl_gets () - { - /* If the buffer has already been allocated, - return the memory to the free pool. */ - if (line_read) - { - free (line_read); - line_read = (char *)NULL; - } - - /* Get a line from the user. */ - line_read = readline (""); - - /* If the line has any text in it, - save it on the history. */ - if (line_read && *line_read) - add_history (line_read); - - return (line_read); - } - - This function gives the user the default behaviour of <TAB> -completion: completion on file names. If you do not want Readline to -complete on filenames, you can change the binding of the <TAB> key with -`rl_bind_key()'. - - `int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);' - - `rl_bind_key()' takes two arguments: KEY is the character that you -want to bind, and FUNCTION is the address of the function to call when -KEY is pressed. Binding <TAB> to `rl_insert()' makes <TAB> insert -itself. `rl_bind_key()' returns non-zero if KEY is not a valid ASCII -character code (between 0 and 255). - - Thus, to disable the default <TAB> behavior, the following suffices: - `rl_bind_key ('\t', rl_insert);' - - This code should be executed once at the start of your program; you -might write a function called `initialize_readline()' which performs -this and other desired initializations, such as installing custom -completers (*note Custom Completers::). - - -File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline - -2.2 Custom Functions -==================== - -Readline provides many functions for manipulating the text of the line, -but it isn't possible to anticipate the needs of all programs. This -section describes the various functions and variables defined within -the Readline library which allow a user program to add customized -functionality to Readline. - - Before declaring any functions that customize Readline's behavior, or -using any functionality Readline provides in other code, an application -writer should include the file `<readline/readline.h>' in any file that -uses Readline's features. Since some of the definitions in -`readline.h' use the `stdio' library, the file `<stdio.h>' should be -included before `readline.h'. - - `readline.h' defines a C preprocessor variable that should be -treated as an integer, `RL_READLINE_VERSION', which may be used to -conditionally compile application code depending on the installed -Readline version. The value is a hexadecimal encoding of the major and -minor version numbers of the library, of the form 0xMMMM. MM is the -two-digit major version number; MM is the two-digit minor version -number. For Readline 4.2, for example, the value of -`RL_READLINE_VERSION' would be `0x0402'. - -* Menu: - -* Readline Typedefs:: C declarations to make code readable. -* Function Writing:: Variables and calling conventions. - - -File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions - -2.2.1 Readline Typedefs ------------------------ - -For readabilty, we declare a number of new object types, all pointers -to functions. - - The reason for declaring these new types is to make it easier to -write code describing pointers to C functions with appropriately -prototyped arguments and return values. - - For instance, say we want to declare a variable FUNC as a pointer to -a function which takes two `int' arguments and returns an `int' (this -is the type of all of the Readline bindable functions). Instead of the -classic C declaration - - `int (*func)();' - -or the ANSI-C style declaration - - `int (*func)(int, int);' - -we may write - - `rl_command_func_t *func;' - - The full list of function pointer types available is - -`typedef int rl_command_func_t (int, int);' - -`typedef char *rl_compentry_func_t (const char *, int);' - -`typedef char **rl_completion_func_t (const char *, int, int);' - -`typedef char *rl_quote_func_t (char *, int, char *);' - -`typedef char *rl_dequote_func_t (char *, int);' - -`typedef int rl_compignore_func_t (char **);' - -`typedef void rl_compdisp_func_t (char **, int, int);' - -`typedef int rl_hook_func_t (void);' - -`typedef int rl_getc_func_t (FILE *);' - -`typedef int rl_linebuf_func_t (char *, int);' - -`typedef int rl_intfunc_t (int);' - -`#define rl_ivoidfunc_t rl_hook_func_t' - -`typedef int rl_icpfunc_t (char *);' - -`typedef int rl_icppfunc_t (char **);' - -`typedef void rl_voidfunc_t (void);' - -`typedef void rl_vintfunc_t (int);' - -`typedef void rl_vcpfunc_t (char *);' - -`typedef void rl_vcppfunc_t (char **);' - - -File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions - -2.2.2 Writing a New Function ----------------------------- - -In order to write new functions for Readline, you need to know the -calling conventions for keyboard-invoked functions, and the names of the -variables that describe the current state of the line read so far. - - The calling sequence for a command `foo' looks like - - `int foo (int count, int key)' - -where COUNT is the numeric argument (or 1 if defaulted) and KEY is the -key that invoked this function. - - It is completely up to the function as to what should be done with -the numeric argument. Some functions use it as a repeat count, some as -a flag, and others to choose alternate behavior (refreshing the current -line as opposed to refreshing the screen, for example). Some choose to -ignore it. In general, if a function uses the numeric argument as a -repeat count, it should be able to do something useful with both -negative and positive arguments. At the very least, it should be aware -that it can be passed a negative argument. - - A command function should return 0 if its action completes -successfully, and a non-zero value if some error occurs. This is the -convention obeyed by all of the builtin Readline bindable command -functions. - - -File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline - -2.3 Readline Variables -====================== - -These variables are available to function writers. - - -- Variable: char * rl_line_buffer - This is the line gathered so far. You are welcome to modify the - contents of the line, but see *Note Allowing Undoing::. The - function `rl_extend_line_buffer' is available to increase the - memory allocated to `rl_line_buffer'. - - -- Variable: int rl_point - The offset of the current cursor position in `rl_line_buffer' (the - _point_). - - -- Variable: int rl_end - The number of characters present in `rl_line_buffer'. When - `rl_point' is at the end of the line, `rl_point' and `rl_end' are - equal. - - -- Variable: int rl_mark - The MARK (saved position) in the current line. If set, the mark - and point define a _region_. - - -- Variable: int rl_done - Setting this to a non-zero value causes Readline to return the - current line immediately. - - -- Variable: int rl_num_chars_to_read - Setting this to a positive value before calling `readline()' causes - Readline to return after accepting that many characters, rather - than reading up to a character bound to `accept-line'. - - -- Variable: int rl_pending_input - Setting this to a value makes it the next keystroke read. This is - a way to stuff a single character into the input stream. - - -- Variable: int rl_dispatching - Set to a non-zero value if a function is being called from a key - binding; zero otherwise. Application functions can test this to - discover whether they were called directly or by Readline's - dispatching mechanism. - - -- Variable: int rl_erase_empty_line - Setting this to a non-zero value causes Readline to completely - erase the current line, including any prompt, any time a newline - is typed as the only character on an otherwise-empty line. The - cursor is moved to the beginning of the newly-blank line. - - -- Variable: char * rl_prompt - The prompt Readline uses. This is set from the argument to - `readline()', and should not be assigned to directly. The - `rl_set_prompt()' function (*note Redisplay::) may be used to - modify the prompt string after calling `readline()'. - - -- Variable: int rl_already_prompted - If an application wishes to display the prompt itself, rather than - have Readline do it the first time `readline()' is called, it - should set this variable to a non-zero value after displaying the - prompt. The prompt must also be passed as the argument to - `readline()' so the redisplay functions can update the display - properly. The calling application is responsible for managing the - value; Readline never sets it. - - -- Variable: const char * rl_library_version - The version number of this revision of the library. - - -- Variable: int rl_readline_version - An integer encoding the current version of the library. The - encoding is of the form 0xMMMM, where MM is the two-digit major - version number, and MM is the two-digit minor version number. For - example, for Readline-4.2, `rl_readline_version' would have the - value 0x0402. - - -- Variable: int rl_gnu_readline_p - Always set to 1, denoting that this is GNU readline rather than - some emulation. - - -- Variable: const char * rl_terminal_name - The terminal type, used for initialization. If not set by the - application, Readline sets this to the value of the `TERM' - environment variable the first time it is called. - - -- Variable: const char * rl_readline_name - This variable is set to a unique name by each application using - Readline. The value allows conditional parsing of the inputrc file - (*note Conditional Init Constructs::). - - -- Variable: FILE * rl_instream - The stdio stream from which Readline reads input. If `NULL', - Readline defaults to STDIN. - - -- Variable: FILE * rl_outstream - The stdio stream to which Readline performs output. If `NULL', - Readline defaults to STDOUT. - - -- Variable: int rl_prefer_env_winsize - If non-zero, Readline gives values found in the `LINES' and - `COLUMNS' environment variables greater precedence than values - fetched from the kernel when computing the screen dimensions. - - -- Variable: rl_command_func_t * rl_last_func - The address of the last command function Readline executed. May - be used to test whether or not a function is being executed twice - in succession, for example. - - -- Variable: rl_hook_func_t * rl_startup_hook - If non-zero, this is the address of a function to call just before - `readline' prints the first prompt. - - -- Variable: rl_hook_func_t * rl_pre_input_hook - If non-zero, this is the address of a function to call after the - first prompt has been printed and just before `readline' starts - reading input characters. - - -- Variable: rl_hook_func_t * rl_event_hook - If non-zero, this is the address of a function to call periodically - when Readline is waiting for terminal input. By default, this - will be called at most ten times a second if there is no keyboard - input. - - -- Variable: rl_getc_func_t * rl_getc_function - If non-zero, Readline will call indirectly through this pointer to - get a character from the input stream. By default, it is set to - `rl_getc', the default Readline character input function (*note - Character Input::). - - -- Variable: rl_voidfunc_t * rl_redisplay_function - If non-zero, Readline will call indirectly through this pointer to - update the display with the current contents of the editing buffer. - By default, it is set to `rl_redisplay', the default Readline - redisplay function (*note Redisplay::). - - -- Variable: rl_vintfunc_t * rl_prep_term_function - If non-zero, Readline will call indirectly through this pointer to - initialize the terminal. The function takes a single argument, an - `int' flag that says whether or not to use eight-bit characters. - By default, this is set to `rl_prep_terminal' (*note Terminal - Management::). - - -- Variable: rl_voidfunc_t * rl_deprep_term_function - If non-zero, Readline will call indirectly through this pointer to - reset the terminal. This function should undo the effects of - `rl_prep_term_function'. By default, this is set to - `rl_deprep_terminal' (*note Terminal Management::). - - -- Variable: Keymap rl_executing_keymap - This variable is set to the keymap (*note Keymaps::) in which the - currently executing readline function was found. - - -- Variable: Keymap rl_binding_keymap - This variable is set to the keymap (*note Keymaps::) in which the - last key binding occurred. - - -- Variable: char * rl_executing_macro - This variable is set to the text of any currently-executing macro. - - -- Variable: int rl_readline_state - A variable with bit values that encapsulate the current Readline - state. A bit is set with the `RL_SETSTATE' macro, and unset with - the `RL_UNSETSTATE' macro. Use the `RL_ISSTATE' macro to test - whether a particular state bit is set. Current state bits include: - - `RL_STATE_NONE' - Readline has not yet been called, nor has it begun to - intialize. - - `RL_STATE_INITIALIZING' - Readline is initializing its internal data structures. - - `RL_STATE_INITIALIZED' - Readline has completed its initialization. - - `RL_STATE_TERMPREPPED' - Readline has modified the terminal modes to do its own input - and redisplay. - - `RL_STATE_READCMD' - Readline is reading a command from the keyboard. - - `RL_STATE_METANEXT' - Readline is reading more input after reading the meta-prefix - character. - - `RL_STATE_DISPATCHING' - Readline is dispatching to a command. - - `RL_STATE_MOREINPUT' - Readline is reading more input while executing an editing - command. - - `RL_STATE_ISEARCH' - Readline is performing an incremental history search. - - `RL_STATE_NSEARCH' - Readline is performing a non-incremental history search. - - `RL_STATE_SEARCH' - Readline is searching backward or forward through the history - for a string. - - `RL_STATE_NUMERICARG' - Readline is reading a numeric argument. - - `RL_STATE_MACROINPUT' - Readline is currently getting its input from a - previously-defined keyboard macro. - - `RL_STATE_MACRODEF' - Readline is currently reading characters defining a keyboard - macro. - - `RL_STATE_OVERWRITE' - Readline is in overwrite mode. - - `RL_STATE_COMPLETING' - Readline is performing word completion. - - `RL_STATE_SIGHANDLER' - Readline is currently executing the readline signal handler. - - `RL_STATE_UNDOING' - Readline is performing an undo. - - `RL_STATE_DONE' - Readline has read a key sequence bound to `accept-line' and - is about to return the line to the caller. - - - -- Variable: int rl_explicit_arg - Set to a non-zero value if an explicit numeric argument was - specified by the user. Only valid in a bindable command function. - - -- Variable: int rl_numeric_arg - Set to the value of any numeric argument explicitly specified by - the user before executing the current Readline function. Only - valid in a bindable command function. - - -- Variable: int rl_editing_mode - Set to a value denoting Readline's current editing mode. A value - of 1 means Readline is currently in emacs mode; 0 means that vi - mode is active. - - -File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline - -2.4 Readline Convenience Functions -================================== - -* Menu: - -* Function Naming:: How to give a function you write a name. -* Keymaps:: Making keymaps. -* Binding Keys:: Changing Keymaps. -* Associating Function Names and Bindings:: Translate function names to - key sequences. -* Allowing Undoing:: How to make your functions undoable. -* Redisplay:: Functions to control line display. -* Modifying Text:: Functions to modify `rl_line_buffer'. -* Character Input:: Functions to read keyboard input. -* Terminal Management:: Functions to manage terminal settings. -* Utility Functions:: Generally useful functions and hooks. -* Miscellaneous Functions:: Functions that don't fall into any category. -* Alternate Interface:: Using Readline in a `callback' fashion. -* A Readline Example:: An example Readline function. - - -File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions - -2.4.1 Naming a Function ------------------------ - -The user can dynamically change the bindings of keys while using -Readline. This is done by representing the function with a descriptive -name. The user is able to type the descriptive name when referring to -the function. Thus, in an init file, one might find - - Meta-Rubout: backward-kill-word - - This binds the keystroke <Meta-Rubout> to the function -_descriptively_ named `backward-kill-word'. You, as the programmer, -should bind the functions you write to descriptive names as well. -Readline provides a function for doing that: - - -- Function: int rl_add_defun (const char *name, rl_command_func_t - *function, int key) - Add NAME to the list of named functions. Make FUNCTION be the - function that gets called. If KEY is not -1, then bind it to - FUNCTION using `rl_bind_key()'. - - Using this function alone is sufficient for most applications. It -is the recommended way to add a few functions to the default functions -that Readline has built in. If you need to do something other than -adding a function to Readline, you may need to use the underlying -functions described below. - - -File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions - -2.4.2 Selecting a Keymap ------------------------- - -Key bindings take place on a "keymap". The keymap is the association -between the keys that the user types and the functions that get run. -You can make your own keymaps, copy existing keymaps, and tell Readline -which keymap to use. - - -- Function: Keymap rl_make_bare_keymap (void) - Returns a new, empty keymap. The space for the keymap is - allocated with `malloc()'; the caller should free it by calling - `rl_discard_keymap()' when done. - - -- Function: Keymap rl_copy_keymap (Keymap map) - Return a new keymap which is a copy of MAP. - - -- Function: Keymap rl_make_keymap (void) - Return a new keymap with the printing characters bound to - rl_insert, the lowercase Meta characters bound to run their - equivalents, and the Meta digits bound to produce numeric - arguments. - - -- Function: void rl_discard_keymap (Keymap keymap) - Free the storage associated with KEYMAP. - - Readline has several internal keymaps. These functions allow you to -change which keymap is active. - - -- Function: Keymap rl_get_keymap (void) - Returns the currently active keymap. - - -- Function: void rl_set_keymap (Keymap keymap) - Makes KEYMAP the currently active keymap. - - -- Function: Keymap rl_get_keymap_by_name (const char *name) - Return the keymap matching NAME. NAME is one which would be - supplied in a `set keymap' inputrc line (*note Readline Init - File::). - - -- Function: char * rl_get_keymap_name (Keymap keymap) - Return the name matching KEYMAP. NAME is one which would be - supplied in a `set keymap' inputrc line (*note Readline Init - File::). - - -File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions - -2.4.3 Binding Keys ------------------- - -Key sequences are associate with functions through the keymap. -Readline has several internal keymaps: `emacs_standard_keymap', -`emacs_meta_keymap', `emacs_ctlx_keymap', `vi_movement_keymap', and -`vi_insertion_keymap'. `emacs_standard_keymap' is the default, and the -examples in this manual assume that. - - Since `readline()' installs a set of default key bindings the first -time it is called, there is always the danger that a custom binding -installed before the first call to `readline()' will be overridden. An -alternate mechanism is to install custom key bindings in an -initialization function assigned to the `rl_startup_hook' variable -(*note Readline Variables::). - - These functions manage key bindings. - - -- Function: int rl_bind_key (int key, rl_command_func_t *function) - Binds KEY to FUNCTION in the currently active keymap. Returns - non-zero in the case of an invalid KEY. - - -- Function: int rl_bind_key_in_map (int key, rl_command_func_t - *function, Keymap map) - Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an - invalid KEY. - - -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t - *function) - Binds KEY to FUNCTION if it is not already bound in the currently - active keymap. Returns non-zero in the case of an invalid KEY or - if KEY is already bound. - - -- Function: int rl_bind_key_if_unbound_in_map (int key, - rl_command_func_t *function, Keymap map) - Binds KEY to FUNCTION if it is not already bound in MAP. Returns - non-zero in the case of an invalid KEY or if KEY is already bound. - - -- Function: int rl_unbind_key (int key) - Bind KEY to the null function in the currently active keymap. - Returns non-zero in case of error. - - -- Function: int rl_unbind_key_in_map (int key, Keymap map) - Bind KEY to the null function in MAP. Returns non-zero in case of - error. - - -- Function: int rl_unbind_function_in_map (rl_command_func_t - *function, Keymap map) - Unbind all keys that execute FUNCTION in MAP. - - -- Function: int rl_unbind_command_in_map (const char *command, Keymap - map) - Unbind all keys that are bound to COMMAND in MAP. - - -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t - *function) - Bind the key sequence represented by the string KEYSEQ to the - function FUNCTION, beginning in the current keymap. This makes - new keymaps as necessary. The return value is non-zero if KEYSEQ - is invalid. - - -- Function: int rl_bind_keyseq_in_map (const char *keyseq, - rl_command_func_t *function, Keymap map) - Bind the key sequence represented by the string KEYSEQ to the - function FUNCTION. This makes new keymaps as necessary. Initial - bindings are performed in MAP. The return value is non-zero if - KEYSEQ is invalid. - - -- Function: int rl_set_key (const char *keyseq, rl_command_func_t - *function, Keymap map) - Equivalent to `rl_bind_keyseq_in_map'. - - -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq, - rl_command_func_t *function) - Binds KEYSEQ to FUNCTION if it is not already bound in the - currently active keymap. Returns non-zero in the case of an - invalid KEYSEQ or if KEYSEQ is already bound. - - -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, - rl_command_func_t *function, Keymap map) - Binds KEYSEQ to FUNCTION if it is not already bound in MAP. - Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is - already bound. - - -- Function: int rl_generic_bind (int type, const char *keyseq, char - *data, Keymap map) - Bind the key sequence represented by the string KEYSEQ to the - arbitrary pointer DATA. TYPE says what kind of data is pointed to - by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or - a keymap (`ISKMAP'). This makes new keymaps as necessary. The - initial keymap in which to do bindings is MAP. - - -- Function: int rl_parse_and_bind (char *line) - Parse LINE as if it had been read from the `inputrc' file and - perform any key bindings and variable assignments found (*note - Readline Init File::). - - -- Function: int rl_read_init_file (const char *filename) - Read keybindings and variable assignments from FILENAME (*note - Readline Init File::). - - -File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions - -2.4.4 Associating Function Names and Bindings ---------------------------------------------- - -These functions allow you to find out what keys invoke named functions -and the functions invoked by a particular key sequence. You may also -associate a new function name with an arbitrary function. - - -- Function: rl_command_func_t * rl_named_function (const char *name) - Return the function with name NAME. - - -- Function: rl_command_func_t * rl_function_of_keyseq (const char - *keyseq, Keymap map, int *type) - Return the function invoked by KEYSEQ in keymap MAP. If MAP is - `NULL', the current keymap is used. If TYPE is not `NULL', the - type of the object is returned in the `int' variable it points to - (one of `ISFUNC', `ISKMAP', or `ISMACR'). - - -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function) - Return an array of strings representing the key sequences used to - invoke FUNCTION in the current keymap. - - -- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t - *function, Keymap map) - Return an array of strings representing the key sequences used to - invoke FUNCTION in the keymap MAP. - - -- Function: void rl_function_dumper (int readable) - Print the readline function names and the key sequences currently - bound to them to `rl_outstream'. If READABLE is non-zero, the - list is formatted in such a way that it can be made part of an - `inputrc' file and re-read. - - -- Function: void rl_list_funmap_names (void) - Print the names of all bindable Readline functions to - `rl_outstream'. - - -- Function: const char ** rl_funmap_names (void) - Return a NULL terminated array of known function names. The array - is sorted. The array itself is allocated, but not the strings - inside. You should `free()' the array when you are done, but not - the pointers. - - -- Function: int rl_add_funmap_entry (const char *name, - rl_command_func_t *function) - Add NAME to the list of bindable Readline command names, and make - FUNCTION the function to be called when NAME is invoked. - - -File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions - -2.4.5 Allowing Undoing ----------------------- - -Supporting the undo command is a painless thing, and makes your -functions much more useful. It is certainly easy to try something if -you know you can undo it. - - If your function simply inserts text once, or deletes text once, and -uses `rl_insert_text()' or `rl_delete_text()' to do it, then undoing is -already done for you automatically. - - If you do multiple insertions or multiple deletions, or any -combination of these operations, you should group them together into -one operation. This is done with `rl_begin_undo_group()' and -`rl_end_undo_group()'. - - The types of events that can be undone are: - - enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; - - Notice that `UNDO_DELETE' means to insert some text, and -`UNDO_INSERT' means to delete some text. That is, the undo code tells -what to undo, not how to undo it. `UNDO_BEGIN' and `UNDO_END' are tags -added by `rl_begin_undo_group()' and `rl_end_undo_group()'. - - -- Function: int rl_begin_undo_group (void) - Begins saving undo information in a group construct. The undo - information usually comes from calls to `rl_insert_text()' and - `rl_delete_text()', but could be the result of calls to - `rl_add_undo()'. - - -- Function: int rl_end_undo_group (void) - Closes the current undo group started with `rl_begin_undo_group - ()'. There should be one call to `rl_end_undo_group()' for each - call to `rl_begin_undo_group()'. - - -- Function: void rl_add_undo (enum undo_code what, int start, int - end, char *text) - Remember how to undo an event (according to WHAT). The affected - text runs from START to END, and encompasses TEXT. - - -- Function: void rl_free_undo_list (void) - Free the existing undo list. - - -- Function: int rl_do_undo (void) - Undo the first thing on the undo list. Returns `0' if there was - nothing to undo, non-zero if something was undone. - - Finally, if you neither insert nor delete text, but directly modify -the existing text (e.g., change its case), call `rl_modifying()' once, -just before you modify the text. You must supply the indices of the -text range that you are going to modify. - - -- Function: int rl_modifying (int start, int end) - Tell Readline to save the text between START and END as a single - undo unit. It is assumed that you will subsequently modify that - text. - - -File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions - -2.4.6 Redisplay ---------------- - - -- Function: void rl_redisplay (void) - Change what's displayed on the screen to reflect the current - contents of `rl_line_buffer'. - - -- Function: int rl_forced_update_display (void) - Force the line to be updated and redisplayed, whether or not - Readline thinks the screen display is correct. - - -- Function: int rl_on_new_line (void) - Tell the update functions that we have moved onto a new (empty) - line, usually after ouputting a newline. - - -- Function: int rl_on_new_line_with_prompt (void) - Tell the update functions that we have moved onto a new line, with - RL_PROMPT already displayed. This could be used by applications - that want to output the prompt string themselves, but still need - Readline to know the prompt string length for redisplay. It - should be used after setting RL_ALREADY_PROMPTED. - - -- Function: int rl_reset_line_state (void) - Reset the display state to a clean state and redisplay the current - line starting on a new line. - - -- Function: int rl_crlf (void) - Move the cursor to the start of the next screen line. - - -- Function: int rl_show_char (int c) - Display character C on `rl_outstream'. If Readline has not been - set to display meta characters directly, this will convert meta - characters to a meta-prefixed key sequence. This is intended for - use by applications which wish to do their own redisplay. - - -- Function: int rl_message (const char *, ...) - The arguments are a format string as would be supplied to `printf', - possibly containing conversion specifications such as `%d', and - any additional arguments necessary to satisfy the conversion - specifications. The resulting string is displayed in the "echo - area". The echo area is also used to display numeric arguments - and search strings. You should call `rl_save_prompt' to save the - prompt information before calling this function. - - -- Function: int rl_clear_message (void) - Clear the message in the echo area. If the prompt was saved with - a call to `rl_save_prompt' before the last call to `rl_message', - call `rl_restore_prompt' before calling this function. - - -- Function: void rl_save_prompt (void) - Save the local Readline prompt display state in preparation for - displaying a new message in the message area with `rl_message()'. - - -- Function: void rl_restore_prompt (void) - Restore the local Readline prompt display state saved by the most - recent call to `rl_save_prompt'. if `rl_save_prompt' was called - to save the prompt before a call to `rl_message', this function - should be called before the corresponding call to - `rl_clear_message'. - - -- Function: int rl_expand_prompt (char *prompt) - Expand any special character sequences in PROMPT and set up the - local Readline prompt redisplay variables. This function is - called by `readline()'. It may also be called to expand the - primary prompt if the `rl_on_new_line_with_prompt()' function or - `rl_already_prompted' variable is used. It returns the number of - visible characters on the last line of the (possibly multi-line) - prompt. Applications may indicate that the prompt contains - characters that take up no physical screen space when displayed by - bracketing a sequence of such characters with the special markers - `RL_PROMPT_START_IGNORE' and `RL_PROMPT_END_IGNORE' (declared in - `readline.h'. This may be used to embed terminal-specific escape - sequences in prompts. - - -- Function: int rl_set_prompt (const char *prompt) - Make Readline use PROMPT for subsequent redisplay. This calls - `rl_expand_prompt()' to expand the prompt and sets `rl_prompt' to - the result. - - -File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions - -2.4.7 Modifying Text --------------------- - - -- Function: int rl_insert_text (const char *text) - Insert TEXT into the line at the current cursor position. Returns - the number of characters inserted. - - -- Function: int rl_delete_text (int start, int end) - Delete the text between START and END in the current line. - Returns the number of characters deleted. - - -- Function: char * rl_copy_text (int start, int end) - Return a copy of the text between START and END in the current - line. - - -- Function: int rl_kill_text (int start, int end) - Copy the text between START and END in the current line to the - kill ring, appending or prepending to the last kill if the last - command was a kill command. The text is deleted. If START is - less than END, the text is appended, otherwise prepended. If the - last command was not a kill, a new kill ring slot is used. - - -- Function: int rl_push_macro_input (char *macro) - Cause MACRO to be inserted into the line, as if it had been invoked - by a key bound to a macro. Not especially useful; use - `rl_insert_text()' instead. - - -File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions - -2.4.8 Character Input ---------------------- - - -- Function: int rl_read_key (void) - Return the next character available from Readline's current input - stream. This handles input inserted into the input stream via - RL_PENDING_INPUT (*note Readline Variables::) and - `rl_stuff_char()', macros, and characters read from the keyboard. - While waiting for input, this function will call any function - assigned to the `rl_event_hook' variable. - - -- Function: int rl_getc (FILE *stream) - Return the next character available from STREAM, which is assumed - to be the keyboard. - - -- Function: int rl_stuff_char (int c) - Insert C into the Readline input stream. It will be "read" before - Readline attempts to read characters from the terminal with - `rl_read_key()'. Up to 512 characters may be pushed back. - `rl_stuff_char' returns 1 if the character was successfully - inserted; 0 otherwise. - - -- Function: int rl_execute_next (int c) - Make C be the next command to be executed when `rl_read_key()' is - called. This sets RL_PENDING_INPUT. - - -- Function: int rl_clear_pending_input (void) - Unset RL_PENDING_INPUT, effectively negating the effect of any - previous call to `rl_execute_next()'. This works only if the - pending input has not already been read with `rl_read_key()'. - - -- Function: int rl_set_keyboard_input_timeout (int u) - While waiting for keyboard input in `rl_read_key()', Readline will - wait for U microseconds for input before calling any function - assigned to `rl_event_hook'. The default waiting period is - one-tenth of a second. Returns the old timeout value. - - -File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions - -2.4.9 Terminal Management -------------------------- - - -- Function: void rl_prep_terminal (int meta_flag) - Modify the terminal settings for Readline's use, so `readline()' - can read a single character at a time from the keyboard. The - META_FLAG argument should be non-zero if Readline should read - eight-bit input. - - -- Function: void rl_deprep_terminal (void) - Undo the effects of `rl_prep_terminal()', leaving the terminal in - the state in which it was before the most recent call to - `rl_prep_terminal()'. - - -- Function: void rl_tty_set_default_bindings (Keymap kmap) - Read the operating system's terminal editing characters (as would - be displayed by `stty') to their Readline equivalents. The - bindings are performed in KMAP. - - -- Function: void rl_tty_unset_default_bindings (Keymap kmap) - Reset the bindings manipulated by `rl_tty_set_default_bindings' so - that the terminal editing characters are bound to `rl_insert'. - The bindings are performed in KMAP. - - -- Function: int rl_reset_terminal (const char *terminal_name) - Reinitialize Readline's idea of the terminal settings using - TERMINAL_NAME as the terminal type (e.g., `vt100'). If - TERMINAL_NAME is `NULL', the value of the `TERM' environment - variable is used. - - -File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions - -2.4.10 Utility Functions ------------------------- - - -- Function: void rl_replace_line (const char *text, int clear_undo) - Replace the contents of `rl_line_buffer' with TEXT. The point and - mark are preserved, if possible. If CLEAR_UNDO is non-zero, the - undo list associated with the current line is cleared. - - -- Function: int rl_extend_line_buffer (int len) - Ensure that `rl_line_buffer' has enough space to hold LEN - characters, possibly reallocating it if necessary. - - -- Function: int rl_initialize (void) - Initialize or re-initialize Readline's internal state. It's not - strictly necessary to call this; `readline()' calls it before - reading any input. - - -- Function: int rl_ding (void) - Ring the terminal bell, obeying the setting of `bell-style'. - - -- Function: int rl_alphabetic (int c) - Return 1 if C is an alphabetic character. - - -- Function: void rl_display_match_list (char **matches, int len, int - max) - A convenience function for displaying a list of strings in - columnar format on Readline's output stream. `matches' is the list - of strings, in argv format, such as a list of completion matches. - `len' is the number of strings in `matches', and `max' is the - length of the longest string in `matches'. This function uses the - setting of `print-completions-horizontally' to select how the - matches are displayed (*note Readline Init File Syntax::). - - The following are implemented as macros, defined in `chardefs.h'. -Applications should refrain from using them. - - -- Function: int _rl_uppercase_p (int c) - Return 1 if C is an uppercase alphabetic character. - - -- Function: int _rl_lowercase_p (int c) - Return 1 if C is a lowercase alphabetic character. - - -- Function: int _rl_digit_p (int c) - Return 1 if C is a numeric character. - - -- Function: int _rl_to_upper (int c) - If C is a lowercase alphabetic character, return the corresponding - uppercase character. - - -- Function: int _rl_to_lower (int c) - If C is an uppercase alphabetic character, return the corresponding - lowercase character. - - -- Function: int _rl_digit_value (int c) - If C is a number, return the value it represents. - - -File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions - -2.4.11 Miscellaneous Functions ------------------------------- - - -- Function: int rl_macro_bind (const char *keyseq, const char *macro, - Keymap map) - Bind the key sequence KEYSEQ to invoke the macro MACRO. The - binding is performed in MAP. When KEYSEQ is invoked, the MACRO - will be inserted into the line. This function is deprecated; use - `rl_generic_bind()' instead. - - -- Function: void rl_macro_dumper (int readable) - Print the key sequences bound to macros and their values, using - the current keymap, to `rl_outstream'. If READABLE is non-zero, - the list is formatted in such a way that it can be made part of an - `inputrc' file and re-read. - - -- Function: int rl_variable_bind (const char *variable, const char - *value) - Make the Readline variable VARIABLE have VALUE. This behaves as - if the readline command `set VARIABLE VALUE' had been executed in - an `inputrc' file (*note Readline Init File Syntax::). - - -- Function: char * rl_variable_value (const char *variable) - Return a string representing the value of the Readline variable - VARIABLE. For boolean variables, this string is either `on' or - `off'. - - -- Function: void rl_variable_dumper (int readable) - Print the readline variable names and their current values to - `rl_outstream'. If READABLE is non-zero, the list is formatted in - such a way that it can be made part of an `inputrc' file and - re-read. - - -- Function: int rl_set_paren_blink_timeout (int u) - Set the time interval (in microseconds) that Readline waits when - showing a balancing character when `blink-matching-paren' has been - enabled. - - -- Function: char * rl_get_termcap (const char *cap) - Retrieve the string value of the termcap capability CAP. Readline - fetches the termcap entry for the current terminal name and uses - those capabilities to move around the screen line and perform other - terminal-specific operations, like erasing a line. Readline does - not use all of a terminal's capabilities, and this function will - return values for only those capabilities Readline uses. - - -File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions - -2.4.12 Alternate Interface --------------------------- - -An alternate interface is available to plain `readline()'. Some -applications need to interleave keyboard I/O with file, device, or -window system I/O, typically by using a main loop to `select()' on -various file descriptors. To accomodate this need, readline can also -be invoked as a `callback' function from an event loop. There are -functions available to make this easy. - - -- Function: void rl_callback_handler_install (const char *prompt, - rl_vcpfunc_t *lhandler) - Set up the terminal for readline I/O and display the initial - expanded value of PROMPT. Save the value of LHANDLER to use as a - function to call when a complete line of input has been entered. - The function takes the text of the line as an argument. - - -- Function: void rl_callback_read_char (void) - Whenever an application determines that keyboard input is - available, it should call `rl_callback_read_char()', which will - read the next character from the current input source. If that - character completes the line, `rl_callback_read_char' will invoke - the LHANDLER function saved 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, - the terminal settings are modified for Readline's use again. - `EOF' is indicated by calling LHANDLER with a `NULL' line. - - -- Function: void rl_callback_handler_remove (void) - Restore the terminal to its initial state and remove the line - handler. This may be called from within a callback as well as - independently. If the LHANDLER installed by - `rl_callback_handler_install' does not exit the program, either - this function or the function referred to by the value of - `rl_deprep_term_function' should be called before the program - exits to reset the terminal settings. - - -File: readline.info, Node: A Readline Example, Prev: Alternate Interface, Up: Readline Convenience Functions - -2.4.13 A Readline Example -------------------------- - -Here is a function which changes lowercase characters to their uppercase -equivalents, and uppercase characters to lowercase. If this function -was bound to `M-c', then typing `M-c' would change the case of the -character under point. Typing `M-1 0 M-c' would change the case of the -following 10 characters, leaving the cursor on the last character -changed. - - /* Invert the case of the COUNT following characters. */ - int - invert_case_line (count, key) - int count, key; - { - register int start, end, i; - - start = rl_point; - - if (rl_point >= rl_end) - return (0); - - if (count < 0) - { - direction = -1; - count = -count; - } - else - direction = 1; - - /* Find the end of the range to modify. */ - end = start + (count * direction); - - /* Force it to be within range. */ - if (end > rl_end) - end = rl_end; - else if (end < 0) - end = 0; - - if (start == end) - return (0); - - if (start > end) - { - int temp = start; - start = end; - end = temp; - } - - /* Tell readline that we are modifying the line, - so it will save the undo information. */ - rl_modifying (start, end); - - for (i = start; i != end; i++) - { - if (_rl_uppercase_p (rl_line_buffer[i])) - rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); - else if (_rl_lowercase_p (rl_line_buffer[i])) - rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]); - } - /* Move point to on top of the last character changed. */ - rl_point = (direction == 1) ? end - 1 : start; - return (0); - } - - -File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline - -2.5 Readline Signal Handling -============================ - -Signals are asynchronous events sent to a process by the Unix kernel, -sometimes on behalf of another process. They are intended to indicate -exceptional events, like a user pressing the interrupt key on his -terminal, or a network connection being broken. There is a class of -signals that can be sent to the process currently reading input from -the keyboard. Since Readline changes the terminal attributes when it -is called, it needs to perform special processing when such a signal is -received in order to restore the terminal to a sane state, or provide -application writers with functions to do so manually. - - Readline contains an internal signal handler that is installed for a -number of signals (`SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM', -`SIGTSTP', `SIGTTIN', and `SIGTTOU'). When one of these signals is -received, the signal handler will reset the terminal attributes to -those that were in effect before `readline()' was called, reset the -signal handling to what it was before `readline()' was called, and -resend the signal to the calling application. If and when the calling -application's signal handler returns, Readline will reinitialize the -terminal and continue to accept input. When a `SIGINT' is received, -the Readline signal handler performs some additional work, which will -cause any partially-entered line to be aborted (see the description of -`rl_free_line_state()' below). - - There is an additional Readline signal handler, for `SIGWINCH', which -the kernel sends to a process whenever the terminal's size changes (for -example, if a user resizes an `xterm'). The Readline `SIGWINCH' -handler updates Readline's internal screen size information, and then -calls any `SIGWINCH' signal handler the calling application has -installed. Readline calls the application's `SIGWINCH' signal handler -without resetting the terminal to its original state. If the -application's signal handler does more than update its idea of the -terminal size and return (for example, a `longjmp' back to a main -processing loop), it _must_ call `rl_cleanup_after_signal()' (described -below), to restore the terminal state. - - 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', `SIGALRM', `SIGTSTP', - `SIGTTIN', and `SIGTTOU'. - - The default value of `rl_catch_signals' is 1. - - -- Variable: int rl_catch_sigwinch - If this variable is non-zero, Readline will install a signal - handler for `SIGWINCH'. - - The default value of `rl_catch_sigwinch' is 1. - - If an application does not wish to have Readline catch any signals, -or to handle signals other than those Readline catches (`SIGHUP', for -example), Readline provides convenience functions to do the necessary -terminal and internal state cleanup upon receipt of a signal. - - -- Function: void rl_cleanup_after_signal (void) - This function will reset the state of the terminal to what it was - before `readline()' was called, and remove the Readline signal - handlers for all signals, depending on the values of - `rl_catch_signals' and `rl_catch_sigwinch'. - - -- Function: void rl_free_line_state (void) - This will free any partial state associated with the current input - line (undo information, any partial history entry, any - partially-entered keyboard macro, and any partially-entered - numeric argument). This should be called before - `rl_cleanup_after_signal()'. The Readline signal handler for - `SIGINT' calls this to abort the current input line. - - -- Function: void rl_reset_after_signal (void) - This will reinitialize the terminal and reinstall any Readline - signal handlers, depending on the values of `rl_catch_signals' and - `rl_catch_sigwinch'. - - If an application does not wish Readline to catch `SIGWINCH', it may -call `rl_resize_terminal()' or `rl_set_screen_size()' to force Readline -to update its idea of the terminal size when a `SIGWINCH' is received. - - -- Function: void rl_resize_terminal (void) - Update Readline's internal screen size by reading values from the - kernel. - - -- Function: void rl_set_screen_size (int rows, int cols) - Set Readline's idea of the terminal size to ROWS rows and COLS - columns. If either ROWS or COLUMNS is less than or equal to 0, - Readline's idea of that terminal dimension is unchanged. - - If an application does not want to install a `SIGWINCH' handler, but -is still interested in the screen dimensions, Readline's idea of the -screen size may be queried. - - -- Function: void rl_get_screen_size (int *rows, int *cols) - Return Readline's idea of the terminal's size in the variables - pointed to by the arguments. - - -- Function: void rl_reset_screen_size (void) - Cause Readline to reobtain the screen size and recalculate its - dimensions. - - The following functions install and remove Readline's signal -handlers. - - -- Function: int rl_set_signals (void) - Install Readline's signal handler for `SIGINT', `SIGQUIT', - `SIGTERM', `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()'. - - -File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline - -2.6 Custom Completers -===================== - -Typically, a program that reads commands from the user has a way of -disambiguating commands and data. If your program is one of these, then -it can provide completion for commands, data, or both. The following -sections describe how your program and Readline cooperate to provide -this service. - -* Menu: - -* How Completing Works:: The logic used to do completion. -* Completion Functions:: Functions provided by Readline. -* Completion Variables:: Variables which control completion. -* A Short Completion Example:: An example of writing completer subroutines. - - -File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers - -2.6.1 How Completing Works --------------------------- - -In order to complete some text, the full list of possible completions -must be available. That is, it is not possible to accurately expand a -partial word without knowing all of the possible words which make sense -in that context. The Readline library provides the user interface to -completion, and two of the most common completion functions: filename -and username. For completing other types of text, you must write your -own completion function. This section describes exactly what such -functions must do, and provides an example. - - There are three major functions used to perform completion: - - 1. The user-interface function `rl_complete()'. This function is - called with the same arguments as other bindable Readline - functions: COUNT and INVOKING_KEY. It isolates the word to be - completed and calls `rl_completion_matches()' to generate a list - of possible completions. It then either lists the possible - completions, inserts the possible completions, or actually - performs the completion, depending on which behavior is desired. - - 2. The internal function `rl_completion_matches()' uses an - application-supplied "generator" function to generate the list of - possible matches, and then returns the array of these matches. - The caller should place the address of its generator function in - `rl_completion_entry_function'. - - 3. The generator function is called repeatedly from - `rl_completion_matches()', returning a string each time. The - arguments to the generator function are TEXT and STATE. TEXT is - the partial word to be completed. STATE is zero the first time - the function is called, allowing the generator to perform any - necessary initialization, and a positive non-zero integer for each - subsequent call. The generator function returns `(char *)NULL' to - inform `rl_completion_matches()' that there are no more - possibilities left. Usually the generator function computes the - list of possible completions when STATE is zero, and returns them - one at a time on subsequent calls. Each string the generator - function returns as a match must be allocated with `malloc()'; - Readline frees the strings when it has finished with them. Such a - generator function is referred to as an "application-specific - completion function". - - - -- Function: int rl_complete (int ignore, int invoking_key) - Complete the word at or before point. You have supplied the - function that does the initial simple matching selection algorithm - (see `rl_completion_matches()'). The default is to do filename - completion. - - -- Variable: rl_compentry_func_t * rl_completion_entry_function - This is a pointer to the generator function for - `rl_completion_matches()'. If the value of - `rl_completion_entry_function' is `NULL' then the default filename - generator function, `rl_filename_completion_function()', is used. - An "application-specific completion function" is a function whose - address is assigned to `rl_completion_entry_function' and whose - return values are used to generate possible completions. - - -File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers - -2.6.2 Completion Functions --------------------------- - -Here is the complete list of callable completion functions present in -Readline. - - -- Function: int rl_complete_internal (int what_to_do) - Complete the word at or before point. WHAT_TO_DO says what to do - with the completion. A value of `?' means list the possible - completions. `TAB' means do standard completion. `*' means - insert all of the possible completions. `!' means to display all - of the possible completions, if there is more than one, as well as - performing partial completion. `@' is similar to `!', but - possible completions are not listed if the possible completions - share a common prefix. - - -- Function: int rl_complete (int ignore, int invoking_key) - Complete the word at or before point. You have supplied the - function that does the initial simple matching selection algorithm - (see `rl_completion_matches()' and `rl_completion_entry_function'). - The default is to do filename completion. This calls - `rl_complete_internal()' with an argument depending on - INVOKING_KEY. - - -- Function: int rl_possible_completions (int count, int invoking_key) - List the possible completions. See description of `rl_complete - ()'. This calls `rl_complete_internal()' with an argument of `?'. - - -- Function: int rl_insert_completions (int count, int invoking_key) - Insert the list of possible completions into the line, deleting the - partially-completed word. See description of `rl_complete()'. - This calls `rl_complete_internal()' with an argument of `*'. - - -- Function: int rl_completion_mode (rl_command_func_t *cfunc) - Returns the apppriate value to pass to `rl_complete_internal()' - depending on whether CFUNC was called twice in succession and the - values of the `show-all-if-ambiguous' and `show-all-if-unmodified' - variables. Application-specific completion functions may use this - function to present the same interface as `rl_complete()'. - - -- Function: char ** rl_completion_matches (const char *text, - rl_compentry_func_t *entry_func) - Returns an array of strings which is a list of completions for - TEXT. If there are no completions, returns `NULL'. The first - entry in the returned array is the substitution for TEXT. The - remaining entries are the possible completions. The array is - terminated with a `NULL' pointer. - - ENTRY_FUNC is a function of two args, and returns a `char *'. The - first argument is TEXT. The second is a state argument; it is - zero on the first call, and non-zero on subsequent calls. - ENTRY_FUNC returns a `NULL' pointer to the caller when there are - no more matches. - - -- Function: char * rl_filename_completion_function (const char *text, - int state) - A generator function for filename completion in the general case. - TEXT is a partial filename. The Bash source is a useful reference - for writing application-specific completion functions (the Bash - completion functions call this and other Readline functions). - - -- Function: char * rl_username_completion_function (const char *text, - int state) - A completion generator for usernames. TEXT contains a partial - username preceded by a random character (usually `~'). As with all - completion generators, STATE is zero on the first call and non-zero - for subsequent calls. - - -File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers - -2.6.3 Completion Variables --------------------------- - - -- Variable: rl_compentry_func_t * rl_completion_entry_function - A pointer to the generator function for `rl_completion_matches()'. - `NULL' means to use `rl_filename_completion_function()', the - default filename completer. - - -- Variable: rl_completion_func_t * rl_attempted_completion_function - A pointer to an alternative function to create matches. The - function is called with TEXT, START, and END. START and END are - indices in `rl_line_buffer' defining the boundaries of TEXT, which - is a character string. If this function exists and returns - `NULL', or if this variable is set to `NULL', then `rl_complete()' - will call the value of `rl_completion_entry_function' to generate - matches, otherwise the array of strings returned will be used. If - this function sets the `rl_attempted_completion_over' variable to - a non-zero value, Readline will not perform its default completion - even if this function returns no matches. - - -- Variable: rl_quote_func_t * rl_filename_quoting_function - A pointer to a function that will quote a filename in an - application-specific fashion. This is called if filename - completion is being attempted and one of the characters in - `rl_filename_quote_characters' appears in a completed filename. - The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER. - The TEXT is the filename to be quoted. The MATCH_TYPE is either - `SINGLE_MATCH', if there is only one completion match, or - `MULT_MATCH'. Some functions use this to decide whether or not to - insert a closing quote character. The QUOTE_POINTER is a pointer - to any opening quote character the user typed. Some functions - choose to reset this character. - - -- Variable: rl_dequote_func_t * rl_filename_dequoting_function - A pointer to a function that will remove application-specific - quoting characters from a filename before completion is attempted, - so those characters do not interfere with matching the text - against names in the filesystem. It is called with TEXT, the text - of the word to be dequoted, and QUOTE_CHAR, which is the quoting - character that delimits the filename (usually `'' or `"'). If - QUOTE_CHAR is zero, the filename was not in an embedded string. - - -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p - A pointer to a function to call that determines whether or not a - specific character in the line buffer is quoted, according to - whatever quoting mechanism the program calling Readline uses. The - function is called with two arguments: TEXT, the text of the line, - and INDEX, the index of the character in the line. It is used to - decide whether a character found in - `rl_completer_word_break_characters' should be used to break words - for the completer. - - -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function - This function, if defined, is called by the completer when real - filename completion is done, after all the matching names have - been generated. It is passed a `NULL' terminated array of matches. - The first element (`matches[0]') is the maximal substring common - to all matches. This function can re-arrange the list of matches - as required, but each element deleted from the array must be freed. - - -- Variable: rl_icppfunc_t * rl_directory_completion_hook - This function, if defined, is allowed to modify the directory - portion of filenames Readline completes. It is called with the - address of a string (the current directory name) as an argument, - and may modify that string. If the string is replaced with a new - string, the old value should be freed. Any modified directory - name should have a trailing slash. The modified value will be - displayed as part of the completion, replacing the directory - portion of the pathname the user typed. It returns an integer - that should be non-zero if the function modifies its directory - argument. It could be used to expand symbolic links or shell - variables in pathnames. - - -- 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. That function may be called from this - hook. - - -- Variable: const char * rl_basic_word_break_characters - The basic list of characters that signal a break between words for - the completer routine. The default value of this variable is the - characters which break words for completion in Bash: `" - \t\n\"\\'`@$><=;|&{("'. - - -- Variable: const char * rl_basic_quote_characters - A list of quote characters which can cause a word break. - - -- Variable: const char * rl_completer_word_break_characters - The list of characters that signal a break between words for - `rl_complete_internal()'. The default list is the value of - `rl_basic_word_break_characters'. - - -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook - If non-zero, this is the address of a function to call when - Readline is deciding where to separate words for word completion. - It should return a character string like - `rl_completer_word_break_characters' to be used to perform the - current completion. The function may choose to set - `rl_completer_word_break_characters' itself. If the function - returns `NULL', `rl_completer_word_break_characters' is used. - - -- Variable: const char * rl_completer_quote_characters - A list of characters which can be used to quote a substring of the - line. Completion occurs on the entire substring, and within the - substring `rl_completer_word_break_characters' are treated as any - other character, unless they also appear within this list. - - -- Variable: const char * rl_filename_quote_characters - A list of characters that cause a filename to be quoted by the - completer when they appear in a completed filename. The default - is the null string. - - -- Variable: const char * rl_special_prefixes - The list of characters that are word break characters, but should - be left in TEXT when it is passed to the completion function. - Programs can use this to help determine what kind of completing to - do. For instance, Bash sets this variable to "$@" so that it can - complete shell variables and hostnames. - - -- Variable: int rl_completion_query_items - Up to this many items will be displayed in response to a - possible-completions call. After that, readline asks the user if - she is sure she wants to see them all. The default value is 100. - A negative value indicates that Readline should never ask the user. - - -- Variable: int rl_completion_append_character - When a single completion alternative matches at the end of the - command line, this character is appended to the inserted - completion text. The default is a space character (` '). Setting - this to the null character (`\0') prevents anything being appended - automatically. This can be changed in application-specific - completion functions to provide the "most sensible word separator - character" according to an application-specific command line - syntax specification. - - -- Variable: int rl_completion_suppress_append - If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to - matches at the end of the command line, as described above. It is - set to 0 before any application-specific completion function is - called, and may only be changed within such a function. - - -- Variable: int rl_completion_quote_character - When Readline is completing quoted text, as delimited by one of the - characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable - to the quoting character found. This is set before any - application-specific completion function is called. - - -- Variable: int rl_completion_suppress_quote - If non-zero, Readline does not append a matching quote character - when performing completion on a quoted string. It is set to 0 - before any application-specific completion function is called, and - may only be changed within such a function. - - -- Variable: int rl_completion_found_quote - When Readline is completing quoted text, it sets this variable to - a non-zero value if the word being completed contains or is - delimited by any quoting characters, including backslashes. This - is set before any application-specific completion function is - called. - - -- Variable: int rl_completion_mark_symlink_dirs - If non-zero, a slash will be appended to completed filenames that - are symbolic links to directory names, subject to the value of the - user-settable MARK-DIRECTORIES variable. This variable exists so - that application-specific completion functions can override the - user's global preference (set via the MARK-SYMLINKED-DIRECTORIES - Readline variable) if appropriate. This variable is set to the - user's preference before any application-specific completion - function is called, so unless that function modifies the value, - the user's preferences are honored. - - -- Variable: int rl_ignore_completion_duplicates - If non-zero, then duplicates in the matches are removed. The - default is 1. - - -- Variable: int rl_filename_completion_desired - Non-zero means that the results of the matches are to be treated as - filenames. This is _always_ zero when completion is attempted, - and can only be changed within an application-specific completion - function. If it is set to a non-zero value by such a function, - directory names have a slash appended and Readline attempts to - quote completed filenames if they contain any characters in - `rl_filename_quote_characters' and `rl_filename_quoting_desired' - is set to a non-zero value. - - -- Variable: int rl_filename_quoting_desired - Non-zero means that the results of the matches are to be quoted - using double quotes (or an application-specific quoting mechanism) - if the completed filename contains any characters in - `rl_filename_quote_chars'. This is _always_ non-zero when - completion is attempted, and can only be changed within an - application-specific completion function. The quoting is effected - via a call to the function pointed to by - `rl_filename_quoting_function'. - - -- Variable: int rl_attempted_completion_over - If an application-specific completion function assigned to - `rl_attempted_completion_function' sets this variable to a non-zero - value, Readline will not perform its default filename completion - even if the application's completion function returns no matches. - It should be set only by an application's completion function. - - -- Variable: int rl_completion_type - Set to a character describing the type of completion Readline is - currently attempting; see the description of - `rl_complete_internal()' (*note Completion Functions::) for the - list of characters. This is set to the appropriate value before - any application-specific completion function is called, allowing - such functions to present the same interface as `rl_complete()'. - - -- Variable: int rl_inhibit_completion - If this variable is non-zero, completion is inhibited. The - completion character will be inserted as any other bound to - `self-insert'. - - -File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers - -2.6.4 A Short Completion Example --------------------------------- - -Here is a small application demonstrating the use of the GNU Readline -library. It is called `fileman', and the source code resides in -`examples/fileman.c'. This sample application provides completion of -command names, line editing features, and access to the history list. - - /* fileman.c -- A tiny application which demonstrates how to use the - GNU Readline library. This application interactively allows users - to manipulate files and their modes. */ - - #include <stdio.h> - #include <sys/types.h> - #include <sys/file.h> - #include <sys/stat.h> - #include <sys/errno.h> - - #include <readline/readline.h> - #include <readline/history.h> - - extern char *xmalloc (); - - /* The names of functions that actually do the manipulation. */ - int com_list __P((char *)); - int com_view __P((char *)); - int com_rename __P((char *)); - int com_stat __P((char *)); - int com_pwd __P((char *)); - int com_delete __P((char *)); - int com_help __P((char *)); - int com_cd __P((char *)); - int com_quit __P((char *)); - - /* A structure which contains information on the commands this program - can understand. */ - - typedef struct { - char *name; /* User printable name of the function. */ - rl_icpfunc_t *func; /* Function to call to do the job. */ - char *doc; /* Documentation for this function. */ - } COMMAND; - - COMMAND commands[] = { - { "cd", com_cd, "Change to directory DIR" }, - { "delete", com_delete, "Delete FILE" }, - { "help", com_help, "Display this text" }, - { "?", com_help, "Synonym for `help'" }, - { "list", com_list, "List files in DIR" }, - { "ls", com_list, "Synonym for `list'" }, - { "pwd", com_pwd, "Print the current working directory" }, - { "quit", com_quit, "Quit using Fileman" }, - { "rename", com_rename, "Rename FILE to NEWNAME" }, - { "stat", com_stat, "Print out statistics on FILE" }, - { "view", com_view, "View the contents of FILE" }, - { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL } - }; - - /* Forward declarations. */ - char *stripwhite (); - COMMAND *find_command (); - - /* The name of this program, as taken from argv[0]. */ - char *progname; - - /* When non-zero, this means the user is done using this program. */ - int done; - - char * - dupstr (s) - int s; - { - char *r; - - r = xmalloc (strlen (s) + 1); - strcpy (r, s); - return (r); - } - - main (argc, argv) - int argc; - char **argv; - { - char *line, *s; - - progname = argv[0]; - - initialize_readline (); /* Bind our completer. */ - - /* Loop reading and executing lines until the user quits. */ - for ( ; done == 0; ) - { - line = readline ("FileMan: "); - - if (!line) - break; - - /* Remove leading and trailing whitespace from the line. - Then, if there is anything left, add it to the history list - and execute it. */ - s = stripwhite (line); - - if (*s) - { - add_history (s); - execute_line (s); - } - - free (line); - } - exit (0); - } - - /* Execute a command line. */ - int - execute_line (line) - char *line; - { - register int i; - COMMAND *command; - char *word; - - /* Isolate the command word. */ - i = 0; - while (line[i] && whitespace (line[i])) - i++; - word = line + i; - - while (line[i] && !whitespace (line[i])) - i++; - - if (line[i]) - line[i++] = '\0'; - - command = find_command (word); - - if (!command) - { - fprintf (stderr, "%s: No such command for FileMan.\n", word); - return (-1); - } - - /* Get argument to command, if any. */ - while (whitespace (line[i])) - i++; - - word = line + i; - - /* Call the function. */ - return ((*(command->func)) (word)); - } - - /* Look up NAME as the name of a command, and return a pointer to that - command. Return a NULL pointer if NAME isn't a command name. */ - COMMAND * - find_command (name) - char *name; - { - register int i; - - for (i = 0; commands[i].name; i++) - if (strcmp (name, commands[i].name) == 0) - return (&commands[i]); - - return ((COMMAND *)NULL); - } - - /* Strip whitespace from the start and end of STRING. Return a pointer - into STRING. */ - char * - stripwhite (string) - char *string; - { - register char *s, *t; - - for (s = string; whitespace (*s); s++) - ; - - if (*s == 0) - return (s); - - t = s + strlen (s) - 1; - while (t > s && whitespace (*t)) - t--; - *++t = '\0'; - - return s; - } - - /* **************************************************************** */ - /* */ - /* Interface to Readline Completion */ - /* */ - /* **************************************************************** */ - - char *command_generator __P((const char *, int)); - char **fileman_completion __P((const char *, int, int)); - - /* Tell the GNU Readline library how to complete. We want to try to - complete on command names if this is the first word in the line, or - on filenames if not. */ - initialize_readline () - { - /* Allow conditional parsing of the ~/.inputrc file. */ - rl_readline_name = "FileMan"; - - /* Tell the completer that we want a crack first. */ - rl_attempted_completion_function = fileman_completion; - } - - /* Attempt to complete on the contents of TEXT. START and END - bound the region of rl_line_buffer that contains the word to - complete. TEXT is the word to complete. We can use the entire - contents of rl_line_buffer in case we want to do some simple - parsing. Returnthe array of matches, or NULL if there aren't any. */ - char ** - fileman_completion (text, start, end) - const char *text; - int start, end; - { - char **matches; - - matches = (char **)NULL; - - /* If this word is at the start of the line, then it is a command - to complete. Otherwise it is the name of a file in the current - directory. */ - if (start == 0) - matches = rl_completion_matches (text, command_generator); - - return (matches); - } - - /* Generator function for command completion. STATE lets us - know whether to start from scratch; without any state - (i.e. STATE == 0), then we start at the top of the list. */ - char * - command_generator (text, state) - const char *text; - int state; - { - static int list_index, len; - char *name; - - /* If this is a new word to complete, initialize now. This - includes saving the length of TEXT for efficiency, and - initializing the index variable to 0. */ - if (!state) - { - list_index = 0; - len = strlen (text); - } - - /* Return the next name which partially matches from the - command list. */ - while (name = commands[list_index].name) - { - list_index++; - - if (strncmp (name, text, len) == 0) - return (dupstr(name)); - } - - /* If no names matched, then return NULL. */ - return ((char *)NULL); - } - - /* **************************************************************** */ - /* */ - /* FileMan Commands */ - /* */ - /* **************************************************************** */ - - /* String to pass to system (). This is for the LIST, VIEW and RENAME - commands. */ - static char syscom[1024]; - - /* List the file(s) named in arg. */ - com_list (arg) - char *arg; - { - if (!arg) - arg = ""; - - sprintf (syscom, "ls -FClg %s", arg); - return (system (syscom)); - } - - com_view (arg) - char *arg; - { - if (!valid_argument ("view", arg)) - return 1; - - sprintf (syscom, "more %s", arg); - return (system (syscom)); - } - - com_rename (arg) - char *arg; - { - too_dangerous ("rename"); - return (1); - } - - com_stat (arg) - char *arg; - { - struct stat finfo; - - if (!valid_argument ("stat", arg)) - return (1); - - if (stat (arg, &finfo) == -1) - { - perror (arg); - return (1); - } - - printf ("Statistics for `%s':\n", arg); - - printf ("%s has %d link%s, and is %d byte%s in length.\n", arg, - finfo.st_nlink, - (finfo.st_nlink == 1) ? "" : "s", - finfo.st_size, - (finfo.st_size == 1) ? "" : "s"); - printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); - printf (" Last access at: %s", ctime (&finfo.st_atime)); - printf (" Last modified at: %s", ctime (&finfo.st_mtime)); - return (0); - } - - com_delete (arg) - char *arg; - { - too_dangerous ("delete"); - return (1); - } - - /* Print out help for ARG, or for all of the commands if ARG is - not present. */ - com_help (arg) - char *arg; - { - register int i; - int printed = 0; - - for (i = 0; commands[i].name; i++) - { - if (!*arg || (strcmp (arg, commands[i].name) == 0)) - { - printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); - printed++; - } - } - - if (!printed) - { - printf ("No commands match `%s'. Possibilties are:\n", arg); - - for (i = 0; commands[i].name; i++) - { - /* Print in six columns. */ - if (printed == 6) - { - printed = 0; - printf ("\n"); - } - - printf ("%s\t", commands[i].name); - printed++; - } - - if (printed) - printf ("\n"); - } - return (0); - } - - /* Change to the directory ARG. */ - com_cd (arg) - char *arg; - { - if (chdir (arg) == -1) - { - perror (arg); - return 1; - } - - com_pwd (""); - return (0); - } - - /* Print out the current working directory. */ - com_pwd (ignore) - char *ignore; - { - char dir[1024], *s; - - s = getcwd (dir, sizeof(dir) - 1); - if (s == 0) - { - printf ("Error getting pwd: %s\n", dir); - return 1; - } - - printf ("Current directory is %s\n", dir); - return 0; - } - - /* The user wishes to quit using this program. Just set DONE - non-zero. */ - com_quit (arg) - char *arg; - { - done = 1; - return (0); - } - - /* Function which tells you that you can't do this. */ - too_dangerous (caller) - char *caller; - { - fprintf (stderr, - "%s: Too dangerous for me to distribute.\n", - caller); - fprintf (stderr, "Write it yourself.\n"); - } - - /* Return non-zero if ARG is a valid argument for CALLER, - else print an error message and return zero. */ - int - valid_argument (caller, arg) - char *caller, *arg; - { - if (!arg || !*arg) - { - fprintf (stderr, "%s: Argument required.\n", caller); - return (0); - } - - return (1); - } - - -File: readline.info, Node: Copying This Manual, Next: Concept Index, Prev: Programming with GNU Readline, Up: Top - -Appendix A Copying This Manual -****************************** - -* Menu: - -* GNU Free Documentation License:: License for copying this manual. - - -File: readline.info, Node: GNU Free Documentation License, Up: Copying This Manual - -A.1 GNU Free Documentation License -================================== - - Version 1.2, November 2002 - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - functional and useful document "free" in the sense of freedom: to - assure everyone the effective freedom to copy and redistribute it, - with or without modifying it, either commercially or - noncommercially. Secondarily, this License preserves for the - author and publisher a way to get credit for their work, while not - being considered responsible for modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work, in any medium, - that contains a notice placed by the copyright holder saying it - can be distributed under the terms of this License. Such a notice - grants a world-wide, royalty-free license, unlimited in duration, - to use that work under the conditions stated herein. The - "Document", below, refers to any such manual or work. Any member - of the public is a licensee, and is addressed as "you". You - accept the license if you copy, modify or distribute the work in a - way requiring permission under copyright law. - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter section - of the Document that deals exclusively with the relationship of the - publishers or authors of the Document to the Document's overall - subject (or to related matters) and contains nothing that could - fall directly within that overall subject. (Thus, if the Document - is in part a textbook of mathematics, a Secondary Section may not - explain any mathematics.) The relationship could be a matter of - historical connection with the subject or with related matters, or - of legal, commercial, philosophical, ethical or political position - regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. If a section does not fit the above definition of - Secondary then it is not allowed to be designated as Invariant. - The Document may contain zero Invariant Sections. If the Document - does not identify any Invariant Sections then there are none. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. A - Front-Cover Text may be at most 5 words, and a Back-Cover Text may - be at most 25 words. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, that is suitable for revising the document - straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup, or absence of - markup, has been arranged to thwart or discourage subsequent - modification by readers is not Transparent. An image format is - not Transparent if used for any substantial amount of text. A - copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML, PostScript or PDF designed for - human modification. Examples of transparent image formats include - PNG, XCF and JPG. Opaque formats include proprietary formats that - can be read and edited only by proprietary word processors, SGML or - XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML, PostScript or PDF - produced by some word processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - A section "Entitled XYZ" means a named subunit of the Document - whose title either is precisely XYZ or contains XYZ in parentheses - following text that translates XYZ in another language. (Here XYZ - stands for a specific section name mentioned below, such as - "Acknowledgements", "Dedications", "Endorsements", or "History".) - To "Preserve the Title" of such a section when you modify the - Document means that it remains a section "Entitled XYZ" according - to this definition. - - The Document may include Warranty Disclaimers next to the notice - which states that this License applies to the Document. These - Warranty Disclaimers are considered to be included by reference in - this License, but only as regards disclaiming warranties: any other - implication that these Warranty Disclaimers may have is void and - has no effect on the meaning of this License. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies (or copies in media that commonly - have printed covers) of the Document, numbering more than 100, and - the Document's license notice requires Cover Texts, you must - enclose the copies in covers that carry, clearly and legibly, all - these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a computer-network location from - which the general network-using public has access to download - using public-standard network protocols a complete Transparent - copy of the Document, free of added material. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: - - A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has fewer than five), unless they release you - from this requirement. - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section Entitled "History", Preserve its Title, - and add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section Entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the - section all the substance and tone of each of the contributor - acknowledgements and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section to be Entitled - "Endorsements" or to conflict in title with any Invariant - Section. - - O. Preserve any Warranty Disclaimers. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section Entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice, and that you preserve all - their Warranty Disclaimers. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections Entitled - "History" in the various original documents, forming one section - Entitled "History"; likewise combine any sections Entitled - "Acknowledgements", and any sections Entitled "Dedications". You - must delete all sections Entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, is called an "aggregate" if the - copyright resulting from the compilation is not used to limit the - legal rights of the compilation's users beyond what the individual - works permit. When the Document is included an aggregate, this - License does not apply to the other works in the aggregate which - are not themselves derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one half - of the entire aggregate, the Document's Cover Texts may be placed - on covers that bracket the Document within the aggregate, or the - electronic equivalent of covers if the Document is in electronic - form. Otherwise they must appear on printed covers that bracket - the whole aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License, and all the license notices in the - Document, and any Warranty Disclaimers, provided that you also - include the original English version of this License and the - original versions of those notices and disclaimers. In case of a - disagreement between the translation and the original version of - this License or a notice or disclaimer, the original version will - prevail. - - If a section in the Document is Entitled "Acknowledgements", - "Dedications", or "History", the requirement (section 4) to - Preserve its Title (section 1) will typically require changing the - actual title. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided for under this License. Any other - attempt to copy, modify, sublicense or distribute the Document is - void, and will automatically terminate your rights under this - License. However, parties who have received copies, or rights, - from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. - -A.1.1 ADDENDUM: How to use this License for your documents ----------------------------------------------------------- - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with - the Front-Cover Texts being LIST, and with the Back-Cover Texts - being LIST. - - If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - -File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Copying This Manual, Up: Top - -Concept Index -************* - - -* Menu: - -* application-specific completion functions: Custom Completers. - (line 6) -* command editing: Readline Bare Essentials. - (line 6) -* editing command lines: Readline Bare Essentials. - (line 6) -* FDL, GNU Free Documentation License: GNU Free Documentation License. - (line 6) -* initialization file, readline: Readline Init File. (line 6) -* interaction, readline: Readline Interaction. (line 6) -* kill ring: Readline Killing Commands. - (line 19) -* killing text: Readline Killing Commands. - (line 6) -* notation, readline: Readline Bare Essentials. - (line 6) -* readline, function: Basic Behavior. (line 12) -* variables, readline: Readline Init File Syntax. - (line 34) -* yanking text: Readline Killing Commands. - (line 6) - - -File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top - -Function and Variable Index -*************************** - - -* Menu: - -* _rl_digit_p: Utility Functions. (line 46) -* _rl_digit_value: Utility Functions. (line 57) -* _rl_lowercase_p: Utility Functions. (line 43) -* _rl_to_lower: Utility Functions. (line 53) -* _rl_to_upper: Utility Functions. (line 49) -* _rl_uppercase_p: Utility Functions. (line 40) -* abort (C-g): Miscellaneous Commands. - (line 10) -* accept-line (Newline or Return): Commands For History. - (line 6) -* backward-char (C-b): Commands For Moving. (line 15) -* backward-delete-char (Rubout): Commands For Text. (line 11) -* backward-kill-line (C-x Rubout): Commands For Killing. - (line 9) -* backward-kill-word (M-<DEL>): Commands For Killing. - (line 24) -* backward-word (M-b): Commands For Moving. (line 22) -* beginning-of-history (M-<): Commands For History. - (line 19) -* beginning-of-line (C-a): Commands For Moving. (line 6) -* bell-style: Readline Init File Syntax. - (line 35) -* bind-tty-special-chars: Readline Init File Syntax. - (line 42) -* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) -* capitalize-word (M-c): Commands For Text. (line 49) -* character-search (C-]): Miscellaneous Commands. - (line 41) -* character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 26) -* comment-begin: Readline Init File Syntax. - (line 47) -* complete (<TAB>): Commands For Completion. - (line 6) -* completion-query-items: Readline Init File Syntax. - (line 57) -* convert-meta: Readline Init File Syntax. - (line 67) -* copy-backward-word (): Commands For Killing. - (line 49) -* copy-forward-word (): Commands For Killing. - (line 54) -* copy-region-as-kill (): Commands For Killing. - (line 45) -* delete-char (C-d): Commands For Text. (line 6) -* delete-char-or-list (): Commands For Completion. - (line 30) -* delete-horizontal-space (): Commands For Killing. - (line 37) -* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) -* disable-completion: Readline Init File Syntax. - (line 73) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. - (line 14) -* downcase-word (M-l): Commands For Text. (line 45) -* dump-functions (): Miscellaneous Commands. - (line 61) -* dump-macros (): Miscellaneous Commands. - (line 73) -* dump-variables (): Miscellaneous Commands. - (line 67) -* editing-mode: Readline Init File Syntax. - (line 78) -* enable-keypad: Readline Init File Syntax. - (line 84) -* end-kbd-macro (C-x )): Keyboard Macros. (line 9) -* end-of-history (M->): Commands For History. - (line 22) -* end-of-line (C-e): Commands For Moving. (line 9) -* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) -* expand-tilde: Readline Init File Syntax. - (line 89) -* forward-backward-delete-char (): Commands For Text. (line 15) -* forward-char (C-f): Commands For Moving. (line 12) -* forward-search-history (C-s): Commands For History. - (line 30) -* forward-word (M-f): Commands For Moving. (line 18) -* history-preserve-point: Readline Init File Syntax. - (line 93) -* history-search-backward (): Commands For History. - (line 50) -* history-search-forward (): Commands For History. - (line 45) -* horizontal-scroll-mode: Readline Init File Syntax. - (line 98) -* input-meta: Readline Init File Syntax. - (line 105) -* insert-comment (M-#): Miscellaneous Commands. - (line 51) -* insert-completions (M-*): Commands For Completion. - (line 14) -* isearch-terminators: Readline Init File Syntax. - (line 112) -* keymap: Readline Init File Syntax. - (line 119) -* kill-line (C-k): Commands For Killing. - (line 6) -* kill-region (): Commands For Killing. - (line 41) -* kill-whole-line (): Commands For Killing. - (line 15) -* kill-word (M-d): Commands For Killing. - (line 19) -* mark-modified-lines: Readline Init File Syntax. - (line 132) -* mark-symlinked-directories: Readline Init File Syntax. - (line 137) -* match-hidden-files: Readline Init File Syntax. - (line 142) -* menu-complete (): Commands For Completion. - (line 18) -* meta-flag: Readline Init File Syntax. - (line 105) -* next-history (C-n): Commands For History. - (line 16) -* non-incremental-forward-search-history (M-n): Commands For History. - (line 40) -* non-incremental-reverse-search-history (M-p): Commands For History. - (line 35) -* output-meta: Readline Init File Syntax. - (line 149) -* overwrite-mode (): Commands For Text. (line 53) -* page-completions: Readline Init File Syntax. - (line 154) -* possible-completions (M-?): Commands For Completion. - (line 11) -* prefix-meta (<ESC>): Miscellaneous Commands. - (line 18) -* previous-history (C-p): Commands For History. - (line 12) -* quoted-insert (C-q or C-v): Commands For Text. (line 20) -* re-read-init-file (C-x C-r): Miscellaneous Commands. - (line 6) -* readline: Basic Behavior. (line 12) -* redraw-current-line (): Commands For Moving. (line 30) -* reverse-search-history (C-r): Commands For History. - (line 26) -* revert-line (M-r): Miscellaneous Commands. - (line 25) -* rl_add_defun: Function Naming. (line 20) -* rl_add_funmap_entry: Associating Function Names and Bindings. - (line 47) -* rl_add_undo: Allowing Undoing. (line 41) -* rl_alphabetic: Utility Functions. (line 24) -* rl_already_prompted: Readline Variables. (line 59) -* rl_attempted_completion_function: Completion Variables. - (line 12) -* rl_attempted_completion_over: Completion Variables. - (line 207) -* rl_basic_quote_characters: Completion Variables. - (line 96) -* rl_basic_word_break_characters: Completion Variables. - (line 90) -* rl_begin_undo_group: Allowing Undoing. (line 29) -* rl_bind_key: Binding Keys. (line 22) -* rl_bind_key_if_unbound: Binding Keys. (line 32) -* rl_bind_key_if_unbound_in_map: Binding Keys. (line 38) -* rl_bind_key_in_map: Binding Keys. (line 27) -* rl_bind_keyseq: Binding Keys. (line 59) -* rl_bind_keyseq_if_unbound: Binding Keys. (line 77) -* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 83) -* rl_bind_keyseq_in_map: Binding Keys. (line 66) -* rl_binding_keymap: Readline Variables. (line 154) -* rl_callback_handler_install: Alternate Interface. (line 15) -* rl_callback_handler_remove: Alternate Interface. (line 33) -* rl_callback_read_char: Alternate Interface. (line 21) -* rl_catch_signals: Readline Signal Handling. - (line 48) -* rl_catch_sigwinch: Readline Signal Handling. - (line 55) -* rl_char_is_quoted_p: Completion Variables. - (line 46) -* rl_cleanup_after_signal: Readline Signal Handling. - (line 66) -* rl_clear_message: Redisplay. (line 48) -* rl_clear_pending_input: Character Input. (line 30) -* rl_clear_signals: Readline Signal Handling. - (line 119) -* rl_complete <1>: Completion Functions. - (line 20) -* rl_complete: How Completing Works. - (line 49) -* rl_complete_internal: Completion Functions. - (line 10) -* rl_completer_quote_characters: Completion Variables. - (line 113) -* rl_completer_word_break_characters: Completion Variables. - (line 99) -* rl_completion_append_character: Completion Variables. - (line 137) -* rl_completion_display_matches_hook: Completion Variables. - (line 77) -* rl_completion_entry_function <1>: Completion Variables. - (line 7) -* rl_completion_entry_function: How Completing Works. - (line 55) -* rl_completion_found_quote: Completion Variables. - (line 165) -* rl_completion_mark_symlink_dirs: Completion Variables. - (line 172) -* rl_completion_matches: Completion Functions. - (line 45) -* rl_completion_mode: Completion Functions. - (line 37) -* rl_completion_query_items: Completion Variables. - (line 131) -* rl_completion_quote_character: Completion Variables. - (line 153) -* rl_completion_suppress_append: Completion Variables. - (line 147) -* rl_completion_suppress_quote: Completion Variables. - (line 159) -* rl_completion_type: Completion Variables. - (line 214) -* rl_completion_word_break_hook: Completion Variables. - (line 104) -* rl_copy_keymap: Keymaps. (line 17) -* rl_copy_text: Modifying Text. (line 15) -* rl_crlf: Redisplay. (line 30) -* rl_delete_text: Modifying Text. (line 11) -* rl_deprep_term_function: Readline Variables. (line 144) -* rl_deprep_terminal: Terminal Management. (line 13) -* rl_ding: Utility Functions. (line 21) -* rl_directory_completion_hook: Completion Variables. - (line 64) -* rl_discard_keymap: Keymaps. (line 26) -* rl_dispatching: Readline Variables. (line 41) -* rl_display_match_list: Utility Functions. (line 28) -* rl_do_undo: Allowing Undoing. (line 48) -* rl_done: Readline Variables. (line 28) -* rl_editing_mode: Readline Variables. (line 242) -* rl_end: Readline Variables. (line 19) -* rl_end_undo_group: Allowing Undoing. (line 35) -* rl_erase_empty_line: Readline Variables. (line 47) -* rl_event_hook: Readline Variables. (line 119) -* rl_execute_next: Character Input. (line 26) -* rl_executing_keymap: Readline Variables. (line 150) -* rl_executing_macro: Readline Variables. (line 158) -* rl_expand_prompt: Redisplay. (line 64) -* rl_explicit_arg: Readline Variables. (line 233) -* rl_extend_line_buffer: Utility Functions. (line 12) -* rl_filename_completion_desired: Completion Variables. - (line 187) -* rl_filename_completion_function: Completion Functions. - (line 59) -* rl_filename_dequoting_function: Completion Variables. - (line 37) -* rl_filename_quote_characters: Completion Variables. - (line 119) -* rl_filename_quoting_desired: Completion Variables. - (line 197) -* rl_filename_quoting_function: Completion Variables. - (line 24) -* rl_forced_update_display: Redisplay. (line 11) -* rl_free_line_state: Readline Signal Handling. - (line 72) -* rl_free_undo_list: Allowing Undoing. (line 45) -* rl_function_dumper: Associating Function Names and Bindings. - (line 30) -* rl_function_of_keyseq: Associating Function Names and Bindings. - (line 15) -* rl_funmap_names: Associating Function Names and Bindings. - (line 40) -* rl_generic_bind: Binding Keys. (line 89) -* rl_get_keymap: Keymaps. (line 32) -* rl_get_keymap_by_name: Keymaps. (line 38) -* rl_get_keymap_name: Keymaps. (line 43) -* rl_get_screen_size: Readline Signal Handling. - (line 102) -* rl_get_termcap: Miscellaneous Functions. - (line 42) -* rl_getc: Character Input. (line 15) -* rl_getc_function: Readline Variables. (line 125) -* rl_gnu_readline_p: Readline Variables. (line 78) -* rl_ignore_completion_duplicates: Completion Variables. - (line 183) -* rl_ignore_some_completions_function: Completion Variables. - (line 56) -* rl_inhibit_completion: Completion Variables. - (line 222) -* rl_initialize: Utility Functions. (line 16) -* rl_insert_completions: Completion Functions. - (line 32) -* rl_insert_text: Modifying Text. (line 7) -* rl_instream: Readline Variables. (line 92) -* rl_invoking_keyseqs: Associating Function Names and Bindings. - (line 21) -* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings. - (line 26) -* rl_kill_text: Modifying Text. (line 19) -* rl_last_func: Readline Variables. (line 105) -* rl_library_version: Readline Variables. (line 68) -* rl_line_buffer: Readline Variables. (line 9) -* rl_list_funmap_names: Associating Function Names and Bindings. - (line 36) -* rl_macro_bind: Miscellaneous Functions. - (line 8) -* rl_macro_dumper: Miscellaneous Functions. - (line 14) -* rl_make_bare_keymap: Keymaps. (line 12) -* rl_make_keymap: Keymaps. (line 20) -* rl_mark: Readline Variables. (line 24) -* rl_message: Redisplay. (line 39) -* rl_modifying: Allowing Undoing. (line 57) -* rl_named_function: Associating Function Names and Bindings. - (line 11) -* rl_num_chars_to_read: Readline Variables. (line 32) -* rl_numeric_arg: Readline Variables. (line 237) -* rl_on_new_line: Redisplay. (line 15) -* rl_on_new_line_with_prompt: Redisplay. (line 19) -* rl_outstream: Readline Variables. (line 96) -* rl_parse_and_bind: Binding Keys. (line 96) -* rl_pending_input: Readline Variables. (line 37) -* rl_point: Readline Variables. (line 15) -* rl_possible_completions: Completion Functions. - (line 28) -* rl_pre_input_hook: Readline Variables. (line 114) -* rl_prefer_env_winsize: Readline Variables. (line 100) -* rl_prep_term_function: Readline Variables. (line 137) -* rl_prep_terminal: Terminal Management. (line 7) -* rl_prompt: Readline Variables. (line 53) -* rl_push_macro_input: Modifying Text. (line 26) -* rl_read_init_file: Binding Keys. (line 101) -* rl_read_key: Character Input. (line 7) -* rl_readline_name: Readline Variables. (line 87) -* rl_readline_state: Readline Variables. (line 161) -* rl_readline_version: Readline Variables. (line 71) -* rl_redisplay: Redisplay. (line 7) -* rl_redisplay_function: Readline Variables. (line 131) -* rl_replace_line: Utility Functions. (line 7) -* rl_reset_after_signal: Readline Signal Handling. - (line 80) -* rl_reset_line_state: Redisplay. (line 26) -* rl_reset_screen_size: Readline Signal Handling. - (line 106) -* rl_reset_terminal: Terminal Management. (line 28) -* rl_resize_terminal: Readline Signal Handling. - (line 89) -* rl_restore_prompt: Redisplay. (line 57) -* rl_save_prompt: Redisplay. (line 53) -* rl_set_key: Binding Keys. (line 73) -* rl_set_keyboard_input_timeout: Character Input. (line 35) -* rl_set_keymap: Keymaps. (line 35) -* rl_set_paren_blink_timeout: Miscellaneous Functions. - (line 37) -* rl_set_prompt: Redisplay. (line 78) -* rl_set_screen_size: Readline Signal Handling. - (line 93) -* rl_set_signals: Readline Signal Handling. - (line 113) -* rl_show_char: Redisplay. (line 33) -* rl_special_prefixes: Completion Variables. - (line 124) -* rl_startup_hook: Readline Variables. (line 110) -* rl_stuff_char: Character Input. (line 19) -* rl_terminal_name: Readline Variables. (line 82) -* rl_tty_set_default_bindings: Terminal Management. (line 18) -* rl_tty_unset_default_bindings: Terminal Management. (line 23) -* rl_unbind_command_in_map: Binding Keys. (line 55) -* rl_unbind_function_in_map: Binding Keys. (line 51) -* rl_unbind_key: Binding Keys. (line 42) -* rl_unbind_key_in_map: Binding Keys. (line 46) -* rl_username_completion_function: Completion Functions. - (line 66) -* rl_variable_bind: Miscellaneous Functions. - (line 21) -* rl_variable_dumper: Miscellaneous Functions. - (line 31) -* rl_variable_value: Miscellaneous Functions. - (line 26) -* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 27) -* set-mark (C-@): Miscellaneous Commands. - (line 32) -* show-all-if-ambiguous: Readline Init File Syntax. - (line 164) -* show-all-if-unmodified: Readline Init File Syntax. - (line 170) -* start-kbd-macro (C-x (): Keyboard Macros. (line 6) -* transpose-chars (C-t): Commands For Text. (line 30) -* transpose-words (M-t): Commands For Text. (line 36) -* undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) -* universal-argument (): Numeric Arguments. (line 10) -* unix-filename-rubout (): Commands For Killing. - (line 32) -* unix-line-discard (C-u): Commands For Killing. - (line 12) -* unix-word-rubout (C-w): Commands For Killing. - (line 28) -* upcase-word (M-u): Commands For Text. (line 41) -* visible-stats: Readline Init File Syntax. - (line 179) -* yank (C-y): Commands For Killing. - (line 59) -* yank-last-arg (M-. or M-_): Commands For History. - (line 64) -* yank-nth-arg (M-C-y): Commands For History. - (line 55) -* yank-pop (M-y): Commands For Killing. - (line 62) - - - -Tag Table: -Node: Top1339 -Node: Command Line Editing1977 -Node: Introduction and Notation2629 -Node: Readline Interaction4252 -Node: Readline Bare Essentials5444 -Node: Readline Movement Commands7234 -Node: Readline Killing Commands8200 -Node: Readline Arguments10121 -Node: Searching11166 -Node: Readline Init File13318 -Node: Readline Init File Syntax14384 -Node: Conditional Init Constructs26319 -Node: Sample Init File28853 -Node: Bindable Readline Commands31971 -Node: Commands For Moving33029 -Node: Commands For History33891 -Node: Commands For Text37016 -Node: Commands For Killing39743 -Node: Numeric Arguments41886 -Node: Commands For Completion43026 -Node: Keyboard Macros44571 -Node: Miscellaneous Commands45143 -Node: Readline vi Mode48505 -Node: Programming with GNU Readline50329 -Node: Basic Behavior51304 -Node: Custom Functions54721 -Node: Readline Typedefs56205 -Node: Function Writing57844 -Node: Readline Variables59151 -Node: Readline Convenience Functions68853 -Node: Function Naming69843 -Node: Keymaps71105 -Node: Binding Keys72877 -Node: Associating Function Names and Bindings77424 -Node: Allowing Undoing79686 -Node: Redisplay82236 -Node: Modifying Text86136 -Node: Character Input87382 -Node: Terminal Management89180 -Node: Utility Functions90616 -Node: Miscellaneous Functions92981 -Node: Alternate Interface95278 -Node: A Readline Example97437 -Node: Readline Signal Handling99340 -Node: Custom Completers105208 -Node: How Completing Works105928 -Node: Completion Functions109242 -Node: Completion Variables112814 -Node: A Short Completion Example125004 -Node: Copying This Manual137177 -Node: GNU Free Documentation License137439 -Node: Concept Index159846 -Node: Function and Variable Index161502 - -End Tag Table diff --git a/readline/doc/readline.ps b/readline/doc/readline.ps deleted file mode 100644 index 4d8efc4..0000000 --- a/readline/doc/readline.ps +++ /dev/null @@ -1,9188 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: readline.dvi -%%Pages: 74 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMBXTI10 CMTI10 CMCSC10 -%%+ CMSLTT10 CMSY9 CMR8 CMSL10 CMBX10 CMSS10 CMTT9 CMR9 CMTI9 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2005.12.06:1546 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: f7b6d320.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 -% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 -% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 -% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 -% -/TeXf7b6d320Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand -/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen -/period /slash /zero /one /two /three /four /five /six /seven /eight -/nine /colon /semicolon /exclamdown /equal /questiondown /question /at -/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X -/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 09fbbfac.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 -/TeX09fbbfacEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla -/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam -/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon /less -/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright -/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l -/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright -/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi -/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: bbad153f.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 -% -/TeXbbad153fEncoding [ -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /circlemultiply -/circledivide /circledot /circlecopyrt /openbullet /bullet -/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal -/greaterequal /precedesequal /followsequal /similar /approxequal -/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows -/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast -/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup -/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional -/prime /infinity /element /owner /triangle /triangleinv /negationslash -/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur -/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection -/unionmulti /logicaland /logicalor /turnstileleft /turnstileright -/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright -/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv -/backslash /wreathproduct /radical /coproduct /nabla /integral -/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section -/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef -/circlemultiply /circledivide /circledot /circlecopyrt /openbullet -/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset -/lessequal /greaterequal /precedesequal /followsequal /similar -/approxequal /propersubset /propersuperset /lessmuch /greatermuch -/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 74afc74c.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 -% -/TeX74afc74cEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /sterling /percent -/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma -/hyphen /period /slash /zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 0ef0afca.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmr5 -% -/TeX0ef0afcaEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi -/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls -/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright -/numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft -/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h -/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash -/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda -/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup -/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj -/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe -/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMTI9 -%!PS-AdobeFont-1.1: CMTI9 1.0 -%%CreationDate: 1991 Aug 18 21:08:07 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-35 -250 1148 750}readonly def -/UniqueID 5000827 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 -4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D -DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A -F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 -8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 -03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 -211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 -E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B -D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 -6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 -0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC -1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 -298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D -C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 -433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 -1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 -1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 -E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F -9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 -BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 -40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 -49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 -4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C -4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 -35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR9 -%!PS-AdobeFont-1.1: CMR9 1.0 -%%CreationDate: 1991 Aug 20 16:39:59 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-39 -250 1036 750}readonly def -/UniqueID 5000792 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835 -3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203 -046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E -C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A -A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2 -A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D -731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B -09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1 -49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B -5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B -54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C -C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F -11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AD14F1CBE935942AEC -D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A -109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 -3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 -C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7A68B5ED51FA -3D560A408651E1DE4CA7F7045304BC92695FA64EE9BB26323501BB6812BF93C8 -F0943DD7F7D4DB11B67124C1A036F602A89C92C88CA0C6B5E553EDAD776E2D30 -68CCA6087BF5B8E5F21FD98B28FF98C95B0269FA22C704D7AD62051E5B3AEE88 -A37BDACE549C39E26DF689B18D5D6B08EE00039E6A48535F0366731962C9965B -59039E77B86CC86818E5149EE38E2532C27F381B35B7C11E45C9378361BB1DC1 -41771CD882B3F4442C80CD77CA970DA90ABCDA4FF1980EE556BED6EAF9EE8BCE -B8A168C27DC2993EDCA0D042022B51D8C68C574193E360460F7DC428B07C3A9B -31046F24519B1173F30F150061FEA0D1BFC5502D8394890B2EF2383FA09E6DFF -53760DA7C0D8EE63C40886C7E55DADE15C0CDA90210C3FFB39A7BD9810725834 -9FF3E45BCDFCFCD060E5526DF778651F49263C611F70578B48152B33DE625ADA -4E780838570951F01C9D166B366184B08AFF8577B6A2C1F9D54E07C5A2255648 -AC7E77FDC6D159F0422B6C807CE0EAD467D5ED91DE842D61FE03CC71293CA0D2 -07ADE222595841CA7955413CFFA7BC47A5C122E9F0A4BF1784DD2DE1C169FD9C -995EEB1942688408159BC3ADEBF8E728FF1541E2B862353F25F6029DC08DECF9 -5915E3645EF2013E904EABF2398F6B7A0410FE03FBADC640E1043096A5C336B9 -D9BD079CB64FA9DE6AD8BE4234BFFFE770950A98B8F67B981E417202728004F5 -4DC7C1307CC9E1AF850FCD51884F2F0DE870BAE1C30F38B82199C3180409E82A -000766C4ABFB5464844A2A205D46D0BAE1421784573338DAB60F5AE269237534 -200CDC077033251E2E14C5DD686DC4BED29F59F5D8EBA72591FBE4E0FB08651A -68E96F86F1925D1982AB3FAF93B0E7F92555D921BCBBBE77DCDF4737BB4411ED -F008A3A9E100FAA52FB1411CE2EEA0533035F8E6893404D6E49E3A30D96586D8 -1EBFE00C6073159B5DE5A09006715C6793AA8BA02D080F715B7F70387C68F170 -659DF4948CFE584D5D1BE11BD52DF02DB8D1B3BDFD51DF5F90ED9A3C3A999162 -4AF2B558C0FBF0E48484C92A148387C4CEC15C98A46FE60BDF47A6CB56DB99FA -6941FE3BA90ECEB0612632F61449C8587D59A0F80562CD7F8C48315726DC1C4F -947C42A8B20A04CCBA4F71EC263835C5038FCBBBDCA8CD9AF8E4E2EBB96A85F5 -39FB6BEB32F29444C09E106EE00DEE0E03B1740F67AE3053CD368C1146DA8B95 -AF0C21846667715A741A4A1657DD22C0DDD0C9FA357F84B053A6764411809EE0 -DBBD92068ACAECC1DA8DD66AD093CD5D3D941FD3B51A13928DBDC96D17F5DD79 -B35ADBA0F19C73670E58B4DA47583CC9A4856AF60A5A3549CD4767D0426FB29B -AB660386F02D3DBFE7FDD706865B24BE3D3CE3774F18F6BC700DC99954D7C48D -F30113EAE546A4F02F125CF85A18CE69E4D6AE9E08E74B79EA5B68FC57FBF09E -130606094463B6CDABE7AA6E55926A474CBDF28185EE7556A08D17C45AC94160 -593DA873D9FD8F69DA68D18727692D6C87EC78A293C4CCBD661A02ECBF062580 -369B2BEA56A4E32991AB626BDEA29FF772F1796B48D8F9658692EB4044D7EF01 -3B3CA41AAF927C364309CF415212BAD1D852B0560A8D49874C92AB2541C1E361 -0930E31424A348F680F94DCED38995BFB3302DD64225F0B04A09A74E1595D221 -9C25913BD7AEE76B967B9BCB2F62E1BC3F1D15786A2D3B9F3C5009FD8F4879D8 -16FBBB351AF894788C5436514C27D473988F3A80F761B28B18B655E0A76B6BF5 -0D8F284FF6E4AE7B0C26127712F7A4F7B9D28E0B6B403495B2E02FABAA27574F -35DDA985CC000C1873408355645C9E3B2130DFCEC06B7287DAB0F83AAB471866 -F67634A6178C48A8332D5EA87F4F6DFB6EFFEFF053F023E8A44A977FE9C16EDE -7E06BC9F7F12F883D9492CED03CD0F85C77AB7EB6A39CAA09C4CD7157A9C9CE9 -4A48F8F9761431E5DCA288D85670FA1F3F59A2CDF9467F33F27B25BA742743C8 -18227D3066DB560186D30DB1BB398FD8016CA5E4549B01138F944DD5EA705B61 -8947DD70A317946556F95B0B6BF64D2BA5AECBF81E1FD101EA5B7307B84EE594 -5AD4059C8D14314C0A52C942CFDBB67D7A6981BC7F5320D3D2B55F2BACD54FFC -A2F79ED842F9E22FFAF5783EE632AB0A5D05D7683F7966F8439B8E1C8F4DF635 -B8102574E225F4F2D3B0D2EC0B92B50E331B8438C893A6460C3F45F266172131 -387721EC837F4ED8F9F4CB5B2C6F2DE89C15C05BC3E55F18A64396D056C924E2 -7B35A95E1A48A381855261EC272264BE5EBC5700B46F0E2227AE590AD57764AE -3074D065CBBF8FD89C1520D266B48B52C3984A694E20199A4B079E8FF2339887 -AADCFEC5330F10B9237BC4EF612244237BD557FDE58BBA4512DB23EB2BC94187 -B3D5F590BF44968021903307889F418AE545BF73B83E8878A0407BCD379609DA -C5751E074BD9BE46FD33EA4370D2D5DAE7CAC02FAD9F8E1BB58DAD635B0BD7EA -469EDC189ACB5C3EE67A67BF806C51E12BC92E91EF1E117DE66C4F2A9E745A47 -15DE7F1A0AEA10A45F08E2F4399360B11F3A09E0C32BD0F14EF530A8833CD569 -BCC9A5145BF38CB29E3919C2AD9731230782E159E94C02A76184D669FD17DD68 -2F13EA14EF325E6C9AF57EA2ECD3A3B1C4DE70785BF2B2817D758BB234411F03 -9E1C46B18935A56BEC5D55B9080602AA84F98A55B6D4CF66E83276723EDB1B2E -0A9C9B7C8459CEB0EF240714B5B78514495F4425496A5D1DE74B09EB9D31940C -072D6D249912B917DDB1FD4B673B8D27BC85048E0E589CD2A17E02FDC7B4FBCB -2ECB335B34B4663CFABDCB5417CA7C1142069C25794D568B95CE29B9DCC0D7B5 -47962BCB535C8962F5B66BC5007E61A82A8703D676FD69700929419EADC10223 -AF300492F5346B61A661D1B338265B3126D0D00D5EA5AC91B54B758783DDDA41 -1DE8822D851D080FD850DFFA0FD4B28F93458CE4CDA524F4CFFA22DDD6029209 -4AE4C566016DE6CB73B534B0D3628C0198C2978B5014B09A108C982149CE0E38 -4BB5A9C7BCC5C6CF9257D513A9233C0ED64ABD62D8368FC0B202AE38162A2F39 -0749272663ECA2F1286EBA49CF88C72CBD0C5CB2664CBC73272398731D15D9F9 -79C51314BCB00FD04AD65CBED3DEF2F96CC9297DCBB4235215CC53DBF02375E9 -01642EACB34930D35D47C46F98875E0C5F62F21A1342CA798B2AAAAA78254B5E -EF248251CFD2D7E9FC299CFF0B1C81EA0CDCA106E2D6A22A40B4ADEC2005D713 -59796BA1E6FBBC55549B9641AD6A6AF977C5234B66789E946E138754F15C9A05 -E67D7340D73F76CCB5E0D01A685DFE166A0B58358D8D05A407DF0949E4D6FE32 -626917EB3964A325A58D1A01F8D7D74D9565619A30A4A7A95E5961B2ADB54387 -EA160D1C553A6F3756DDDF415A431F910A2CCC54B7FEF17CEC4A39BF7282EE76 -BB2C35CAB9F60D363491DA097D1B3A3FD7F7674008531402BD57CCACC26B2D07 -12A3287F903FB55C48664A34439B797F3560EF5F183FE1DE33A5057CA47E46EC -4EF5B6683E44384E6BB33044940C1025A3CB3F59A46EAF7D0D5FF66C58E89F7B -2249E95E830E94DC0159C989EC66973C359685EE3A02B9194A72C7697BC27978 -8D7B82DF6C448623BFE4AD8BD93761C3D6A71A0F6F66A9EE023E0506FB2FEDBA -93FC073CD19D5DFD9C28505B3B8E2FE756E00ADD8467208C079860AE460543C5 -B6CEBBC10B2EA1EEA6CD13D20EDC5A118F2FEF56BC81958A9D9D0F7A08FAF926 -DF045A757B33FD3DD093A8A7C82B914CA39EBE87EFBFC5B35EBDE845E4D2DAD9 -7764AB8DC8A0AB77E32423F91B3D0D2C154EE2D17979CB8DFDBD0A4549FF2EE2 -AD37CA8F41961CFE90BF5D669F3EF1C26C6162F40551656064A3D8A3478D4786 -8C9149980F294EECA58A9DC23DD5566F7A06ED7618DA2BEF3D99FA4018AF4D6F -02F6454A0B2337DEB89D66EBC066974CD398FFFBA7FCAD1B1BB37C9143F0A89C -2290C92F34AE64C339B42EF3A5BC48AB770802140935B90EDF77935084C77178 -873A74B11496374F55069B3FF469922027491DA738BBB50207DD3DCC8CA80DB0 -A041848DF3F61B8447F15CE1BCF0BA3AEF785A04F17C1A22569DD20D034B9652 -1DCDA9392C5DA7FF0FA312707DEF8C538C29138419C731CDB68FD01FEB4FFF67 -D41916D7681A563E0B7BBA324BAD2F047B55D3255F717E723F7A2CCF89A1B93A -76485E4582EC2A39BDA79D3C17136C476392A82B6897095DF62D2B6E65A14D06 -6E327CBF4E8F7EC1DED6F49B6493D12DE0DF759D89CDC50456BBBB55DAAC9502 -D0AE4E15F8A68E5C2411CA6BCE4DFBDD4DCD7BE60A25A730BEBFF444998C2EAD -2C14E3316D659B834A7622B921E03F8D0AC2C5E02952236BD5A28F4EADD73366 -93A99F61313BA119FE9E8E87EA9DD997583716DA37273D2BF5866BF0FB44215D -9E20DFE03CDD8BFC61DA4877FAFF071EBF9FF5CF19634D92DBE5EB8E061A2A07 -35CC7BADDDF2D738277C873DEC6C97A854D0ABCDCF12F48636D0C6F449C7048D -F038E827D54D6FB7DA94532766B94D071C9B9FF7D80D175A79B09DFF3CE41D1E -C9402D32EB5FD5B9BE32F2324EF8D66DFEC2EF9E56DF9DE385A72805E10501C3 -0C1797E5DEE38708A785985B6A61FFE99613CBC9980118F9ECA7582B9874A811 -7430ECF39E2A774A49D3325E9384F731145F7EDD0BA3D5963EDF1A2928B5308F -3A50D72491484092BA99E7D6F027F0ECE1D5833FB248FEB06957230F6810C645 -7A6F82329E05094506AAA6F9E09B61EE2CC95E4D99F8D8B12B8223424E9E4B36 -92499001521A9D431F098FF63D240498BE1CD95DF52046B07EA88C445DFA35AC -6CFD5E6DBD0A44BCC4182DACF62053CDE03D0E64526EA34262C707F1A990A844 -11BE3C7F02CBEE9C7EAAA212EED4493B801119642A6670C18C45184B91B10096 -F803E99CD1209D13B866D8A45AD999228C94DE5DEEF6CECAE154CAE4A82286D2 -02A8324F3866DB698B6B085D05028AD4047E59D1962EE218679ECA70206A5976 -5802E739BADD1477330196B75A631B12DE16C0E634E9CD759F080DB975F692E3 -E18E725A093A1C102FA0F73A23DB1AE8E17400FA081CA88AD54F975E2507C948 -CC6DF149C1F2646FD3F62529488CE78DEE4ADA155081BD819C40F624571BB649 -C598E2B3C607DCC5383A0774BB590CFB57CC2432605155425FCB5F02B12A20BD -579059B80C1168E3D9BDC4FE6D20970D34F2A2DDA7542A4BD8815EE0656558E7 -9D025BFFE6FF6D50D92ABB7A82C445DAAB13896B28BCD32EEC08BE55D720383D -A6CA9BDCEB39BA0615182941ACD0D52AE4E19700ACDF2B983C22C8A4D5568C91 -493FBCB4C1F582249C930F1D0515E4208E5AF759D4317FA39CB2634359BC2858 -49A98B8C573AFA8012A16C3E5109D54D040BDDB1C79B6C475D1AB95CBF022A55 -7CB102976B27DD210BE99F279E7BC2A584CD5D732A80283980E4C18045E687D4 -5D79EFD9E2A270DAA5A777E2D53839D5B04540B756B75E5D06B134C0238CD6C8 -B875F9A335FB8574A6E39285D7924BD4123FD0C8765C82918C0D625507999B3C -5F2C978939F47C0EEA7C3ED837F4CF3891BC790C0A1A3013B65009F9EB00BDE0 -0A8B3F884FCEFCAD6745661453AB92DE8442E27C899E2C7DAAAED3F79DFE6B5B -1F1244706112F58A7A4154D56E0841C43DE496F1B8494599B662F8DB03278E9D -B90787BBBA4E934688F9972F238557C0D11084D6F17D28CE8B0539EF36A6E33E -CA747C64AB2DEBBF2CC8B7086E4FF69409C95EF5C021C6489317E08B8547DC5D -FBA45224379595FC263B57587B823E95665340917E609DB8805E20089CC20C0E -57A9A531A0068466DCA2AEA41C332F04B10347B8C6CE48233325BF4B18485401 -BBA4AAFA33067623A8843F134F90D0A9651C22B5CC5FD75EEC8660FE154CC875 -BFF9E625EE2C62A6B0FFB8E99447B360525604A85DE4629A8600E557AFC51643 -20DD4AEA48DC4D3B36D0AF148934CF3A9D5E1CE0A672FD6A5DE6F8EE04D2C489 -22366F26A3CE9A703545D6C4D14917390AA6A733ECF53D7AFC3B8AFDF03318EA -2AFA4C61D291B6A479137424E87E3A0F9981BE8B84D12E5601C8740B381D5E88 -362D1626547D1AE501BB748ABE3F591CB5257548A86185B26D1414E4192AA685 -C9077129CFFFE1D7A6329F103973F2928AB6A509BCF32B014685BE251B887838 -C7C0DB8F85361F70C15F679C53553AD07BC0ADB6E866249D01EBDC3E500696F3 -9DA6F9CC8C6A3535BBDD9096658610183E989BE704C259F6111616DC7471ADE6 -A8DE73CC340110B8DE6E947CC2C70E4CF0245ECE1DA20C7A695330C50BC4F12D -F51E93B41181B635B352B15AB50CD8E1633B25ACC11C73F29A6075E30CF56773 -AC7F8880AF88B689CD292A056E0821E151E1272577F4E061D164A801B1B26182 -EBE31DF3DF1F35F264F605503D15432D96C157EC79039EC44FDFD8757F1A1081 -6D59D889E6A59C3B6B3EF288AA62D3610F0E6B3015BF08DA40FBB420ED893423 -7BA21152A9CDB5B4A7787117EAEA1109A4548130028B4FFFD949A997B8754FF4 -8C79A7131404AFAE704F68321CC16CAEC9B8CDB127FA5EE2D8CABD362FF694E0 -0E8FE576FA89B96BCAD48DA4CA725259E57FF50A24F21679FE78EE889DB92FB8 -53F8A6539A3EC8E5AD34915A2067152E920482F632B587A764985D686EAD3C84 -2FBAEA7EEDAC2306ABC5D3D8088A844FD63830F47CBBD5D179CA520C5DC0D914 -D82B6313951EB6B3407A0B16932F4B61A08A164339CB0E7218E4A7F08775A064 -A85A094CE278F11FEE05522815FACC0B0C9491D156EF42B860687CBAA26E4A28 -DAD0F6199B6E3D78D9839D1595E6B7A1E9A7BD974B67FC1204F1DAAFB808539B -FEC6C90363B38F09DD6364089D10B5EDE390CD75E166935A3BFE8356739F8583 -E7D7F4B518046901C79108DB453DE9B3312FA7E5053D7C3E4A12F13C97936E0A -31E74CD9423C6FD3AA00F76275E5822B468B3A1002BA1B8161B8E3B55A70FA32 -E3F8B718C6197E73BA6B72C685FB75CB08B87080E01DD2FE3ECDC633ECE9A298 -C5443AC2D696A38D6197D3139968B5B9DB9367A206D5F2014A083F4A3D0BDAC5 -CF792C21860C2C49F61409A402207B76468CFFD4FE307F3CD373856BA3269659 -E2717B9BF57D01CE7A7BF106A6C0120CCCD6CDC146ADF30255D8F83CF0EB3E55 -A8FCE82C4F1B3804C11F11CE8AAD6565DD3A3691038CEE7D385ED7ADED41B8D5 -5BCBB023C9905E680C02458805ACB6EFECED0293C395EF459C4B5ECFC70CCC8E -255C4291B2305C2F126B3C41C872B3AC13D4D7612C296E03E74B3D77E9A1AB66 -B7C709A3E18706B12EEC36FD43B3C4E2F4EE283165DCEB76BE610FA8403CB66E -7910745FAE425081087386BC8353D404EEE725F30B919D73A668661519809A4C -96BC9405B483F654BD808A9DE59B0E3D307A6AEDF526921D91750B362A839075 -1B97996FDE08958BCDF18867378D79174B5495FCD470B0CE120B5E470DFEF904 -7E99B32980C4146E139F2D43659AE8DC719F2F2838C0906C63AA1ACBE2784B88 -D62EE014036B38794D7A6BBCC1E008202127FA2D430476047EC1C34C5CC62AE2 -EC1FAD16644EF9F644E67F1B815B96039DA2EAD10966628931439F988BA78056 -EE85DC6B23DF10105AF267D5ED6B1CE01C18953517D7E63C45EA975F5E93E920 -F0D2F349995A1A366BFD10C3E517CC64F2BACA8EBDCDB1726AADB7A9958E7071 -5C6CE126D46640B75F76C689722542A321E9FCF1C6E01310974A7FA548B51561 -A31C2E4C6EADB194B5D1E8A64A27F87D927FA88C30EE61A130B758AA70809F91 -3EE5607CECA9C18C7028C1D7EA76A24B08F74DC74F1F034930543C9C4CB0D143 -31CD68E25E79C827E06785EA6361F3EB251A01AA10D647464BC5CF41DD687E1E -3AEECB699952181B3EAFABF4476CEE11DD889A1DC8818EF2128EF02BA6D6B96C -048F4156520BF728C1DC65382B7A8FD21EF8EFABA3B3D7DE9BE803F3859A9B18 -044AE0656070354FD86A5F78B34355D5489F5464EEAEB5E0B50B8D17EC91EC14 -769E10D34CD03EC7B29F761F19C2B6655BC143225801C1F6BC995AE74AA1C556 -15C1450A62B563F57AFD3ED65AC496DBA8CD0A30E59AE4377AF9FC2306A2080B -B1B92872829FFFE0CF0AAACEC1B760838D5FD49CC7B9BFA3AC8CC10DB0EFC5D5 -31C08E4CC612D0F37503A7DF62CE3FB45B4F23C9D1B03982107A0538B20B94EB -904E76F26E8960F8B24064524389E74C386E578F1AF6F3405017D6FBC98C5110 -F8DDB1B726CBBA948AFD4F87FA0925C503056F98256BABCA04E9F1E0F90649E6 -214EA30A6CB1559CDE88A84306B22F52BEDE2413D2491877EF1E47AA604CDCEB -DAFF33F0B3FF52EC0934976D5829C30D6058536A93F5FE29C53DB2904F2AA136 -4C0518399B141E03A0B7F8838D565304923E9BB312CBA6C2619030924B9761A9 -DEF51F7C550A2ED90EBA6ECC8472217F153CA2E69BF81AF19261EEECD2A0B447 -F1DC94AD3601C9322BB8897D1FBFAA76B3DDEF1D6E8F68C2ADA463D69D4C761A -35B9E5676FECF5E529F5DD60865A3EC2390A4C082798AE9A9354FFD151F878D4 -F6B5AEE6E45B16B0BDE901BB81409F10275817216520DACBF84E54D4DA35B793 -4A1079C8A9BACA6F2E640BE1E1153933C65B01DF45DEE34A92E9AC18485FA4BE -D8F7BF61A441EFE5F5F13464C9484815556B9D52793BC6EB16A31962F6D6FE06 -DF6DFA08FBBEC4839744B571E56AE1A634F3C8BC689511A893517CF43C7A9E87 -4130D4DEC596F730B04DD4D257D14717C3468292F9E62B3CE1A3513F3CCE0F97 -C9885B4229076698FB42B2CCC355AFA7EDEF5FE24720C8B750913D68814A95FA -2120BFCD00ABE9E498C58FF83E9B6E94503EA7002B6E338E6074702D34218A73 -0FD51AC967780742BA4B2E36489D4AC576965033E63B5E493BF2BE70F81CADC6 -A9356A1BA0F12E58EF6D3A3FBEBB2E898695DB307776177E21E5E12CE7150147 -C5F2E409235242E1025221140C78E14B2CD175E9E616A9E11E7BE338047339B3 -D4400AE08445B5E6A34820335D2FE6DEAE7C623CC009B97B16A085B966F28DA8 -8E99778255A7EC3529A26687B4FE1CA5E512197226FCFB7DF99C858D6224F397 -DE145D192AC4AE4C19872694B93FFCB7B30655874E83359164AA20F02A9915BB -CAAE90F6E7CDDF4B55F3A60E07AB74768B7FDA07620347FA20ECF2DF8EFF0CDC -740917E2D59DE57AB4A232EAD2E06FF02D76AEC4C03AA32EDE68D932CB51A4FD -FAF54B642EE76532E8B86A207FBC5242CA6A864EDC59ADF9EB68AB0BAFD24E69 -A4B6E938230DD511767B6869CFFCE2865F959289644BB41B1085EBB6A58FF136 -2433DF2FE92BCEF0343F69108B79D4C56685D1D6C84D368B1E813FFF270E096F -EDA2C4697EAEFF19D60465C772D22CD7BB09115E97B45148FF7103DE3C8A59AA -AEE6861565C4907E4752FB2807F0CCC3B14AFF6775D1032F76637ADAC909CC36 -5326560E6DE148BF49A9EF962264BA50A8F1CA39319103F9210B713C053B6DB5 -22A3EF2C24F43D48B32978058F3E0F1A50B7D6C31CCD706F47D89FB64608376A -658E7B87A48050A704EE7F0F46DFA63B199CCD944061FEDA27F84605EB35C2C0 -7A5322B5CFFA97947A289954BC6D3F61B7BC0EAD85BC1884A6F6C6508FD95F41 -1D5AC1A2137257A3EB7363C865E56233AB388945703311DDD089A03430FC19CB -1EC1B524EB43268FBA8D09F1DA43A50EDCCFDFFCD7F4DE041A5ADF3721FCDE42 -5C689D5A2436DB58ED2D435D30131B51E8777E077EFC3D314DE0CDB0D2EAFCAE -5F2267C3BB6B956B970AA2C61EC8D3A9BCF8BA945AB72A2B4B5D0286BA6219A2 -A20081C4452393BA84F86A4A19090AE698E966CC947E38923FDF36EB1C706DEA -8EB03F86BCD6AAF3222CF13A469E0B93CDE689E8FFB281BE13FC939505427BE8 -F4460097759315CCD22942316D0AB980F0CF7210DFDAFA2BA852E6310B8B50F1 -257DA8E14865403DD9E6340B6ED9079F3EADF2BEF806D21BF244FF2EB5AB07A3 -4FC766A91FECF2B5876D98C8EA190805F437AFB18130FADA96BBEF8F6DD04D91 -39DA9F3615FE1A6AB647FF0928916E1EFCE815C27FBDF580DA71C7B83FE2A492 -B7944A2021DDBC9ED14233D4C84C9F99082250B65DC8A23EB0900BAEB2C5709B -20C5BB49FF65599A63B6DEE0AFB9155416C7C6209BD69EDD65A5E235DF900DD8 -668F6498A80D79AA1B2E4E9F72024A7EF00B927A127E9E342BC214149BA9ADB9 -9CEBC0F7CA76B3E2BAB01CC685F6BAB33F412C732E5AAB9D000EEE5C7EE74B78 -04D30BA757F5951F7D39233897C80F29A057 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.1: CMSLTT10 1.0 -%%CreationDate: 1991 Aug 20 16:41:43 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -end readonly def -/FontName /CMSLTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-20 -233 617 696}readonly def -/UniqueID 5000800 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 -0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB -4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840 -8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079 -8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4 -B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F -ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858 -C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F -EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F -2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60 -4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370 -52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D -38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA -00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0 -B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D -CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF -B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F -802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE -32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8 -00DE382ABED85350033F8ECB97398E4E0A75D4877A107F6A909D0C76D14F9A96 -8A6CFDE3FD9D79B6FD82693A9F354BD2ECF30C6D99F7AC522F8D6C93EA214F7B -3D0ED77F042ACDE9414264C0698E86398562E2C640DEBBA0734AB4C3ACE3907D -CC79E6B2C6C3C3F9B01526E8CD98237D4A9B403FF8CE3132222FA60C196A19BC -A2393AE6935C0F8B67FC1D1A12AA74695EFC77DAFA2804E0EBCAE77E4B5CE103 -A0164B7AF6593E58028A8A8A5AF4F5EC5F7376330432566F458AA2661A6AD0AC -B713047E21FAA80F81C5DE30E1358773FC039A6263DACBF89878169A5B6EE0A5 -BE02F5DE8802912F04D373F16B2E4627D54705ECCDF1A43DE29C3BA73077BCF3 -148E0FE06A4DB51F925170861C43F58168AE85CD478CED8E811821DB638BCFEC -A9FBD9312B6958E3A3DBCEBBE2CF78B52D963A8CD0013428CF3BB3C8BE792496 -D4C6933B070E5492C789A97B7E3864801AF824C4417BC42BB5E0AB897E139CE9 -86D59B189E90F7B5FAE69B67D5A4C797C7335E3A3CC84C92DC98B165077E48DB -34F90A551B4CF387D06A08A637635E2C758227956B880C27E6A6048D5A75F22E -ECCE6D87EFD432983D76E5266950DAA186B89EE41798EC19030105A364B88351 -4CB78AB2AF4BF4E379AC857261D1648BE32B080DC760B01EC9270FFD779E9074 -041A04A3FC130DF2B7B8289BE512DFFE93A62B77529E490C9017808F1B1E9FDC -21E7CC5BE564C03AE602FECC60B2BFD0CD3ABB895B4AC3E3620DA7260603B6DC -A918321A58B20114133FEB1AA7845E8ACD966FDA6A0D76232FA4D0E3ACB16725 -070D6A1AD1C12C4FD19CD64037D8A12A750ADE1E589B38C70A1E4CB163E20BA2 -0FFC466D1452D5561C23677E706A588DDE184EEE001A78D5C833DBD34E2F5828 -E89006EAA304848F2D932C5F52E7F546E18CDD77AEE1D3FCC1A1CF5DE08A4FC0 -0AEFB3FBC66C2053B559BCD562A11FB06722BBED6581D9394EB3F36A0CA220E8 -5D09B80CF21A02E44AB75FCECEFE41E2D1A44435936AA7812B4453F4E31AD6D6 -F6160A2EC199F5AA36D64EE247B072BC58E5F9C7D95390E45BC894D7037D861F -791D339387CDD95EF7283EC409B669E10E949B7C659CA1CC582EEEF4F38CE080 -B2432908B82EAD945FCC67B5D7579A1BB2D5EB3F05F7D32BE415F1BB43566F03 -B9C2B3CB2A3F518F30353F81BB517B90C2278B8ED8BC671370D9ED56D36E00CE -F2C5B1F7DB19BD3140BB2D7EC7D5E3DDA246B660510F93290F5FBF491F4DFF6B -F5428976D5A0D7013CAE6528B070667BF297C45716593781324820C6F8B4AA7D -134BFD082129C91A8E10D8EE59B8C6B55956AF59172F07602EF541470894E46A -A540FE3595DC7B250636D25A5BAFE9107ADBEEB453D4A09C62638674B8F841F0 -C3CB1E3656C7FE9518E318DD13C37B1E7BB57A10695F92C61800A82D9F365BCA -4C0D1C810E3196CE403E16F71E310E3E658D7CC5FE8515322456B252C4C5E56D -807A2E058291BA6EAAD224D49773528EF813556F539CCC84432CA61338C81E99 -88AA24401042751288CB72B695DB05D16AF6FB10924E2D5D9E4397A7107F5EB7 -DBE7DA4EB66C2A9C67A021E6CB0DC31C58A76BC8876379DEA4B6BFED86225990 -99101A9F14EF5B0EF55BD4A54B570D5037C627BE1EB66B20B7FDB7D38A3BCD90 -FB5803DE8B3CB8ACD1D004D26D277469A1359C9B7ECCAF475348DF4B5094F8B7 -9C0B573D161B0C4439694FC196C475B40B051F1E8A64DAC8E7A2C18411E6D7C9 -7E950F1EA4AF91CAFC554A22A840C1873E68DEAB9120D7D9BA8F702F174CBFC9 -04DD6A0567753E97CE5E7795960B4EAFAF76037E54ACC8B9D91A06020E0C0AAD -DE9D2B3408948697A3D7C8F05D27072F470EDCFEDCC1DC099910622E84C0462B -31392B98F29CF0FB1923D480A5AF8616EAB11DE1B2497F7BF6AB449AFF5C6BE6 -AD22AD624BF84A8D59187D26F7CEC076451AD78DF28AEEDF41DEBCD54AB2E747 -3303A61D1A86CA6DE7CC12F2C8B97F77FEAB8D275060A746726F20E9E5068FFC -34CAF97F3F4C41FCCD5F71D333C4EE913986E4157E37A4CCF8B1953E1CB23C52 -36A9BE44AE0349BBA1114920DDA315BD99455E3FF4399A645A7ADB43184BB615 -3A24D5138C09632124085CEB005DE1E00CBFC15C5A041ACBF1B7FEA933E687E6 -77FA85BB40D82E80C96186C9CF295674025F58FA1E43BBADDCE1C60AC4F0E017 -611762CD7CBDAF43659078BF62DDD7D249BC9C5FCDEB06D708AE56DE87490681 -E5191DB36D26A1237A2A150DB03ABCFB0EE1A887ABB92B42FDF25D02A0CD2371 -0A2B5844810A74AEB45836EC19EDD6090B5BC95C258FFDE3E6FD616B942C65F6 -3C35D8123E06D064F4E3CB3B98E38B882836DDBF3752AB1EEF2B731508791E22 -0A67A82EB13058865C6842F61EB43FCB26F0D4AB2B8FC8753B1C6CBD134D8C3B -030386CF236891C74F756F357BDEC0DE483026CA64FFF573C1AA438FC35C43AC -C7501D0E052B43545B562D80192C53F8C5261954BF4429C353AF469B67B6BFAD -37E10BD6430500C6BF756AE206600555417853DD51CEFBEFD0D30A6DB02A008C -1605208250E41485EE0CDE7F0D710D4B846FFC34D31469FB141A04BE8CE53C27 -0DA139C0418F6A331CE817609E80742AC8BF3A20FF11B514B3237E43F1764987 -E6B4C0C7BAF99915F62DAE4C22F59D3CA0CDC6E754D33DFAF9D34028BC2B0EB9 -8CB5556000D1CE986F60C84D0B6E3F4F55ADF2E417358F1B14B542D8A96EFC53 -C3F3F91DAE932AD3DA9C849BA0791C01EEEA3B967A78329083338D1A0B278D8C -CEAD5B6F8017451F34CB458091405E1415E9621A577D6F61A76E1FC781385CCC -0A317E9E794CD972272E988DCF793570C9D4076DAE9BE50EF63A11B7EFD03E3F -96FEA00E65F069CDD157728A1C98AC0A9377197D4BCC157308D09F149AB70838 -C66313272D00504E80FD0839B3A3F126CFAC3B820991F94C497B27B38D058B4A -116E628F7B978C1F253872706B40A7E475F3078992B01336DCB013ACE31F5D1F -2029B4F8A2321A9DEDDD10F2E14A38818637E8C559580529B999E84E07CD0666 -3323D757D75C9DF6A125E3F631D9F6AF5D0C0D2B7C454840282D19BA23764BCF -5842369A69D847DF013B765C2893F80E68A9D9D59A634CFD9E85B90B6F7F09A7 -5D609AC8C9E8820F2F84B72122B081825C116CFDFC3E5D6078A715F35E06811A -4BA7E74DA0B2A24CFC50D6DE7FD0DE5764B53B7A7B33368283615F118E709D65 -EDDCFD8816372B5148590E0AC8C17FEA93205F4AEC06DAD89BBCC28B48F6C702 -119BD3C79D038C3F2B80D60DC61E0C60D872614813DD54B63E8B08623507E92F -962E535C61A2EA234A63C607FABAC496CF03CF226C6C8052753030A0EF740E7F -466BA4A34B072D58F3E560AFB843C5232997976F3C3D4ABCDCA237E43B05AB73 -5BD65C6559DAC970E7F34D4C170F7E34BEB204CD651370588CE4F2F17A0E7131 -6364A265194B7C313257DD83467B21D84E9EDEF5CEBD45EBFFBD912EFD373FB1 -5409ABB0D4B06FBE08577459A14636A374943DC6D4CEA0AB33DD1154FE79BABE -7F5D1D92EA7ED7E6D261C3B2569E83B5E9CCB1717B79959876F16FB720ADCA50 -05A33A47F1668E05A7ADF6E52B38D9D5016923EB55ECDAA72A7D9504635C0352 -76F899CB8DFB42BB5DF808A6499E52C230D5FB8E9E3924C2474D417826D282F4 -8B61112FC39B574AF8DCAF572E89720F539528E20DABDD87EE0ADF78664E94AD -00B3867BEED6C9488036959AAD14CB301B29F19165776DF911A01A6A53414751 -68E4E401C9B3C2B04C9A3066EA0C3553E8F4BFC3F05C73FDF55EAC3213E82E00 -C50DDF2165E51677CD949D27B09DBB30376FA05D2FF3856253F2BAA7907F2EA8 -95FA61D8A042C8179BF834DDE7F67CF386A0D79FBAE5E859887942C6C482785C -E1FBF3F97C666D82FE260D6A8FBD72CA43D731BD4B4301C48249B1E7C31C1765 -D6F7F9C8B59E47D72D7DDED87351E0F007938BFD73C2324BE5BFBC746AF529EF -3259DBC9D83B5025185FD75E0D040203398D1739115F6096AB8DC8A0AB539C17 -755D5927081BAD8FAA7AC021FD028A5C823E373795C2A892DC5750C575D60792 -5BAFC4DD83596D8A182293D630985459BAB559314F27EFDB7E186DBE0E7081EC -A8BBF0F30EE9A8B53DE47C9F2057139937D8B7787BB3107C40002264E6E3C0C3 -E77CF0B68F27E7A0A5CD8AE9A2CBDF98ED4A12E9D1C0DDA8287738A12A607F88 -15B1A64BCFA685C23075619E196EAA4B38517BE37CBC6464369245FAF3D32F90 -A6F8A450B66FA94FC6639D580A1AE8582EB307ABE2396C1093EDBC229BFDD87F -9C5F49F51DB41D671BF836DB70047938A36CF124A5869255D06F3AC0E3435DFA -FB5DADA29C76216637F0E5EF0696BE5833CE0AAD72FE1F8BA860277E70278C6B -32386C1BA505A7BB808BEFE2D75E6D159D58B85F093BDECE344765F388DB0F08 -6D072C265A32944C0A965C10E7BA869881D547A636AF586E1B69F05E9610C411 -EA313749E4584A9C386E789D0BF4EEBEACB2A01CD195A5C6876758C8B2C21E4A -6C68DF63313CE32C033CEE9327B9FCEBA1CB91D302D1E5068DD6189EA38B2C62 -1CBAFAB46F8BF3034A0255FBB0904B4B1B4FB0CC2DF2D412B28E8BDE816F1329 -55635B7E6F7123DAE06E6608CE8EBD46345279E47EF1853B027CE583D1194EF6 -19599F6ECADE298B64CB9FD733CA7DA837DEABC198E750603A02F61874204942 -4D0991E030498B4083C8F81B8B9BD549F6FD0E4C378880FD9968590C13748553 -7E0A624AD408E0D2DBBF2B0566B337CB51BC414598BDCB19F9D84416DEC43110 -A8A899E01D48648D26D92C2F8B784A23BA3436F6403AE29EBCCB05F8F3172FB4 -0408E457400C113233CF054A2EAB612B7F6BD7A92486E69BD12280C5A7251E20 -E103668F48886BF4761830DB9BBA52325F8C3100B923EDEAD4B3CE7494912E58 -4720BFD6B649D64E3015A42FA5A6284A5A4DC3838B58337C8B35CE7D47C39913 -EA706C468E46DDAAF4A5A749FCB5889FD59F90FFDCDB44E5839EA3E49575799B -75A13CB1A17923751326D75A2ED1D2CDAC394084314FF697D408A86D08EB8494 -B526EFAB125865D892431DE80C0EF53E6FFBDDE9F130575976037A35C7853DD6 -5126F779A344E96E6381813950594C1233337459217666A989B5F1718A6BE0AC -19A3B476950B5C9360073C3F2D3D0EEA52CE85743BC348C38AB89B51AA00B899 -217E5008EDE0576E826365DEDDAE40E4A4A69138029D0E59727CCCD3905056DA -DC8FA349C60224B63516186143F07EFE361921C05D9492A6E24234C026A34BD3 -B64D03901979BADECD929276848B4479B51006B8D1171F7C5D0F8DA027043C86 -D44AF5AE35E350F4B11DCD92DDFFC8326E99E764978F965706AC58DC6C0D2F36 -994CCD448AC3CBCC42268B94E16FA9C1387FDC6F45CDE9F58FFA74F27A4A98FA -EA3F2A17E1D2012AA78F906B88EE01694736BC4D184EEF4FB8140E5FAF64150D -E50E8E06F7B9BE125A0FCF24648366CA7A7BBF0E11E6A2DB5825637368DAC5D2 -766A0E15B3BF3CA0838518512DD4697373BB8A95BBB46B39A4659B318EF66F23 -5D068815099898174E95229A7141FD1EAF4D765037BB86FE633EF02BC2A1405A -A01AA2D5CD89628A1B0CD2C5AF088441E52BA7E1BC6A7F09E3A47F6F3B97AAA4 -A41D3EF15211B21CFFC872A40C1182A4CAD0FA5F08CED4BA7D87E5068535349B -8056D253E7A3E5494F07DB46B403E02AC3A43BCD45634DBA2C47C14B1A2E4E0D -22A0092E68F1E320BD63941F4BE8B912B62C2B8D681B29288330F4CAEA024FF4 -3A1809AAA6263656C45146D5A01E2E13A5AFFAF2607891988FB0170595E23A3F -B9714047F54033BA60BE76EDCDBA5C595795440712E64F106452B470D5A9CFC8 -A2C604BB415890FF7AA3126C3CE1D30C3E58ECE4AA04307DAB193702DDAD0686 -788A8B9F8F6F0D2119DB3D4E339C052B314202834F478B8914FB9302037FD84B -B25674DA46B5C9D2A4885BEA519831D2DC406C3C3753251F2BBAC75E1170750F -C54426090DB373AD6EA90AD73C6E80CBBD01F0C56F98C09FF2A162930651AB45 -E8A4CBFC8B1BC29522AF269C5E182130F5DF6822270359151948EFB4C33A2687 -5954407A1EE96F245ADF9E93F972ABC5E1B1457A030F047CFCEC02A3D8228011 -ECC2CB0E0C7AE4B01AA342C6596BD0F85A45E7BE4455D41FC15539D07F710636 -537A8BE0EC50B6A1FDD90B599A08B7824FC65559E3B6FED676A41542BD58A09A -42388D7661D3422CB86F13CF6239BB56EA0B1DAA5542ADD316EE76B01F98E0EF -29A828461020DF0FF643E546EE04CB0032C06AAE533C20720F888295ACFD52D0 -5AD152CD7D0922F911F613354344622BF800B0FA2AF3324E898B39F953818950 -B7587AFDF91F16EF57E46E46F07E14E89326737DFD1CDC0E11E9DB2FEBCD147B -8257B4C2D23DF86AC129BA1655FE6AC212F2080BE6FBC1BFF9BEA8D8E121040E -2AF9500B926072BA9BB474A8CB55E727A9FFFB2C835CB3E7981B904E9EFAF4DE -9F8CA5D338E31FD2535E5CA9A59002123CF08C621D185C102077AB80AF6244E6 -49D22C2ADD353C3F906DE952CEE101A9D08F1D9853EF8EE282506A53FDE5F64F -2FF433CA6E60819B7945A4DBF21534E35039853600CEF1A9FB53B99F074F909B -5164499BB87652A71C6A55FABB3238C1C04AC3D27393D3214D84A6A37B714E7F -B28256E05FEEA5F7E86CA04CE4BCC5479F40FD797CB5BB6C0C817808C0834EEC -63F1D78F0FE712D1EC6F001B395D21656834D6220D77393DE89CDEDDABCF3D59 -7B1703B8884ED56CECE93AC713239D5D814093C2DF4025884D36535994CE1DEC -CB64B51AF63B434F7A18A6FB644F49089EB3161B46F6EEC430B73DE10EAB0ED2 -70736D0B6F3DCA3B96EB036C21E0E9441CC7B4BAD4D1B3B34027D0475C482A4C -6AD17670E16B1D87078AB94D2C04F99CBB4C88E5F29327884BD673BDD841E8EE -B3A2E544B7882F589F9912D86828E0C39519932FDE205EDA6CC03904B253BC90 -2AD98C29F109D815BE900AB44C7BA1D6349313E03F9A9549FDB06A6C65DD2798 -EA07440AACD59AE91FBF7EF10E82EF3FB80E10CC515A992811CA5BCAE7A80EDE -30BDE900F0F49D8F47911274AC3FD41A5D83092FCC98B057BEF66030F9BF5773 -664AA821536B3D033C144CA1DB7CD7EE37965958093253061277A197449A80E8 -AED1C47D8BB3BF0560E24432F6A9FFCA3C468AB309C54F920C30FECF049BC75C -EA7415390EC30468A96C615F7529B5E2D96BA2313D48033C73162275AE4F3831 -8EB29A2FF205037EA4B6DDD1AE017ABF2DA3E4C6B8215FA1052120D7F2DA8BBF -81928CD22F10AC0B1DE254CF5443DE81F68EE6C19995ABB4F8716998C9AF78EF -DC1BE13139C6C9C595CC526974B1E0E4F6B4D552C6FB637D91D850E104939287 -888ADD077B7C05818AF7C70015292F2E968D4214BC5DD87767EDA36249E8C4CF -145E0C8CA3DAE43DB6EDA10ACCDE03608EBB63C2B39D6DC07DE2E5879A052DD7 -84E826A3E22E0B1155272196F4E7CC825259DF70FF0599D91599A8D61DCC4F02 -BA6A6BF9228EA07B8828CE3D5EE43340CA2497B058552A3ACCF499DFF3A8B9B9 -0448CBE07E0BB7389B3ABB578566E781A89AE8A2908823D2B5127EA0282E0E2B -E9BFDFFC7D529613F3E0D063EFE3D71F71A099F2AAD50BF776A2F0E544E13B7D -82E0BE0296556A3F76BA81751352E2D82DD0CCB4F577D7838E34B452B5C79B58 -A09592C169459BEBA283D98756960CE37A239769BCA22660A20418B1A298B0D8 -7755FE810321506D35FCE70E901966FE77816823E4D4B9C6503C90D6F31C6379 -2A4852AA61DC63F3593D66508A9EFB8F1432448F2FD45647271731E2886C4C74 -9EF477B9AE5363897243C931D34E3CE5BF7902F27B93FA5CCFF5D853A28A08BA -B17E3DDAA648F373F4EDDAE1DF25C80BEA3989C2A8D71A4B4B4E8A3C55904E56 -83C98EBB5EC3015647E59A24457B390E3311AC62A67DEBD25C7809F8B11DDF44 -77C7AC9A7080A2F138B214FFDD090D187DB668ADCDA7C2A5ADE94A4692C596B0 -42F4E7A90567544BAF65B302BBFDB55B442B624CF128876330CC2FB394E51EFB -8B0C596BDD60C03F16A6CDD89434110D7ED758F1519F1E8CF0989AB652939204 -17F40D3D7016399612610B56788C6D9257A54C9BF8C7943A6DB9B6990C0BF988 -FF38C97892288C509B71BB8DD20A69B8EB0BDBE05F8450F657B7D2173670E42C -AD48F174E44AD17C66B96DFBB9871AFC5E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A -9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F -B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D -42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED -F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328 -A2C69F817061D6C60B121EEE844CA5008F23DF072BF0D7F18704E61B72CF4BB3 -FFAA5C94360FBCB0C8A3E787A0764DD210BEB9C0700BF67F9E4547D3EFE2E963 -DB3361C6D12EEA4AB0B264E58F58AD2989F9E61809E05BAABF95DB92856B00C3 -A42F4FEEF820B494CF7DBD0478B0C7558A44A07760D2D720CF981D2310E0CAE4 -A4694A6C61BA763C2FA97C9014810E12947B67505849A2ADCF58FE617FEDC5B2 -0409F8A623AEF4FAA974B36323087ADBB35E2FC3DC103C122A89F4397C9D4910 -1447EC4264D16A1D3B2EEDD45601CDAE58118609C4031754CE96BCC7ECAE551D -A67B1945A6169B2D7EB8027D7AFD32724CCF5A9BD588501CAE4B4B06D66DCCDD -09F1C8E2DC6989C5AF32754AFB4DBCE1BB3E6973F0D609C07764840FF511C703 -DEA92E109270FE3FF2470B46E3C7FA05D38B35FD41A8D9A406B2135EB770BC5F -D3AE856816EDD07DF8CD38A95851EFE7C4D7DE4C6E7C3127B72BACC21508001E -F01E65262E70CDB7D3F106B92421A85AC2B4D02F17C85382A5C0242A86C462C8 -8FE99A7773916237432B06173A14390F3C1277B32B01D1417F8C40729721C440 -FCF27DDC902ECB3E6EAC143BC090FDCFE2D09338E796BB47084BD1F9ECE2A03F -9458F758AACB5DC6AB233A94046C3485CD959DB2FB3C735DD859756DE42CBFB9 -4ADDB636423227DC9E327A8BC04E18A4E213F97A21439B51D6F7AD53E00E3360 -9B684F7ABACDEDA3D9E13FA7A3CA427C9FF355BEECC32185CDB3FD66CA655476 -C5AEC04807CEE384B7760B32FC462B63F3903CCB61D3405A838B953D818207FA -DFD28E2676F0E81DDE81B090544EFCE14C9E910F0B75FE4A2DD7DEC0852F3483 -7FA5E3B9150AE4E923A8BCC4C14728FABEB25F4FF40941D890BE324A253C94F3 -2362E13EA623D1B0A557CA60085F643EB540F5D5538252A2BB2EBDE74D69C5DE -30413980FED6E36E5FD496CAA48A2EB59559C2B67A5031B1359F976C3A93C581 -323A87C330AB5D57D921451AFC3D9B6DEFF626362F693D35FCC01FCDB08D8362 -4400494D5A3E3BDD9CC92CB10B87B7A5B653CE676D5A7C33787EB4918AFB865E -0B60907E80F0CF61831922B8D60DFC8C54546DB77BB47260DEBD7180AE0094B4 -C9676DB9B615A221B78ECFD153E82A95B3862372E52A002B3B87883A976DD790 -DE770F0187BDAFDDEA94E1F09304B9610B046368FD282A565C01841539BBAB6E -0CAA657336E109E6D0E9EBAC95688B451BFC5CF96EA249E161835C7C0B448BDA -1F56601E64DE2850E584D9ED4405701CA6A831161F3729D9AA40F20F1E46AD71 -78C1C062FC247423763F2FBFE168B3BE3403068A8DF45174476E1BE943D0E0E4 -6346F28667ABEE6E7C085AE26CF9920421A1119478DD0AA168D5DB5EEFA8D8AB -0DB297C9C3F662E80B1BD052B3A14EDFBEAD038BBDFB46D444E9B437A1B20DC6 -478CD5EF4AAAB3C6E18C79DDACF6FC5B48A7CC07B65BCF1E7A4D8FF2766D20C7 -D11B24BDC0BFD004A445ABDD0873F5F70EED988B95C13175A09D7D264C5A118C -799C5524D3C3A21984DB6A6593CB362889DE14832FDEB8DFEE26417AFCD51BAE -0646AE739B89EB61A2C3D0957D7F9F3B029D4C07C9574116258EAE7FD7AF8A22 -AE2D8BD599EEC80454E4D76B20D702202CC1A6569536FFB7ABD239A8D704F358 -B6A15BE9C151C253F3CCC0C275CD1C65BB8E3C7C9AF78137DF3E929B52D2044C -5CB99AC03B97B2DDC7B279B8FFB90EA8DAF1E0FDF693173D68F6C845CFD7D3CF -4F6195206FA48B4DDCA81582E3AFE75DB2D5F61D4532F76439E475A322814E8E -73124685A72D2533E2F0B02A8C3FCC7B08E5F253D359518ABFC41C101FACE56F -235BA6264C1B93AECC3501E604653D531A5BB2FD7110CCAF1368103FBE7A0E2A -CE8284CC24A97E1F298ACCC818C1D57F44326B1B9D1017C5BA5DB2A4DCB6C6CC -E5070F89288B3238BCF1B22AB8D0D022F31F01B265CE4BACEE26B4BF194E2599 -EE4813F6EC743D99B505C48A3B56847D119E3320ADCA946EE2790A75FCC322CE -3C10E8E811F6F415BD9CA530B6BF20362A8F1B03E10A777AE13C4BC21992109B -E3AC5E1F6FE18C45541D659ACB30E4FB7A7CE95904B13E34F8B0870E0C46B36D -D21F8EF260B5F42631AF6F16C84E4644DFD43214EAB4B5B3E49E42C7FF0BB76D -D960A98A33E19F39229C388548BF8B29D5E7FFC8C825E990B05F5E73DAF598B4 -A6F432E2E561BF5A70343C281B94769147F1F6396572CAC91A966D4274036969 -5A798D31F3DC902D560F69DE5875FBF23F7171599082703470B136DF18542B2F -17FC7E05A0CED7A639BEA8CCEF18C01984296F6223A636D0A7AD31582DBFCB9E -8D7928ACD8909D5C5A6F4435440E9793FA44B8558180DC0FAC1E614AE57A43A0 -631B67111A83EE2D371C7A27FCEB6EB240437AE367EA86FB51809BDDA01C48AD -0069523E1402C621BDD5ADEDF65BCD9C81C692D0CE84DF447CC13321B0BAD067 -F647819FD5C54249F1236F65FEA5ABE6E6EA95223C86DE8637F15838D0476E44 -403B1C6BE53C695DABC1E53FD9975AE1F182072E8E9416FBD6671B72078FC9FE -CC873A9A5A1D6C6A58555198DB3F152458E0323884462E298BC2082C9B9A19F4 -D83471FC5FE12370DFA92C4CB302E0021E6C923AF1223F78BB8AC15B7E0B4865 -4A4308A91DDDA35B5DB146A639A8DC7993BC4FD4628595E171CCC9E86D5D9C9F -F262ECFF915D9EBBA8DC7B37AC7EA84DF32D20A5DDC38DB8A404FC46125DA0D8 -DF381968E20E4D83F82A2085295F54578935B7406D89537AA2D49AF226F5E56C -B68A4F3C8E8EED257D9D5382EBF22E804D30F3E432E35003C2F6DE3B38005A25 -C16D3EE8FE9E3D0D30246BC4A290CB412118012385847B8B9EAA0B25FAB1DEC5 -032F10432905831FD2A6C675BBDAE898013DA7ADB3424F53463BA9152900478E -4D30C60DAF7261FFE84018CB6E46EC1154F5366A01C6B23111F3B0C92748C465 -A1E4A87F178D08CCE973CE992358CD3C370F08E41866D256245D9892F8C4206A -11776DD7962EF1CA9F23375AF9E145DF48A8E946A131EEBBE01A09C343A42E68 -CD699FB2D1FF131A53CD39098CE4745D21542C5284150599AFD586664F489B7B -FD09DD26AB4ECD2A586A6EE003775825B03EB48535BF9F269CDDE3176257BE33 -A4D3DD9BE7D21C172983DEB9D49D3F2175FF4CF022D6AB7BE74A0FFB786C99CC -4B156ECA89E9BDD49681BEDBA7B709E615AFF02A94B52B9BD0ABFAD881F452E3 -14CF98CA52CBFEE585B7C5950EF4F4BA4829D05506A6C190A29366A9CA0F786D -ECD0C1D9681C84CAC80A5858F07B1F5BEB89187C5C056167313F4273F3A6AF47 -3475D6F9E3AF5C6A48FB4830513C53FFEBB0DC53F16567278CA466E3375D8F9B -D33B64E709AF02290E0B629E007D4DEEAEB14EA838CD46B42F110A63E948215C -EF76761CA3F76B6515BE32482064FC461A4E6099BDE1A9821C017A9807F44427 -1AE4E24E2B2D8DF884103D2E40463AD81522AA0D202AC683621815EAEA993CDF -5F3C4471A19F146CD16EE86E7B5248105CF1719AA4D7D496441D5B1DE1203F42 -E4D1BEEB9663F08AD606C74916BCE777102390D97A5A680B2DC89D326C29E2C3 -3BA742CDF846320658EE4350D8956732DC921B59FF8E7CC4C1E2546D11942E7E -1CA20D18E0644B892FD4928A77849EB2A45F4D57A741B419291B01105091876F -EFA08FBE2CEDA2E383AEE05AEF4F63637B4F668FFDBF8CB49B2914C80175F990 -FA464D5056AF8DC50BE186ADAB1B6244205FFC6288312C1DC9D275F44056FA54 -5D63CA10F36B9DA225E5E5EC5BB4C56C8AC48BC535BF44649775F39DC70551D5 -D62543FC74567B00AF661ABED55F60DF4601F7E40BB9AC934F3BC5F46BEC1D05 -0E60A9333721D6766E648E946F2DDF2C84C0769A0FB2CD2AD139C660FA5D3309 -4B8A7F8C89DC470BDB2FD061D5EBA36892F8ABCBF942F0DA98A1214123A33FB1 -826D9BCC7D5B2D72C13F368ECBE4BAE5AEB777DF1E3AD4838E4FA4FEC98C53A4 -36759792EB80CE02A481D2E78548D846A73DA829639315335D942D1824A0C14E -A3F341C7E154C0EB722EA580CF73A48344E426CDD9C8AB51C816ECCD838AF19B -3FE18ECC4E4AE623E2D6365375A2B4CA0C1924C329C373F9EE9154B8957E973D -C8ED76D593CEB747D14DDFD9848E3631E7DF58B63F5647CB784BA4E4D7031EF2 -ED633AF706D80D40CEFFA5F6837616DDED368C028AED8B82F1709AEBF49F83C9 -F17C6228C01450286FB2D09CDBD882D72CC6641CB3DFD423086474372B578F1A -1A5D2A1D73EA4961AB0CA2390103EEF0F9182E68960883F7A42F21D2EAC47A83 -C23A7D1AFB395C6AAEF8861941B88E0ACA7708B45FFA73BEFAC20C4C996CE158 -F821B92317D7EB6F29BC5CD86B0C09E652333A8C61C06F8EC5E60150E674DE7B -CBE2C53B383AD206392643666EA00B75692C021F8CCB06EE0F8E1EFE89406475 -B37D1918F9498CE5EA508350C16445CF4847AD0F7EAD1631AAFE4732D97340B1 -5BB068422F616235D83567E8B1672FF6BD5FBC937EB1B39F7EA0F75B58CF8650 -9077BEE8727B29BC997F848EF21FECD0F73976EE4AAE581FEB3A3F5039468734 -D3FD210B21D9395C5AC963CC3BF48F35077B0EA231A919793A83B7BF9E13C872 -D58E1D7F69FA55D59A62E599B691ADFD157D8FB98687354EE065F80AEE53F663 -0B36E1FFD265F531DA875C8B442317BCAD850C509E4B33BCCD6B0D8B36716AF6 -1098440B0083321FB21617FFECD31252B1A842E80D7A6A13B00D140AB62C1FAB -9BC468B1E1C7A8E8D33A0A51514E8694D9CD40EF862840ADD47817F6E5A420CC -7A62E2240372BF0DB84BBDCBEEDEFBC5F13492CF658C32EB8A245736B5BE2AF5 -64EC905BE5E43DFD2520BCF4DF21E78A502F9F295102135E01336ECE3748F34F -D62D3FA75A736F9075CBB5EFFAF8A4D96DE93DB5D22CD50CA13EBB8B109413A4 -7D5B058CD0F1E0AFCFA7664E654AFD23A9F5B589A39A55AA589FBB269D6C7094 -66A76A0617ABC3EE2155D97FC21E008F4FA1FF93B56545DEA5EB462F18B4FA3A -46862000BD435D3711E3D0D1592A73658CA8BB639F292ABDD5A38482CC2C0E63 -968274E3240E5DD94BD3C4B2547887ADF772EB3E538ACE571C4EA19264C8F603 -44229163C8FC78469A796693A4BCF7AC1A1597ADBFBC3EE9B73590B4AB18B78B -D733D42F645F35C55C8A7EEDBC41C86A589A6FED3FF61DA21AE2988C88C82E8D -AFF1D9114A5275F1CAAC537F2B09591AE0EE05789A2258074E78B972E0272D38 -8E63DE54E11C6CB7CA0451989F4B39E383497EA4858CB2250F274A4AB89FCB63 -E20919132A6F8C3385C82D140130CAFE944E1E6E7FC08890C516B5321860455E -06B0AF4AC14B67EC95C07AF8607E8636A55B25ABF7F9330A190B120BABDAC4C9 -FA44887F6A09540950259D08ECA47FE6BC792313EF78277117ED0AC4D9F29314 -E9C39B20514466DD88525776CFD1DB11C6B8EDC8FDB46BCDD7AC4F3DC3BC4246 -D694B47BB61477DFABC6CE6F5A61DC68C45F726E2D17C650923CF862B4B6244E -C36E5D17EC6AE3478A9BEC5DFC98E850D243FD0D44CA73027B21F775DB379834 -16D5AE9C43B87BFF505A0C3FD8FF7231ECA743CA3B463E16B1A18C9C5BE63B72 -9ABF9F5E28826846D8C0539162AEB4E04AEC7B22B8BF7F4A81C82BF0BC74E983 -76664B6E8F4066B8FD8D96FC4901520CD1DD892E44D79DE780E96D38E413EC77 -2EA5D2227554F78CFDCC64CF1B6D907F93EF16302D14B916C214B5176B72059E -0AD09E12E334BB8B4174B93F2799D5A2A33B1B202CA9D4F6F2B3C49A40148B5C -4E054C063B91023C509622543D9AE85FBC9C18168C698342113D3F5D920D2512 -890E80CAD0144C5C1B7E9866CE577EAB4274563845F9C16376E6282802CFD6FB -8D128FCD5B81BAFC426CA8A4AB7B1ED86244817E9E66E76957A6E7105830779D -8EF9A574B0A1160E82FF22FD6DE32C9521195E2673F22394FC10A0A41B6CF38B -83F761C37F8A5FB7972D601A8D2ADD31A36684BE1FD41A663AEB67FA7D55F7E1 -0C11138DAEF5D5DE5B561E7E68494795A4377312217F0BD449FDAEBE87F5FF19 -C182E77051F0BFA855D9486A8A46E3A6322D431EA26D09DD97B64304A840A108 -75ED6E2DB1D04C4FE95410F45D4B6766D693F628AC6A19781215F95FCDB64DD5 -940A2EB7F3BE84DB52D3FB5C6EC0DA30B4DDDAAB73DF3BD3AB6577B3D21A9A49 -5B35DC87C9B6F9EA1C6C2DBE16614007C497A4A8D4293D0671BBBAFAA839324B -40A88E025CB18FCD88B251393B7876674E5E135C9CBC465AA6F44E4328DDD673 -E89803C096F8D813488C2452BCB4693D421D264EE7ABA533EDD174F5945FED02 -05EA31AECC3AD98D9D35ACA0FD81B2799B838F6620FD591923755616F798A7F3 -250948FF574078E3D88D35C86E9372B828FA0FCE47ABA6A9732CF18BB6DD98B6 -39AA9E419E3A48A1F320AA6D74E525100009F6CAEA90883F7D512A11BF2AB33D -E31E7CF1A0D4517C97EC7F4CF9311F838C66D2437FB18E03BE19B4389D44CEDA -6C97E750C2946BD80E8F3ADDF19DA48CC2256D31146DFB59FF4B8F884188F97F -D1A34D31294203E9B477330CAAF6FFA6FE4A2590915584E6E45E8EF755723F7C -11A295C9083AB20C939025C458343CE0A8E4E7FFB215EBBEFF97C71534218106 -77751F5F614129CE3AFABB866B628A6CD1DA21F395488F21EEC48D83CC2CE36B -19374DCD1AC2FEA1844464D92529E151BE34A76AF6B50A1980964F5054E73DA3 -E22A42E1A3E1D7B501BEFBAA3B7491116E59C48C3AFB430EDF3CD9C06F734685 -9CD5188059D00823971FD6C273F8654BF353E70D56887E069CC3725062D44ABD -30AC225AD125A3E02C6CAE530B9066F5ECC76249A234EA522CF891FF78BDF1C2 -B6C8A66664EF80D4DDAC6045FB44C89C0E16446621ED80F1B53B63286B4AAB67 -F8109A8A09195FCA632DC938A867670459D01DB7C1ED84D1EB8688A9077C1DC8 -1D92BDDCF3FBBD5DF12DE34665C640E7E2B7B2DA898A5D3CA1E98ED040E5F17A -4F992482CB4EB2C173385EEA9613F047DCF6034DC3C6C65D5AE82E9AA428E4F9 -3BBAA247231880588D76ABAEF8895D9456B7BC8F5B03B2D37E9DE65A8D5A3AD7 -B19B0B964524378BB946DC1113882806E12FC96D247A6F776C1C836F349FD4D6 -29AFCEAA590BC6910866D509204480BDD0818E463E3CFD53251143956E9D4DD3 -FB361665C331E5FBABC6876CC4197994A19C598A66A1BC41669B7F6187FFB106 -4B4088A7E423A8A70DC81A148542434B72A56019E418660F569CEBED93C3C5E3 -B6D788656E48F02B27437894A9BEC382C43AE7B9ACCA33DA0E4358F923D3E863 -ECD6FC09E9BAD5BBFE3FEB3A64917DE451464A7AE5C6FB0A108744843F331548 -6E4D33725779D194D3905C669C6CE70801500F023031A085588ED8A4EA5AC9C9 -289C9C7F22790BAD61DF885B4B132A5BB4D820975791A4BA3BDDD439B897450B -62ED045EB02CE7EAEC5EFCDC31A4DB48EA6ED6516AED0A23AB27847FB4FBE15B -946060424CB44D9237BD397ECC0C3A4F8FC1EAE9052DC0DEF632FE56FFDEBC19 -9499627D77D093FE7C18590C33B27A26AEA5838861C8AD534EA82966EAA01CAA -5DB88CCA7DB8325BD9D234971804A05B74CA8818E862EBD057DBFEAF90296CC3 -4876DD8D3576668C734A0C04A38EBDE4A8F5DE04123045F3949657CB5AE8043A -FE2E7A46431F4F08F13118B70B70D36A929D2E108C4E7B584F47FBAB50485F01 -C716D06C086C5182709AA8E984DC2DC7B7032F716F562643F6448984117DCBE4 -19BE51DC5078C1E2BBC43EFBFA56C1EAD71DDC895C756B874F95B4E6D82BE3F1 -4AC455A739CD2FC0F11A592F9F7419E20C6B58AFE6D16FBB95194C9D915E23B6 -D1E37C6E717EB9C7E44ED92AC69DAA582A35DA8F1CC266213A610619638053E7 -1CDDF6E8205BA5EA84245B45AACFCA8DA38CA355F78F61C220E9821ADC9EE003 -E757FC78B10C7ED702D78917733C749248CACC1B60420701BE065FFB4F5110E0 -50C2E3583B88B1C41EAE3319BD6E9EA41E035310EBCD536259E39689688EA149 -1A4A5A65E18D475D39B1BADD3B7289E4EB8DDBF082ECFAC24CB27B385973D3D8 -6F80905DEA69CC08D01DB08E29AFDB91DA9356EDBA69362A5765906706503E52 -1F030DEE34E260AA0BE5D6A4B18BB69908B1D456717ED65D29A10B7E36287422 -97D646F9A4B13BDFA496092CE208D85317D9E285D5761DF1AA9CDE93E14FEE34 -F52294FC32A68F4FF57A50FE285AE15BEAF0D8275ECC0DB00FBC705B4E6D8F13 -7192ABADF1E56CB5B4B5DCB0E82DA1F5289C968B278817BFFF257A5A1D0D2ACF -71348D5647E23C3FC09759B15A84251DDC5E622F6D6D38BFCB8806441122C042 -DC532ED271873D092FC984594B2F13C7D2453C11577E7F0B668C74D02B48E80B -71711478BBC2B36A93D6F1B9E9537F791864A693270657FFD2AB8DFCCE310F44 -993CAA10EA460046B552B1F934380F52B156C360788CA777E16980421391BC6E -6807109FB94B60B02AB191ECF4D0C00086CCE6FD1066FEDA24DCBA42EA0F7324 -35077035C65BDC176CDCE2A3A5E0FC1AA45C98E9AED10E55EA9C4425FCDD68BB -26382544C02F19DE0DE10B70A36D7EF259EC5830FD4285B8453C96E4EDDFE93E -89DE0CA5F74398BD15A4B4E1F36940C8653DF7EA9CA04289BFE238CE13CDC3F0 -C708E1362A554F34DA43F02DBE134D2A4ED655353B36EA9382C446BFAC3966DF -DF3EFA9C83EA4CD8009FF847CF6BB9CD484699230ABE8C2E9FF0CC0E28C651EE -D4B8309215A896DDEF82858849B4BAF4511B2B0868E66DEDD013A5B6428A3BC0 -852E125699CEBCAEE540D33ECA9FE54A2E45A6DA8B3D088A93246E10F6726B36 -39F5DC7A5818C8D47CE987926EFFE187A58829AF8BF2A1873D3EC05A4C9EA19D -ADE89CF0140B4EFB141F4F793333D78CCCEA192F187ACE04E66F4359CC428A12 -294DB70D66015DD7BA3AA1E239B428DFA3703129FE3072C15EA05F0D81886B8A -650DE67F53AA71FA37DE5A2E8065B83BAD90B748DCD23D5C8E64429506D06486 -A1326D0D38F2E7709E9D6242D3402C492FBD6F3FD5F987855E4252C81578FF25 -09AB6D307C2EF28BF3CD2CB894E436F0F48C78FF4996AF5CF1796DAAB45ACA44 -6401F15583FD1364D93E16086BE6F5F028012BF40AFD272834A6B6B817C21A11 -D945AA63B5F1753A1E915BF2737A898F8675039980C0FEB6F49F275BAEE20F0E -50C6D0A277A812FC9EFC3D2B8D95ABA8ACC9EED925425C1294999F903AB97C41 -B8D24B3759C48E10EADFB6A10B094C6C75BA7EC8F5A419F655571469C7C35F16 -E305C4ABD27D224F8DE8EE9C29BA4DDF3570425B3C4E9C15A5597F4D90577ABC -0657FCECD379A87B2B5446BF37F5066FCC6445641205CAF2F118185035EBD7F3 -44790473C963AA8A09AE4E6057A9A0437EC413AA7ADD36BDC90588D45FE5A546 -8E01FCBA3341C1B043BBB927E46BD88915465C0A58B4EE7C89FA3681B4B4A5C0 -C846B87A1E622A45526AD3F0619AD099A75489061CCD9EC64D7F956BCBFF7E39 -4DACFC71137A7CC0A09B7BBB27D005C43AD315A5568B242BF14DD548CA242BFF -1FE379CC277163CA222A7523A98D72F15C1B9A876AEE07761C4C595F1B9C750A -47A837045A1CFEB63A19347CDFD03F7CFA6B4BAA5D6AEBEBF83A92F8498C1719 -C8A15C07DBDF3792E4B70B0DB2A36ACEC01201213487273FFC821D1CB1958DB9 -B5DA188355A37A06700D1B9662E80EF3EF6471983F07A84800F42AA43B51B92D -887E907978A16BB76923B1B0F3108A2410DE6F7EFD0F34A1AC2ACEE7965BD2AA -87890BFAB6634360C9D0FD27FF6A2FE990E9BBBD34B4B1465E9EA21A29F3AEA3 -DEC607A12017D1BC2B59AB8139C6F3C922594986EE82579BB7B74390A5524311 -E63ECFB0AEDBC8438CFA1795B3FEFEA2B061D796986F569A88B1D30B27370A91 -E616828F3C2002D8F26931484AD2FF04CE81637024140B5E64675D0EC1B6EB09 -0236AF5A255CC3DD41A6426CC71327C591E2E9C9EE3464A6078F4DA9ED524DBA -52F5544DEA75B09CB97FB4154140AD8AF5CD1BC131EF53EB202F7721E4ADC979 -7F24B9D83301D2434130966A200A15E9F2E337CBF6C170110B9E1B0FAAC3A909 -52FEE43343283A3EFD692FE99B23F088662A65ECF3E38D67B17260857D66DC32 -24A26A3028BF295E9EEBE65EE2058D2EE46D16C39D659513B5ABE0B00AA2570D -8C29C093D39397E43AC6D86F490B5526923251E907A30D33BD6F4649ECE13403 -AE9BC0FCFA0B48A661C2C9F5E269FD8872D41D7F840E1E1D29FD4C66B0FB9AA9 -7E71BF685BFFEFBA73B13CD84B89AA9EA3D8D7B9BBF7584CC128F87E26685C2D -0206A5ADFEE43330A9286606F91150EB6443AC9366AF006B18062651E79486DA -58E95BF80D1B0525290B38F35C7ED3B7E994814179FB694F527685FD5BBD04F7 -E7E149A353BA45E747E41A92FA077B1F370467F58BB16715C3A78719AF2F8596 -2120CACCA3A7478CCFC04AA738DBFF309A8F8F683834C509B8F0445E1112AD86 -654CABEB535237DB2BC801EBB214B0429D7B012539ACE55E4ECB9E5F97B5F756 -9CF667DB28FCDC6172CA2381F3B9D0C3A2B816CC176B2F0CCBBC63C9452CF3A9 -D99C6BC979A31DB822A10817A26FAC0A8E1D71A5A9245D699CFAB24FA4CDCC7E -1FB0549529443CD80D6A4E3C9713E6E3E96D3A5120811486119D527AAFBF80C5 -E60D57FBA90B4CA86A0337B6CA89E143AAF1E0E2B35C58C663CEB81B526C6753 -A343E79460CC93E4BF709C9DC8D07FD218F6D902B11E79DBD80B2A0DC92F311B -23491952C02EA4A4688B182C8ED18D73FC50CB51BF5F4E13668986D5A4F94361 -8643E4498831182B650428F35ECB122CA005BC25AC37DF254E1E8F4AEE756521 -CCF1A92CD8B3BEE176F72013A30CCF4B7B7A8CCAF662E14DC0E62C2F6AC92C76 -4104D14F1AC7FDEB969546A7360A4BDE4438E9A57346E6E265B02462F2035245 -8ECF4AAD5D20860DFF51A9A07986AC5D3CD850934BAB714BAEABFE55EABED01F -20969CFBCB7289D0B9D76D68EF71E174235A90CC7578853F2D7D5E0B1582E03C -C74B2A4883E6AA654E8511B7024A1FD3E2B61799DA126217CEB011B10D7D6C11 -C0BF15E5430CC7BA7E058F9F26D2A3754857194D0F3FDC1264BBCF71F79033A9 -BCBB748DEDD84685588A49B4EA41532F820A7571B59182883CC198A147846B69 -233D15CF4B549D6B245E756C03A2BFD615632BB3F297769074FCB60FF604D94E -D12BF8D1397365FD98162B6DC729AE87E48E3A659469DE489DF41D10D930AE4D -A95176660078C6E92B0484D99317D6DBFD9F57D2F8790C5F21AABCEE1CA32E82 -ED8528B4BE7C0B36C0166457D1EC4AD11AADCE9A2B93DF7A556300835D24FDD9 -8718017761E688143019C3CA12B824AE432AC3020CC8F33EB19818756D89E6AE -AFCA1B297DDAD4A44C1144B47C75F2B8AC9673EA32840E44CBA38720938B0FE7 -FAE2393813BC451C619A5EAC30941EFF26D350A2DD8D8C2F20EF2561347F63D7 -0063663174E0BFA9442C1E305D867AB3B04DCEEE4EB0222D969D0113630A389B -9E0ED0ABE1AB941EE468750A73A450C13A7A9180F85FF8EFB4C07D484CA86239 -48CF8DCB3BBF34A736143C76A68FD61BA00EE0EE26E279009AABCB6B89E17672 -46A6B430CA41905E6AB1C07176817FAD154CB2C387FBFAEE4857365713DBFDC8 -601DE7A087E882C4770ACBBBAE753050A505644EA683D5F9845F9E605A79D273 -54B5A5281B044AAEF8567A8053F64C323264F1FCA120243185D1B1B3A1389BEE -93DE4CA64E87C3E189A9DC27A97E9176C615A2103F2E16005516D514E9FF62B5 -B7D7F40780C575CB9B62F1D21EC27A50093AF2E33959B5D14620AA6A53B44546 -88430FB77A162661E674F15CE03BDF685ED240D017EC4B2FE604B5F77F814FDC -B784FFE08C20D600DA9C9EAC301134FEDF75548738361D5AA341929627D78623 -DBA90D28ADACEFF3DCEDBFADB6921AC74C557232406DFA4DFDF77ECDC8E32EB8 -F2842D69A8F62DDE785E523B7CFDC2B67C5F4973D18DE0CED95C83D697C8D301 -C4B17FDF27B025E2905916A7EC29D04D24377DADEA733B9072390CD408F9DD82 -188B0D0AC65837974D412F019ECD23B06CB9B5BE1CCC1D02E52B746E8866EF81 -5E413ED9E7802ED4F83D9514E14532DE66EA4781A1AB639B592BC45E01F1BD8D -57B04F846203C7DB307B0EABE05DB7A9D46E7A7AE8F479F67FF2FF720807073F -778A72912A4494CC5DF99A9354FC15D35762A4D618290E07BE3DD15FEF57B648 -469DEB6F68EE4CCEE383E6DBCAE383DF36BEDA983D64F96F8331D4F18C676ADB -B90AF8FFE65DC9DD7256295F3DC86B1224747D7F512F2E70EDBBD508A7B95572 -57DCFD87E9D11E6C75A128CE6E43256492EC706F918353AE151BD0A98F9F61E0 -8963C0BD35BDB5B779B4159F9F416204A49AA7AB3EB0792B68F76F5202A5570E -BDB37BE0217E02049F2EB32D78ECBA388777DB0908BAAC9387319323C5D770E8 -42E3A440CBF61DA204042C81DF09A19A3AE2B3FE0B054676BDBE060981EA43DB -70D1B4DAB2EEA7F57E0B5B258441FED8648DC76C9D45BC73F4468F6D74C2202F -6E7BA622714CD42C1BA0C432DCC12CF88BEF7E13EA2072D1A6DE289D0DA7A172 -E71B41BA1517A212490B523C9810F00028C26E725764E74C5045BFE8C771609D -39EF662CC1AC93B7C27C07B6C74765F5430E42D0951B7152212C7D19636FA1E1 -724374962937E1F8F1EB6AB3C22C4BE4FF078D0E806E447BF596539AA83FD3C3 -8FBC143B7AB753A53304BA99A9EDD252114C36F74F7EBA6DB5BA5F9401434594 -90723FEDD4F4CE5AD2197D15A58C9BEEFD53B15970E9B0D38BEB2F1D86D102AF -CB6ED6816B63BCC679D41A5BD2BDEA370CCF1B2BADE7DA131C3F522ABB4BB784 -7D2C2ECDFCD4599DDB3F56871964C78F9B728EBA981405AED5AC5835120F9E05 -968ACB81BA482F9B14F03C34797EA2FC95FC3ABE7CB4B2867C8FA151795501C1 -E5CC6EA09203A13FE15AE52290D6E51DE9269CABFAC52C982436A414382B23B7 -298DA8D8F18982EB73C808CF6A3BB764F2E65508D43E9ADC418F695C07652A90 -DC54CCB966A9AD8885495372F44E1BB7E740053956899977DDF4306A2D66101F -478FA66E945836E370007C76F78E64236DD8548BA0ABAAF765A67FDC2092EA14 -5FDA81245F71638D5E1FDA2FE161D1474C05B68EBC0D1D2D20E137E1027CF5A1 -2D28431548113EB174E39EBE8E91D3FB8C8ACAA44666DFA4D7AEE87C62C0DA41 -8B3D20ECDBE478992F46AC25E5195E66EE024953A384D2E135DC1FE1C0F156C0 -E7E51AA892B318A669E05AF68C0A04B1AA7841D18D0BDFE0A6FC282AF79559EE -26EFD68F54CE17E94E3AD936F6C2C47B9797A1955D57C6D2B4C07A24B93FE872 -D39E9ACA167D94F74797AE767A37844805C2106101E645B09299E55E046AF5E1 -26803DC77C0030286873FF9E0924643A4EC5FB2197E3414FE7CE9C3F777EDE32 -A971478BFD4EED1C5BA64EF8D4EB9D541DBFC5F5FFD6183D61E2041AE97F075D -2722E47431623EF660AD98FA0A51F4FFB491A7B061FDC49CB62361FC844C4E5C -3C711DF6B0FF7F37398D3EBF085130293AC2AB4CE499778D3F9F573978A59183 -9E8744A4E56A5F822975E23CBEB1173C8D4E65BEC16D3541012447F8E11CEE01 -E0D99080B548038BB1DAB748ACE65167A7AB80836BD9E975C8D54E61629F0C4F -2B5C9EC44D1E33E9AFCF18FCED32ED2FF05D57C3F0CD832977AF853295EF07FB -FAC4B11B6A7FCFEBB17C816692BAD1B899362DEEA7A5C7B9EAE1289699722F4B -937CE946C4807296AE5B6D26ADB3FFD22413FD9D5E48A891ABA9ED30FD0466C0 -01A1A70C7B473E9150EF916EFE10BF4972277F306BC2B157F37A7CA77D87B27B -304955FD53499C87E6A7B939FC9D0E8FB4713A44ECC6B2E083E22F892ED72D2B -8DF64599B06E036B9F3DB5437DDA50A2D53053CEF00E318AAC885C2BB9D50247 -CB4B2FE10662B95EE6AD6ABDD1B7CB7D6BC0AF21A9BD579EA0170EAF4966B7B0 -DAD62B5E7882611312C700357137244823CADB13C2C2109E7EA098DC2CA660F7 -AEF31FE02BD0CAF977379894B584BBFBD0C6E714D2A22649DE18C7548F0569B1 -D61886611074BBBCB25B1FEFA1E1C34F9A4CC41144C0B510B2EF5CF5B168E6E3 -B86FB914735F0D41D2FBDF3F3B387049B1817FD377B33A8B1AE656EFD1583E82 -C37785168CDA9EA75BDA2FFCE1BF88B207BDA78084A23AD5341E6D44B089B861 -CD6E5C88A480B9C9E93472A427A56088B88EAA89F9CA62B06C7969645B33D5D1 -C8C9014B937EC94B868195ACA03C8D47087D0723255042110AE4B5A51CCD1BAE -6166F2BC6A4CBEAF394D2CAD9F1C242E8434771B60A2BD54BAEF279F2CF2D9A2 -3AE9AF71A584D7C786A3C573BCF54AAB14486FA0468D5CA19BEC7DE00C243FFD -A7BEEABF47DED42EDFE7F293B020F7128CC1482F783D64032491BC28E92C0F3C -0F0AB8F42DBBAF6D412C186F54D6A1011845005792BF720DEB620DF80E848116 -AF3C58F48747A7B92D45A1C289CDE3A525359384DA67244F274D82C7F8F64C49 -A1C7A4864C8B8517BF079DDB9EC0E7294AE45CA1075A61FDA6751DBA228C8854 -9D7BBFEA52DB4096BCEEE12ECFC31601C13143C2CD677F94F04E7ACACC1BEB40 -431C7CB59DE746BD666B48B79667C52D0EBF40187EA22FE15088EF2025258A3C -7EDDB192A6C3FD9E34A25D9A8A1D13195791E21174427C4EFEAF9C0EE0FCD62F -57BFCFD98A47B34718123A2CF05430A3BDEB5A9577CA324FDC72965DE1EEB9E7 -789A1450A4B7B4E5DCF160382CE2F4AA85E2C93FCA029BFDC13C70B82415A2D8 -78FB15918C3A44DDAA1F6818CCE233347F200D9BEFA17C6852E36E4A1DEE578E -B7F01E275B15A1A477E1D7C694978B429A04FDA0D4FD32E05BE3D14CEE297C61 -829FFF8BD07DBF1377DC44D74436DFC31E4F0DBCC98BFC31A5D59E59ACCEFB98 -5F76B9FAE4BCA4A528B9751B359BBD690BC2B3FE4F879047F3CD9027E779E36E -7975A8C59A90834C7EEECB722CCC73B5468C33C8640C17DB4341E72767F55BB9 -E4C6DDCB93AFEBE6D920D880D0AF0383198299072CF0BBC75D0B9FBF97F06984 -4DD67EDA185DDE710ACC9004E817C3578BD4661B9A28FAEA62DA16C170F61D6F -B981FDBD84D7AC9603C5B6F3DAE2E492314BF215AFA4FF74A4A4EBC515A751B3 -54FCE4A1235CEFF1830BC0DD6730A8E7824D32A93FDB21C5EA75EE7FDBC39FB9 -4F0F03157AD8B0A84F67CE9EEE8147253B8E7C507AA1FEA7A7DEBFD5175A5CB9 -59BB43D51DBA989B897324779F984B41668309D3E859A2963E8CB6F00BEE09FE -CED145CCA0B2F9E7CAD30E93E1E350C16D8257D9B33C721EA1631738B003DF3B -2AAD97FDDA30F830ECA5F24C815B91BD7B90DBEDB6C158BA9A5A4F25C4AD2379 -086DDFCDB21BC644707DE9C059861E523FFB0DA223A9C28D984B6235BFADFBB9 -D5CD42CD84DEA69E0A93203A1ECAE1207CE30B3CF0B75BB080E342EAE41378AD -C6CF8E6F351580E579679DB5A69D8EC5FA4A5EA592BF80D5FA8194A3C23354D7 -C978A4146E615B4B21437EEEEB3F6F817A5B32725B1F4BC9D4053DBF01871D98 -1409D7958ADD446C43674F438CD5B7A1F42926BAA6F53DE5BD3BEE5CA9DC19C7 -425095C2CC000BDFB3995FB32027C2DE24FBE747C491245EECB2052DD0E1CCAE -AA6D2BDE412A6F814C6705FF8F94CA882CA79387A6DE480ABDEDDD7C44986AA4 -53EE1F4459F68A9769266808894DF12A97BEC1910B07D86463484A623C191772 -2F7CEC29E5595826FEE8C2325AEEC37A27BC979D6F3041D906EE350F42F06B40 -04FF44204C240FED34AF6575BCE2F86E856D9BB770A07419F31E5AE0F941809E -346078DBD00AC5796AF81590875147543F814AECC14AACC7975BDE011EAB58D2 -F59246A3628A1002779B6F617851F4DE2EDF54D26D2545C89B397C0FB6EC16DC -0A53BF1456DAEDF2B283581158716B706998D53E08FDA70EC0E45A131DF00EC7 -AE989628DDA4A123BCF8D833D08DDB97E095DDBDF315E7508B742EF900CAA415 -06DF3448532C694AB04B8B8A3526840978A2D3D378BA68953982BA6D8A1F5F58 -F42C420C8F4374318372E9F88CF2D41E79B2BF8D94ACEC628173BFDCE733B27B -E9A744AD5B2A606C0494110303F9C6AF32C130356503898839A8B897BB939CD5 -03D5E598EE6DF839BAAE13B3F18B093202B185A42787D90DAE9759248D1FF9AB -9E0A91BE943EB76270F87D708E50D6BDA6453C9E050B739B2079CEBBE51883EA -8C2AF740BDF3DEF20835F97737556D15845B7575FE12018D5C334E8DC2936AB2 -89684BE76A66D0B7CB4A4BF4550A7642292725B3B00F44A25BDCD695C73F2E5D -0BBC6B82A5AC3E429A967D9ABAC3BC81316CDADA5B14CC415A1F202D9983B4E4 -171482E30429793A6E83BC656F518AFC7359C249 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSS10 -%!PS-AdobeFont-1.1: CMSS10 1.0 -%%CreationDate: 1991 Aug 20 17:33:34 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMSS10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-61 -250 999 759}readonly def -/UniqueID 5000803 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9 -D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858 -D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723 -3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6 -0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348 -44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8 -46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13 -6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5 -6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3 -16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4 -1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED -286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872 -A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477 -713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C -3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE -3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5 -034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185 -9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A -12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA -901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68 -64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5 -A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0 -1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9 -342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007 -6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F -107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5 -C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102 -65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D -F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B -A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E -8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6 -44748E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -/UniqueID 5000768 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B -61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 -92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C -EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F -43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 -FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429 -DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD -3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A -7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7 -CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A -FDEADECE61CE2731FDDF7FCF2AEF7CC2B1EE7095F483C2597F66694FBD2AD81B -F68FF2E378BD8357CD1B60A1CEDA2DE760A98868ACB45CCC8CC2370FE267830F -B795058E0FB0EB3C625259C36BF9AD2EFB5C64A45797E18797CE1A2C0304CDE9 -9D88E11E878A721610EC57958C7E80A5E78226017A263288DEF5D335199E8F28 -787DF769550AD33E15342FC5E4751F8865AA66E78B8CD2388EC3618A619AD302 -5760E9F293085CB54BBBDD47C5ADC3F479E39A795541ED8CC921D1B41C9FB1CE -57B1340BB4BFAD1329EE4EF2DE599944404B7DF94C759037CBE96073FD77DAC9 -B140B4580EF178A84D0746276D6E667E26671117EE04102304F2F599A423A687 -53CD9E2B061D02D54EF56439E33AD985A84C1CA8F6666CF7746E0DB19A79F249 -AE1F7714AE5E1D6723C5D3AF86E6ADC9F2BEA6A62C3C03A67414A99FCCCFEB42 -4EE4BE9FC8A530F06879F46889624F7D704EFCB951C1DA1613D55D61D33F6213 -F12610A6F071E79918AC289EA5A3AA9049229902B646FE14E8D19DBE673E1D7C -76577E34ABE80ECF2F5D6E13CE0926F0C9B11F5E5D17EC5986042BA2AB6B1EE9 -B54CF450D616DA46373918953438A7BF83A5707CCCF26590A7EAD89B5D357947 -0B6F8BABCE6FC66BF2AF462C2CB99B5A68F1A2C237143FF92C2646B149EFE040 -41F97A52C48474684B9EDD0F3D0F3838AFFB70E7F7FF8CB8BDA06483F8DD04F8 -914B752F4C116BF243D31CBF9ACF04DA93BDE4B87D181C42111A2C90181E0A11 -9E87434F46801D6CFEB350467A78A899A70DC8E12CB2FCB376647F5A155A83C3 -77B72A0E058550E0F60C273A6320B331A6EA21B51F5B00B6A5271C331235A8D6 -FB9BAF99E4565B1461937DFF6818CCB8A8483BB54E58726C1DE836B9C4706491 -422F243DAFE6BE7369B09D87BC5CE3BC8085344D4C845A45AA9D915695F9BB8D -9B06CA358A3A330694E6D269BE179704DCEDE985C2D886B7B063AA7F521FC8B9 -E79876B9FC0EB9BA8441E3317316AFA050E3668411CE8134224945A30F2EA5B9 -A5DD581A67B9ED8497F91589B3D31D477D0D4E3F711003FD2269CD368D89C556 -E938F1DE5372BCDFEE4DC10FB320741A1E1BBA627868AB665DC58BF3F3EB6C65 -C492BB9DF8A66AB2DF79A69A13D0BFF6A0CF5BDF7DD67C3135550C57DCDC9FCE -8A2E4802BAEECBE8163D730616D7BD27380BA8F120DCACFA1FCD39AC538D0B74 -6A89102775A36A07A485371C6003849984EC9510E44FB64C7C48DD1D4EFCB466 -EAC4C05214A22D562AC26A4A12F285F5722AA8912988552EEF2AD37373AD005F -90CF5C1BB6F1F0EADF0DEBCD98578321BE27914957E36B33903866F84DB9E29A -0A2ACF23DDA2837A661EA5D79E573866546E6727D034374F2012CF2F9802C313 -3493D65D673A7C7F11B3CBBA5E228A1A1B7C0DFCECBEFA50F12823627F574B0C -52D3BFB446BA34DD9DBDAA8E8F2A340CE08BA4CB7B026962955A24D14C6D3689 -4764599FBD400348B160C47A2B7854905E65F68F77CC767919CC54B3ED08B176 -FD613F32A5FF09F38B5DE50ABCCE670B52FA2D52D89D5FF6FAEB9488C13B3D9C -47810A096C17CAC697CE51E8ADFB9ADAC0E4D7957E460A9681A9D9AA97448E89 -0DBAB82F55CF1F841AA057F40A8584A7C319A58803172D300C2D8689194E2C70 -FCE23E8A2BA569B30164898CDCDB8DC912C7A5E272C0390A1CC4B904A5C6D20C -19E4D238EFED56C9066E377FD2823B005C800760EF772BB40341192EC4518E3A -89E066BF7FA4BFE89F3194AA5D93458A05EE292473C072AB013F278909253677 -9EA061C1445F06277AB3ACAB37B71324F92F7516C6B900CE94D7ED439983B767 -AFD51B9DE8945067D8700CE394CCBB3C4600CA5EB01E26ED3FAE907B02CC6890 -4075216C6D9A53295FF319A282610EF6DF4A499E36D57E47527814BB30907191 -48F365D70E0BF52E3E0439E7D7893EA04C652B2481166A2ABC7B3268C2EDCA09 -DF7B1CD038358A34BE568262612A301690D560AC74D1F7A78F7614F490ACD793 -DF3617DBD88EAB3A7C026B3264CE901BF7EAD61073BA340DF216968C873B9B0D -51ABF6B3424A934E3693D3001AEBED738F678C2BC9AB3FC6100316342022B997 -942F51249B6B5AC9A6F444377FA13BD0B0A9696D292EA1D41E4653A01238D6AD -3F7AD5EFC20EFB36F3C197078FEC2B21072FA53F13A1EE408F11D5D828CC277F -22049560E3338525019063FC4E5263F9338A0E4622B43F3050B13BC20C42F594 -7B8FAD088B950246563570C1B668425EEE484234FFF966E6F378C444EAD0969C -BF579FAD5E0FD14B5DBF6394A2CAC132530DFCD8CE5E9EF92E44F05C1127711C -B11D2DB2A7B96138BE44C15B641FD23E0075DB095DF7C7F1097FE15FDD319620 -C3F26688ABD69B47C7A09D6CE33FAB572315585109B9E7D0B89ECDD142442813 -522021A39E9060CA6EA7344637BA301C3BA10FE6A68127BF92D1BB8033909EBB -5B908B6B06B826B5D5D885B7FE00CB023FDCB2A5D8921C4EEB33FFFC80F5FDA0 -4FC64F3F703892754538F101A171E51013FA71A7EC889F168DD2919C62E351D1 -60E1988EB9BD3731160CAF24718F655794D0713259A331D2559520ED7E807F4F -7E1A89EBB1879EB4F82C68457B9F0DC6EDB701B2C66C60BE28B0F2D01B82DE96 -A7DDECC89E2A898ADBE47865102414A43E9629B5999B445AF01A2FC5675366DA -7779581EC7A07B3550F7247C33A82CD5E3F06B69FF8D2CD4F1C49963ED55D935 -27DBCDA1E5010726030FF73D6C8127613C569D94E8D5AB09D7F362A845A5F191 -B7017CB62BFA6B9D179444F62C48A6A03E8FD80CEAE3E74B58AEFBC2B4467D63 -DB6A20083E260425FA8B18D10CEB6562E7AC0BE0238C26B274A709A2240D7F30 -03425C37E5D49B94B5A8F6EA8E69204BC861AF0FF7A33318D2DA78EE1C9C09D9 -A06DB0DD4F54C5E964D7197973F8988559FBB567B5B976A64A40B04B096C1E67 -CF3CA13989F0D05CB84BF89AB8B4ED727DDD60341DB653E77B7525774E799D53 -CC5E118246E2ED1429B48CF00861E0ED228CD9C08B71EA150CD8533FAC568DE4 -2C730F137F63EF879826F5D287C23D3DDA685D763C0360328FECDE0E29066ED3 -6905199F9B25FACA384242B9B92F29403B41BA0572B7C560D8FB637ED23C4A27 -70EB855315112FEB9456156E29B2EBBD941B9916EC6279E8B95775AB0A041CAF -229F53023EB05EB3BA05B1047764F740E22137CA261419605ED11BCC1D1177BD -0C169FD5FA3B9559FE63899101E19F1A537C8969A55D1D11C7362B199410572E -D7676047A5892CD4BDCDD96209E826B350959DA0FF5AC0B5AEE8E14974E60091 -E84202D0517BFAFFD838448E3BBDA0F7728D686340E931F538344FF2D0DB6545 -2AA66994D3C40662EA07DDC898B5879CD01A9504C91BB40F28123895F5B13163 -DC7FBD61534F3572E90F018068D14486C98506A9BEDD87C9C5D0A363B4ED4C3F -58F45A89E81BA4D5A412767A8DABA48EB7CA6A7EEFC8A28349C6E3E0745E9E21 -09E1961B1798FF0C50BD0CCC0D519D1D4C11143F129C4C410E26FAE00E27765A -5E3A0A6E3E79D141E49D36BD6B889BCDEA0906C941F19E2A09526C86759FFE86 -B42C664A8E4AB46077A8DFBEA0FC04820FF43C4C781D84A6AEB63B9AE50F29DD -E6C03CA2162CC138A77992F6925961E7C6BE9C00BB8736BA7A961BD6AC40A1DE -CB78C06D3AB1205DCEF285032B21F2635C5B78F002563F43B6A3E7EB03891D23 -93C48511DB6F7BF9A7318E3A15A4E57973C5697379C6B5DF55513FACE2EDEAC0 -24BAA5F924F93243A90C5A4FCF9B95DA1395EAA3864F9F1046D87149F53669B1 -553E6302E796726D95633493BE6521290F19041957F7AAE38C5CA40D2D9F4322 -A079EC97F2E11BF3D82D96C9AA2EAC4BDAD0F7D1AB7D63CC39CCE38EC3A68496 -249FFFF330576AED4C0747BFBFA159C3DABFF480AECACE538884ADCA8415D6F2 -E43409B5D32A22D5997D236F6508AB0766846E617E9D4DB90C4B477D368AD8B6 -F0E4D1A984D7BC69B4FE9A14F4A30884CDBE7038DF8DAE42028FD7DBC0F4ECFA -906E57F7DC4F0E6CE19C87423A750530F641316A9A2B5488E05BF37BEDF189E9 -2453BDD129DE584606F3E7570D82229DE9DB2C44C35C775C564465221CF19C5A -016BF94A9B738471EBD72D35434C75597A8ACE4402C43009A47C2FF7FB795502 -73DF6E685676105743A6FED0A43656E871C09FF1D6F35C50D4F03BCE04A8D3E7 -7D9754C186AA7C655FD6DCBA4206A4BB44F6ED39CA244A25DA66AC9460000BCA -2AA5AF0DB1895D6B3093DB4503F4AA4F04FAB3F368D7178D606D13707B1C4837 -B84813F681CDA82CEA6D126D4E569445C174488F1FE51F0F65A8F243B9817AA8 -8780DCA7993832A6D42F2658FAFFD693CD149BD956193087C7F8E5522F5E0D5B -0E64C00BE5CD1CE7E9013BF8DEA49773D7D5F5ACB75A0BF9839808B9A2C501F4 -0977BF56640764D855A272EF5204FCECBD1CEEC156FE04AE86AA644C1C460A9E -6DFCB417DDB7EC6759088B53D33890C88AAB82A5CE870AD347E9716F2E48856E -EF214ED9D2407246C69FE73EE9FCD682E8ED508454FBC00D68F1523560AA5357 -5B391524C09F29A95BDFB9EF4E824D08084707638B72CBD82B7116B211EF2472 -67BD7BABBC31F2D77B070962BB730FA666F8E0EE4C7BCAA4B5FF8E3033A5D36B -85AA043508E3C008574AF27603BA3CB5E9DD137462D025DD12E43CD90E12EC37 -F8597E07DD541B080410A052A499F6923C4E839515EE3A22D1A3CF78F5A0B0B4 -A92BA9C07BC55A80F6F207511AECE4F1179D2C3EAAB292A61FA53EA8E5D07FB3 -31A3AE227303D0E9B2BAEFD0C13525A83998996B2535C60E216A24DB9DAB7EDD -A8C15CBFA67AB439D66BB6F9ED168088982E19723EF291B07A805B41BEC5D47D -E9A26F6DD217EB8C7D241C60860950460FF5231D8A6062BA56EB670EA4C72FB7 -E2126C4C928C617FBAA138D9FA5F854E3BEEAA46431395EEF6C778538B2A2B15 -332653EAEE473DC3DD584C4921312354059620D28AAEC8A2BC3371560E0E1646 -F45FEF7E3B9A36F6289257A84EA4C21DFF2B77EE7A87ED896654BEB9997B5B57 -96909E8D6CFCD68E915350AEAF992EC493720194C7427EB9981CDB1C1167D0DF -980D7D0103ABE4DA122C9AC7EE5C9D21B3BA6F07D533D027DDB27B2E94CF78F2 -334D8A32B056B265348CB93605E6420F5A034C068A44DA2FBCE8CD4A9072A763 -BEC1EC0361AA7DED64EFE9DE89F1B756CD2EAF4212B8E13007317BE98D76844D -17F3D97E097D15F78DCD4C019A5240EE4D7441F189080008BD44F8B25B8305E6 -3C88EA20DD76FC84F1764758199EFBAA5266E94E4E57CB948E92B71ECA0A0A08 -5434C117BBEF6CB1F49869D7B8AC2306E9F8595C16342B56C44C7DCA580A4337 -14FF312150DCB985799C3F63BEA42DE542DF70B511C69BC4AACDA78E382E2940 -FEF26C86A3966A7396EE6E6FEA3F562BC5FCA00500CB13EA2E18A641A292D726 -85065BE32C6904E890325F1928F10AA1756733048E0D602DD235C1E4EED92EDB -EE67DE5C7C0C8E3C7922B13FCC2D2F7AB3AD0F56AACC6AE4C02676DC22D22796 -B516DBB64F057EF1FDC41688F382C851526AA4A2DD70A3ED78057B2BF52E2C6E -29E6E96C7147EFFA374A2494278F83B6CE9B1C05CE8336E0AECF2008AA87F360 -AA3757C833E7FCED0326DC1FB497E06C5358EF2402A51A20B3D627B572F1895E -6AB9056AD0E31CB3C0F2C7C9749B316F4B3A83C345027069538F7F5E4EE52CD1 -562A513CE29D4759FCB9975AAC77FF01BE1E01E7F7647066000286A0460DD391 -64A56FA9D33E7DBDF17C4EFF5679C6E4BEF46B082936A109E4F2D7138BB33DFD -A9DAB21CCE25671F080B7A0CE6B062FFAE40752839907C2642A470F0A598247C -B42C6AB354F7ADBA87BFF9FDCCF2C270913DFDDC1EA456CF2CF1D62B3D4AB16B -B02E4B2BA43C971383630F5E9CA0D85689970ABA81E8305B625ECCFF4FE4D4F7 -815C5CE45FA8F803FE4D2DD336808CE966BF96317D4C0FC700095F3F94F3EA3E -54932AB5A4E57410B67FBA060AB911BB3239393A077ACDE5CCA16B582351AAE5 -3789DB7FC83A8C6FF2F2224821260E99A8BF848CEFA564FBDCD0C1FB549F474F -CF9FDB885A093F5D4F613BE7B2F624E490206CF14B9BCC062FB0BC2549CAA7AE -F85E0A5D1E691ED8A39508429160A94C61B3F69D31A637A1A8D4E1B3F76D202C -FFF3E48DCC6E910E93CB3BA5CB7FD50DAE366A38210EC81B064D911CE3D774B2 -1B34BCBAE1DF62B691BB23FEC5713581963D9216FDC154BB7FA69DA43B670A4C -A07CE43720FDAD1C5A2A70C1FACF13A9A4D45774EAD64F05FC65D320600E6F2C -314FC1EC7ECD2F06FFB6C40354FF8626B3725E6065859C0CAEEB1B66A549F2D0 -22ADCF868F01ADB7637A8F017F7C47314C4376EB5302AC8E8AACE80198ACC40A -3E16667DDA6ECDB5C1A6A12C8F3BCA5055169CE8C97EEE88040D0170F990E079 -FAA40AAF22AB403C56880B3D96F479A279CAC23B85F06FB0C66F9A3939EB6207 -283B792C0D8E6C26D5DD776D22ECB84A13CC6A154E6F8DF5D0D6A1963F296ABD -93368F196BCD9EB6E6220B75045353EDE59520C62D5B559B125494C6D01E53C2 -ABD344CEEA46FF3BDC54693E6B031DF6F995EAF42899873D2BF37EFB19C5E764 -ADE116F77D9C81BB107ABB3392C28575C763CDF9E247504DFCA8E50F91C94811 -2F28E5B3F2241902226A556013CB1EFF74495C6639DCEA60A89946450979572A -FCEC6C00226F1EBAFD7EB469A66074DF0DF24A420A7C2347A818EC2671DA5238 -5B4B5656AE50B5260326A868E15EE7C21F44807FE05300BA7B8201FAE5BAD485 -7DA3EF7D1ACF5ADB5963FFB43F9936F1FA4E92D05705AFEA26D074014A039F6B -F06E017F4D51E8E99005FF4EDCB58F60BF0A6C9BC4E93B8912BA0AB4390A3458 -BB81CA7FAD0DD5131EAB9E807B840EF026020676407603D085E8F89D932AB04A -4200FA0D7B11EBBB84D4E6D80913CE3A600BC11BB7F69547B356B511B0EBE0CC -B36B9030C97B9CEC7A58BA6FF38290DFA6412BECB8A810FA1E34C1D024A3A530 -E584D95A9BB13E55945B7D9334DEDB96CEF3BD13D6C57D2BE38352EA19D4C609 -F798DC6E38ED7B1B43CEF5DFBBC1BD6AAE7C48B47F2542AD54C6D6C3FEF007FE -66E43BE6375661AE84EBEC54AB20D37869CF9E1DB9A49C12B6D943F462BF7808 -DE6FE0DFD0E5374E68C17E00718E8B1C2E8EAC22D9974F98F485745C5534146E -B6E1F782813D33C856383A1D65 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27A350233112B0A339366B7373CE058456E0E1F -139936F6CC9B50441C2F5994977426AD7DC8C717E737F8C201EA55AD94908336 -FFE9568C0E6EF3202D8CD7B7A6CC203EC601F9A7E2A4395ABA3406503DECAC56 -B03219CEBD0E465EA0F635F26D984F5942E4FB186AB874F3E74CC2F2E378BD83 -57CD1B63C9DE9963587B7457D56024D95645ADE0D95DEA748A6ECC6809C2A7E8 -6A568F83BFB184B31349A771DD72ED3FFE8D16E3138EC49EC6D7524E611331C6 -DB2E16059C9A12512C7208E3B30F04273E20BAF41EF8C96BA4B17F31572BDD15 -3FB7D15CE31684D721083208D7698A31D07160927C9A7CF8B7EBE81A83C0BD46 -9CA06245FDA37F0F2DF7948A20D121660A73E079F4ABDD8F90367BDBBA323957 -062438FF3B28A3880380CDC76A055096D30FABA4AECAF238ABC2513F089A6C4D -67EA0050A34F5DBE5FE32D9E75E67F4C87AD8115DBFC00124DB4D3F4CB62CA02 -59BFE46E90DE9ED306D6CDC51005C233BD39F41B264E2892AD23E8F93C8C61A0 -B5C5CC1021411DAB515039DCAC06E1FAEFA259E6AB07135CBB345E90E2BD64AE -37B9A46934BEB383D3AB1787A2656FCCEA6467ECC2582807E7DED181C53829A7 -1818C3FB17567D81D1A833E0559798D06163781D7895C31B1D81CC439AD51CA0 -5E33E96253064B684F3261EF86AA8452B32E9C5907153BBD692BF8BD4AC45E3D -7161488C716CEFAA695877B03781F64840D49C9C1BCE9D5E759BF1812712F2EE -054A34F2153AD6C953E795B6F40AFAB115C5FCDD1864A85C1AEF5DAF40337068 -08730BA7AC580213881F8AF1F76FC830EC76BE4CE6E090A1F91618595AB6D1FB -A885D04A4E73C9C7A923D813275810DD2B2A3AB4FAE4BDA24FC170A4BCF46E05 -572529A19B09E5ADEAADD071EAC20C5DA884C7D414F5AC5206E87E53989B7378 -BADCEEC6FCDD4B4EA03EA994FDF6A80A2E232B1A007B7554471FC1DA24901896 -9CA84283A02FA1D9176026BC1529147F19D07521A4997B70258FFC03821EED0C -D44BC9C2E67C3CD9971954C58BF1775D61115B75E26AFCC3B7CE6E5ECB8CCDFB -640DE440334737D63F539385F83BBF603B631AB2F750DBAE707F5D008591A05E -9D532C165FA35B580D690138463047F77F10FD4FDC8F724367545C0F5B6AF978 -B6AFA49624EC2AEBCB2D19E9652CC74B66289E42A8FC4A694F13626C3CA05926 -C1369F80FF1114F0EB03CFA40C37B2327992DD0CC598F10BD9D1483080CF33C1 -02DE0CA7BC38424C3438B4CDBEE66793A2480A15BF47F2FC621E66CC563F5052 -491ECDD9C38BE1966161403BC22BA41CB3FF9E90A70A99205ECC558C928F2FE6 -5EA5203977100FD3ABE953E7E5BA57AE0700E33A0ECB6FC6953C9029B25D61C5 -F57323AEA10B43D5A46C6F248F021E096E02AD7EB00923B0229336369EC82FE1 -F1C198456B9982956549CC441B859501FAA0CE507A8B131F10BC99B060B8113C -2DB536DE8485DF33F1BDF4FCD571098CC6FC6B2A828D8478991B354B2309E31D -0DAE3E8FAA0189B3C1E8208FC4C31FBF64689BF81BE39FFC2E680246BCFE4448 -8FFF4C7522CC12B622EE7982E0F52863B97965AC2CB74444618C691975D758E5 -53878C44180D2BCAC4CDFF06D1F109FF858198CD225C7F9BCE564D861394730B -9A47876CDAA300EBAA793BDD2881D6D0A66D3727C871D97F199FAF1CA45425BF -5B4A161F8C1408A20FFAEAD31141B18ADE6D229F57CE29E92DF9FD553274CDE4 -28E94100A930CD8F41F9BF6285743EC5DFC9BADB196021E045BA231B0DFFC8E7 -3EB7B7BC8F641CF337FE57D17BCD02C4980FF1A649EE62D2445C28033355500F -B460C58BF63DE130BA82909404613348149F01DA396AF06195B4F42D402F22A3 -708DAB87F85EA515B743CB94D464F1C980F0BEC03EC7E34911F288459B59B672 -9474C93CB8A8A016ED52201F4E43830FF8ECFD652924BDA223DA5E2B2D6C057E -C8E558872D762C0EA343657A627FEB5F492114D38ECA96B14AACAA7EDD85B562 -EA087D768A96507C1E814574B08442C49EA2AF4DD67C322C3D8DD4686632067F -01E7E62E8486C163A39C28F7070318FE91167D148265BBAE808916900F0B45FC -C106F3CB047BE800BF442A75BCFEB94E7DC7E317845097A30F1D2686439BE077 -741A968F3D4C5927030192D52CF2536D4F7489323EAB74EFADEAE1FE3F887925 -8E106352FA0ED99EBC97D693D287AD29E57FD1AA6A9EC121041636311364FCDF -045E969FFB7761D0EDED38DB4477DA4CEB05758B314CA631E704AEA1827B3A3B -8CF8B4785147426AC7F85D15760C964305EC631B21F6280E31DED8549F100B89 -918D6A48BCA74FE4EF45A6E4F9B694C2324B1E700256B84B7DDA3C18EF854626 -DC54291003BB1108B99C1E730C8E562830E12A561F1C292B1EBF809EBC2558DB -71F8949C9B435513BF01AB86D7A7989287D028AC882A98B56EEBC95582D054D8 -21BBD6D4AE1483616321E1C148699B82B3343C2D63BAC0BD2910E0EE97ABE442 -0EE6003D124D45E4CE75C995BF7A75AABC96B9617EDD5ED91C69FA3928F93325 -D7E354E81F8F63E25AFBA8044D95FE560D74DF51FD00F8803E5C257D380A3CE9 -6F2824EE3C538B1CCD59B4BE7DA742200FCFAD187722EECDF8FFCB59C8306AA0 -FEE3C0689093FFF1FD393D24F1B1A6F0A5CC523AB1DC5A34C768B6FDE57F756A -DEEFB6ACC7DC990C0EA07872B9364D2D024B2D56DFB4103242184E0DFA8E2A24 -A6C5F4DDFB1A3F86A508DC15AE85B1C5A8416175B5F1FF33B4CB70FFA6701D5D -D3EE3294391DB669C03DAC462C501555E031AA6E7F221DAA99999E87B2C345CB -2350D7F62242635E55D926FECAF4CFD3B55266BC86722AB631771BFDE91AB7D1 -B55C8651BDCA3BBE77D49E26E8A7B56478068613FB132521C4C800CA93A93CC2 -601D4869ABF79EAEC353363F6A8E7005831B925323D7370B1EDA9CB91626E452 -35E961B3DCEFFA27D8D0092DD911951D4EC48F9BCBF4F19E6DFF6831B5755BF3 -A593FA1314455C1923E8A8DEABC87A93CB4CD22E1CACA7C4A4F6172F7DA6B6A6 -D07E45DA2FCF16C67D730EC221E3E3217CB907756C5783DB363E775598FF8342 -70EB36BD2307E359A7A10DB2FDA8BA18264B7C7159FD6B1C568DCBC67FE75AB1 -A1751BDB4246A135AF6646044E7EA3BE868DC2B2643395129034B14DF42F4B77 -D513EDA2E438DBAEB147CA6F41256048DC034680E91CC5B6B800FA42F0857911 -82790F473119BF368D5A49257D66C665563406265A47661D560329BC4CAEC9E0 -775695224BDD347A896E0A41163D548B8DD7018DF368E3E6FE364DDAAC020B88 -20A6C218CF0D40B300B166B3125D81BCF6C04F43EC7F1C1E3522C7D119473F03 -266547389DAAB843F9AD52D94F12BD620763FD8C13B0C43B29E40373CC86E9A7 -D83F222E5B2448BFB419B3BA7ED209B30485C78F7E0C6C48212B8418B14FC2BD -F4C928C7699F67D6CCA3DA7462D3744280578250E7E6728781DFF9CE34B5403B -07030E9C4B2E69D4309823DE0CE13EE758834416F9DD6F90B8DDECA1C7603DBF -62058D4E768DC18AB628815C30F59CADA4D5BDE8B40F1A59C3CAE107D1696823 -C3AE4393AD8BD1C5AE24AEB00D2D2CE88762D31AB2B1A1D462037F2F1B3B48DB -57298490CF0C4EF23C342152265F86E3A0BA147E3700DC3E889475548A24C577 -D11399C971DC4CB8C122066D20B1FD862CCC440C6D9F9C0D91267CEBC252C67B -A6C7E545DDE69BBA4F5407ED30A8EE165E05E78FFD7632AB5641D76A41C6AF36 -1497E6A3A7D86C4C0D3B4916F044CEBEFF2EB0514F4CF9FB967CA2C1E3676A96 -D30B2CADFF05C328B68914FB584EA5F41A66AE4BCC94D9A0E3006F82A9B90EF1 -00D1519240D0A1E0810B0B061841A49143FD0EC4B14BE095EFF5BF06F2BF4226 -0635EE011E3F05E80838EF86B6F1F183F578873813A6AEA87428BED4A3AAC9E3 -5DD0FE857FC76936B979D12973A5823E75E0A8731AD914B666D8DAE2C8199E56 -0E236D47F36549AEAC1A74951D43A453ADD5154A937EC9CDCAF9D3728406596B -6EA7C1AE4CB09854B52523D6788BAB7AB1CE4389A811E4E8451E3695AC9D336D -B51E9E493E65628FBFD51D6DA8227AD05BF2C4A15076A51A3B83D9975018BBF2 -B3CB2EBC72B9E577C740CC64854635C7637DA157F697EE3EE1FB4E5657CA602A -842AC29523B20BFCB1850C5B329DFC307A17498FF4C0D1050E4A0B72B1B7063D -9E651B9C33C732DEEA4B858E8CBD2B7F507A42323F0F625AB5322DC866E06197 -C3F761F22576CD6C228FF69E54BB1D9B054C6B8BE3C60430A69C2609A32EDEB1 -BC2B1AD00BE0D32E32A66D19E590BC8FE6245782387EAB2E2C55660A3DDF63C2 -A18EEBDA448A6CA3E3AFE4E562A7AA0DA87C31DBC83F208E7D8382E64082A4C3 -EEFD83068DE6DA96F90E3553BD664314FAC4A6BCCA6E520A5D0D9BB4511389B4 -E3E3ACA3F51D47B62F11D8B80A7C75299196F525F9582F33B295CCFCEED4A27A -601CD8052C9BAE30A11BCFF10E426498D23A0E0584C0D171DFA3D52696A1B866 -10413FA62745A826988BFFF1D543271A4DF7AE242A7BCFE154FECCB63247E5B0 -12F45E0DABE15654E160747A4882CEDF036AF7F3A69F11904B8D4E7FB7CD5801 -3A407C9281685669EDECCF91BA3B25AB55AC8E7AD12C9D26839DC9F698C1A854 -2CF430F2B625D3E629D865A013369573A36B89D6A76133E667F952923C387660 -E2B8BB1B09CD385A33CE8DE5208A7A9B404B845DCF9B1872AFB734DCB5E72BF6 -655FBE94E54E6994C4D5FA652D7CAFB00DFFC85475DFD7D8CA078581985DB551 -531482FBBED61652E862F84CAC42C4D786F274DEA28CB8058EE64CB3DBA19940 -8E9ADF1306E971AC8ED60F42268548D16339DCCF0FCB2A52D70241D531469CDD -F306E350EEBC4610B237B93E9D4385D1414B30812C41FB899A5D16ADF8DC4081 -1F207C8CAAE4D39B99E9386C5AAADBDE232E8B751811C971126DF8229D802153 -5DB62D286DADFC847D98AAB73B159F61F6F1BBA9D4E18C71D982436294178EDB -9D3E2C3394F824B1A67B381224AC2B126DC07F9D1FB1FEB55E4E1698130584E6 -EC789847090AC359A465C33889FD6770BE79EAB44A489BE86DC210C61167CACF -328BCC50EDED458A10EC0C0EC907A808B902B92ACABE442C8D17503980929F06 -0EF04CEB2828302E9EAEA75B43A142A791508D1C3576B0F0584AF2064BDE04D5 -4B2A98DD648974BB712F4D4FA0C3E3F247355709CA187F2E22808847E5BFC0C5 -A2D2F6B53340A943379D26BF95AD0E771FDEE47E88299FBA70EEEA09B5CAE91F -3920F5E3DF158B31E60971DAED8211FE21CB82609B581A20DD60D738C186A8F2 -AD2F826A9031831BD1B510A11BE5C61D683922957A8D909773AE1EC6CA3E615C -21AC4ACDC6FABCC1DE0007D16F137B2698D92C312D5913D35BB703A678425D42 -E4E4923C3D6B844682219916B33163CE6D87EFD43ECCEF7BEDD597401FA75A70 -A3D902BF4D8716FF47E5D7B1587ADF4EE2F8718BD6EE9A3FA58460E875AD7E78 -45C2F49981B3E4DDAF2A0E5463BD845A2B7F65A4A7F58B78194AE04F58FE53E1 -6F8029DBFF18E1B52BDA098793EF741C1E4A705A158E47FEF0B7F7DEFB9C9C3B -1A0B82DF66E71AD34E0F0A0AEF314E6040902ABA0822A44B2040156EC942A78B -60E26257686A1C15873986DE3BCFED2A5AED392F9470991040D5147951C84D34 -715E767FC6D1BD855C6FFFFC9B8E0F21303AC01D15E21024CD2936D8BB054E54 -11303C2A225999ACE40F838B36DBC92791AD97112408409FDE74D7CE35B206FF -29C9FB23F71D5D65B2E8961A006B04B81836430E0FF3986EF0DFAAF222DEE50D -D39EF1CD8AEDCC1E7BCDE93D0BEADBDA95781F67E5AD523DCD2404B89ADB12C2 -54519D2627D577B7BCCB6E9D8A2DC4AB0C9F2FF27EFC6BF14F0E187860719120 -A9F604B57AB0473B695038883A6138727F1E093C1DC8848EE2B6B7AB3375E2C2 -4F9666D60D376AF5EC01F409FD3EEE13B0C67A31DC55A2C3C0C9E7B6AD07FFBB -1D91E809AA64890EEDBF695D161FC4F51EB72514E575DBDEFEA70867508B1E19 -8DA5D6FA85F0B1E544D4A3A2F430CCCD13077D9E46DF94AED300DC90F196AEFA -212E5D45C17285E2D13A44E524243A668A23A6C97BC7B6F68321CD4837618CA0 -3D1FBF8EC7C61EE2569A16357D23011C2273B7224C03BB5D1D1767D04B11AED4 -9B0F2157E84576AB864EFF097A6171529E0E6ADB1F42139C91C4CEFA543C06BF -C5D1B3DDA23822234BF0E898D46CBD9A316101E411389856CA6504AB7C1DF7A3 -8602E41303C4E967EEB54D56BEAF159BE060557C9DD0116D88D6B2430DFAF48C -DE6868A6D74A2DE94052E1B44F0CAA0B88469B0E4E778250EA1F121ADD0D0899 -7C88B17A3E719643F9E1E18F781DDA306190BC8725156AA13DE6B589C55B4218 -6E03A3E33B7C31156859DA3070035BBD6B7FC2FBE3DCB9E946895B633754FD2E -CB0919F53655C852FC66C25C83511FE4D11BBA1948EC094FE024234B43FA4161 -D6D7B6917C423D80FEEFD12B32C50F45C46643DBEB2756BB3639ADDB4A628FBF -A08381FDA81E9004DE04644BAC33AC06CC46DEA3B61785F3F7AB20EB09AD90BF -5C522512C09AF7B9B64D2FCB88D297C9113302D601778F4A40502208BDFB6237 -0A58517F03F4EB24ACAEBACFED72DB99C6F09B1A9B52C072A5B4573A0A327A90 -98A10BAB75124A00B8CE0AEEF29A6EB6423B02BE542D9CF5C1C2583AB23B949E -E7F60F643EE1DE8F9EF5A4EE1851970565CC391B1849BFD1CD5CC99E949E3C69 -986292D09396DB57FE068AF5E1FB61A7C2B8C6044EDDF17F8C5B2DB9ADAD93FE -38618487018274733019813027AB1C43D778F02EB94B09FCA7F3E21C566CCF63 -3172A02827FA8056D59E26C74EEFB7B651EDE7C74EF43D205941A58DE5F5ABC1 -0DAB2E0AD8617CA26CA9902DF93AFD42C4DF308D8DECEADB384A913358B0F279 -766F18E6F9C94EAF754C74F2180C61417899EE7C01B52E5EE873AA1EFFCC0DD2 -B58D93E68C4AA4111E7964E82FF7D18A67A14FD181AEE2E12C400E6BE3DAD5F1 -33B0DFD95227F3BAB381813D9E76BE7266A13A7B0DF06BEF237B40B5DC81B5D7 -C601FDFD07965FBA6A51D65DEA26CC0652F149BA86BD366AB2A510CD5DE9B163 -7601EB4273B0703D5ADA2126FA5472CD4FCEE99AF2A7AFB79810433DC93D025A -9CDA1E3D431FA18BBEAB333A510083A1F76A718723D43635826B51868CC0C85E -F16A2A7AF39FA6693A605A65DF42851C444F61CA38E073412AC89E7324997AD0 -2B709EFE96F05B0FC60C4A3C804AF6D2A6C0EEF850728CA7DD5419DF8BF1C324 -4DF2DB944A683FECDA2B29AB564FE6F659037FC499F1D6FB7A6374C5C336C8C7 -4591354CB1E6AF135261AA3222FA156E6128F3EADD591030F59B3D1F0619B506 -498CC2EFA72C35E88EF37DCBC6CEDF837C522E88A5652F947C5407D8FBAF2448 -EAA1F4C03A8A0C173946415FC06B4604F77952C5913E4263B741CD9B1512912B -0CF9D89F82133719BF9D48C7127BDFAB0B2801134127C23F84F8AC313E23F91E -2D357B97A35985B1815E50B645B60A837D530E8AC939EFFD5B336659BECA5F2D -F45CAAAF2BFC57BECAA1A80156CBB1D82FE32639981412B4798501A1404F8458 -0FB53F483971A364D4E4390EA18575885E29ED8C391827AFAD7126C1A7A43E9E -2998941601EA863F89ED0CD76DE298D594D167DD4C11C161D54C804E8AFD78A6 -6C5A1AFC0C939DFF1659C4853CEED6F1BBD689465EAFAA059AA41CF4226C7691 -71854745CE754500AEF5C77F1DBA47C84C62DDB4F8FBD127C29483189EE00F67 -19F601A4C0A61BE1ED927F76A8EB787D7EE62E292CD2AFB1D4396A5338AA16A5 -463B0C8CBE73FE4BBCD4517A4385A77971457C554FBD6DEBF75F696DEEA34C2F -92C01471638D82ECAAF13DFB18896EB5E3D52A5F10E22CEE6542F7DA10E58D89 -CEE3ABADE7721C75B83CDF45EBDCDD258154628DFDF883410DDF7792EF5BF4F2 -27F56501B7910D6D39AD509A4F3163D783E941AAE24579B3AEC898F21DDA9016 -FEB7D49022E004AB49558C877C3133754BE99A3C81177D6517B0668189B55581 -49AA091B3D6E3F1933236F546F4652D464447C44309510BABA869E219EE32BD2 -3E40A733C45A71C79B2116A36A71BD75EFFEA12614AF6E4F8B3329D407D951FC -2EAE537C9EE872EEED792D89FB56C5F0840F804DD18C1256434E58FDB0F15735 -B6EB98363E14CE4EFA0AD8A863018B924F4B4A709D2F7ECFD2C2BECCD2775390 -8EF8029AE33676EFFC5E283CC3376051EBF50EAAC53EA76BE589043E6862FC68 -D7367F06955C799FC4FD98FA4318C8B8A3874B84CF03AA2FDF381AE8D0FB2231 -FBCC5A144BE7D4F9A1449F9C2409E712F3DD107DDB167695843FABFE8EC31DD4 -A660AD9E7B05BDC4122034776412FDE112C1858F79994E3D5000513EA9F8BB94 -7E58D1BDBF9CB797585E16D6BED350A5AF0C999E409D20487DFD21D881699C93 -461F925B7930FC6867372B0D6F7BDA3BB19D8455194961D9A888F27B7ED3B1BB -32AC650E3510EB4A563BACB079210D3B787D153EA12400590A01871C5F7A29B3 -036105A1513ED6DBECE39E7A46C9B47968C083A01C1DA428D5966811F5AB756F -96548832B6EFEDA43C534F4CE9A2F3760750C4341C7A4407D69C90ED68932F02 -49DFA7393011EBB581997FE9FB9AA12A43C15DB1C0211D5A4CE3C1FF8E28FA0D -4A5FE81501EF0ED2E1E2E014B613A56DF164E427AC960FF73391B054FCEB8AE3 -94545520941B8257E08286037A7AB7633E6AC7E37645455A7173A51FB9EA9115 -888A5FD0D419CB90A7D0D6F64B57B76FD74179F8A1A162F0B9D543BF53BDFEBA -3B4ABB7BF27FC1030C6D1A188C595BE9D59F9CA8F3C43678762F6B01408471DA -D7AE01D940A59B7A50D9C0143C0744CB90FADC94A7710450BE6437062D48E8F1 -A34326E9C68CDE3B7E6185E793C0AF505DF186BECEB66667EE0CA04B006ACF8A -0CA407EA918AA7FDCC40D851DC56A2701E646695DBE56EA4193200D98126307F -3FA547ABB75EEF2B33EDEF1371D7C068BB1297CD9536BA228C52F85F2372F3F0 -3C80234C9F6871D0B76687312516EFD1731F9748A14DA6978C86219CA674B267 -DFCAD0FD7BCEF477E0EDA4EFC48161C43D557C732052C5E62AED8C0B00D54A11 -FA51CA87415563603D7CAA21E29C84501DA0777B154F5DE943701E02B811366D -05F520C9E4D53865A3060A9739CB6F6B997BD52A705BEA845DE404392F4DDCB0 -783DD19069033E1D3E095C4804202214A7E2D19A134D1307E5A121BFB04715B3 -5B989751F514B6EE5763D3A8FC64BA558C71E26834144E088FFAD3B183600D60 -A5FCEAD02C1418593B8F1E0DE6FBF324BDF262024F7117CA742260942588093D -C08185A90F23B185B5F95767424C537DFDEAD50CC7FE3B8AE3F5108873C9C7B5 -8CA586AEF7B7F6DDE202FC22740954A10F6AE3E8266CEC7002B9F2DDBCF64CCB -33EA716C6E1B7C0FDC9A8B697393C7FBFABA175FAE04618259614B035EE13E7B -471ECB2ADDC4AFD3ED49FADEE0CC434375A0EDF967011361466A900CBED0E761 -5C9E3D79CC8C844D423ECAF271FFA00B43D3887B9C8860593930D17DB4C20D2A -1E23B070B3C902FC1BC1A88D98B4EC513F38CDF7311717790E1B90B411DCFEC7 -6F238FFC87D1DE418640779C6618854E8DE423A48AD87791633A000DF0BDD49E -F664C20CB025F17ABFC8F606754AF229638C6C0D211C0AD3AA8AC3C9DD5D624E -103854DDA2A834C347E6F242947BF06EB5DBF0D3066E24B8F7880238F72D0F0A -88A4B5A4DB11FEDDBA112D89C755B3759B187F4E12DB3D90CAFEFD91DA9A160A -39A7749BD2E7DF4946457260C6D895347D074CEC06CD3E442DF682B32A9C4753 -CBE4E0F6BDCF150945268A7FE5C0BED753FD298381B34EA0829B2B94DC38007B -B72D0FCFCA0CDF5846190A24036EDEC853AC17BC40FB9BA2F62E96581607C1A2 -B68D50F3F186D48887A5E8204DF84D7EDE2E619B66D2D2AFF968F453D8E585AF -2B2FA4FAD81094530172426CDF5CA0F876502287DD1080047E31D18D67704D31 -07F0BA091DD050E4660FD5DE4912AB5D2A530035ADDA20AE61DCB7B30981309C -3B6BB005EF8729AB0452697BEDDA5DE5AD7D54A1D1454DF0134203E618D02A10 -ED115131B03939E01F741A8502B88BAB4D82C670C76E7F4E8592D5D6A74D81D4 -9E8F3EB18622BE1165050D90C8681283D2476D6404E0B7197429D0F81F1C846E -0FF2EBDBBFCC289D692608F4D82DFEE8AB1D2644195AB3E433C264E991F6E1B2 -E2B21DDBEB4E46E03537B4C3595050E65CB525E082D690240E19768AF062F89A -2970A5C9CAEE6955937196192FCE3D42106B20AC488463B28F5B028B809529B7 -0B164044789AB45CE8FB40D70127B1F3867A1ED544CF8C8CF2E24BB6E1A514C3 -E25E327E51972FBF7E0813FEE52010E48944682FA348A67306E0166BB3069925 -C670F6954E85615EA2758DACE93EE89A43FD0BF53DC7E3BC68966B475C00AD65 -73A9778723FBC930452393FDE06823A5933CD35703C9A327AC36644105AF9277 -A0CA9A3DFC4BD348D001680125321712BA71B16C38A5128985927FB23869EECC -893DD2688367980E7F98E8BD83110464E38EA770B88303AA1DD3F2D1D65A41A6 -EC6BCB3290B82486031D3DCBECD1E6A2C428225F56B6DD66668DEA84CE146CFB -9958AFAF934A5FDCCCCE7B99CC8002C27DE55D867F1B9158121D04D763D9A3BC -D0D8D87AECBEDBC250A2ECFC6F42E58A8BF069DDE94A4A162A6F76A6790EDABA -E564B286BF200D33D9FE6774DA9BD91A1AC4E0906CC8EED350A232FB35C084C9 -3C521EACF914383169C274A83F4EB79F5A0D10E63CB8338366E3273FF831B05C -B37840C7BCCD97B54A954C2542B5DFA9688F2735D993F7ED2F369B6BC37F8B78 -519AB0BA4C936C16C41724AB96F5941D4C6CB6431509CEE02073115C00FCD01F -6F4B76C2F997BF2B9F09C53613766A94E1B466F9D434B73B35173DDA365EEB4F -5B48E85C9CC0A50767FB61D7FD3C6CFE2DE088FF06E1A5DFDCA921A09D73013E -8E9087559F081324576ABB53AEE66FBC9D248EA4DC6ED1BB821235C6A1777319 -FDE6FCDEDC54763C3F822E500D0D557E934631AF88E10BCCC06179708E2B3A99 -0172B0AB69E47849BA8067EA14C184F01CD5400964BC603DF20DDBC055936BBD -E6527DAC9B198DCA9C418AD21FDA370D2141D70CBC8D15276C21273F9E1B93FE -812BBEE4B0D72ADB4B593DCE83865CA3F5ECD20EE28225B729A6800E8FACAA6D -3C64CE11492B491D15C068B37DA58360F9A7F9B9B65A508848E12B83F7DB7FD6 -772033A989B34E46955D2F4C0630494302CD9AD4247DCAE3EB91F67D9544E88D -8FE84ECACA113ABA1D8555FFE1ABD0F431FF157C8595F4397FCCCB80D5B2B17A -0C601D43026FB9ED0E9E9C46CB870672C1324D7283BD28E9693842269669F57B -2EA2D0DC1A8757CF6C583A3235311BCD01539AC00ACE6ADA5EDB20306C469ED9 -73A7DC687570AA2837D3877AD51E17E0A649078E73895ED7A5550E1650A34B33 -72C2EF569CDB2242AB91129175F578BA0134635A03C04F684F7982CDA57C9E90 -4B333E4962ACA9E2686FBBCC0FC2606A514E683AD8351D9795326091339DBC1C -D5B547E449096CA2A71D13DE28B967257F1F0731E1A4ADBFBD6DF74D6DFFA5BC -08C4C2AE615ECD20D52BD8EF537DA2E0FEE314F1D60928A87EFC7A42C4B167FD -537F9256E03CD8D2EEB07AC438E55C33FDBE2FE4438F6F8B29ED01D23BE33F0C -465B0FBD1B55041D16BD5ECB92204B4F614024190EF4B87C6D03EAC1EB863005 -D3AFE487D1686A4A356252745101FDFF3F85C162AFF34B2063E6B2DB7749653A -D3EADDE7C1FDA2F246CB3154737E277509925ED8DD86210C94B64BC7B8C4A037 -9F4C147CCFF8C2C1C431E1E8E5EFD8D49AD10E416A2DA4F45092FD499E4025BD -93588050EE9907A530BE3FF8BD9A4BE19526AB3CCA10F70E702E90C72BEAFC15 -C66774473AF87569AF99B516CD67F2F6D26DC6DB5508AF6286AE547BC63F95C9 -DA6190EC85F3D8605DD1A7A42C7C7B60DD3BFB8E84FE0F584D8A986BF0EDFD3B -33B6C953C8E69DA03A5D0C5DCFC66D800388B2E4473F68F52CA474FB8F1E4D1C -F7F5119CFEDE6F45B2C6BA1E0B82DEC953A26F1104EA8C6EED38B065B02EE952 -4D7CD7FAC772D6AF3862D8FDCF7BEEC514795BF37C14D4A502EA7E10699E2B99 -0EC296F769EA6C20078265D25617B1225C7D7EEDA1A10062216EB83EBAAA8CCC -A1C750FAAF6F44246436DB8C2CA7C3010ECF6FE9A66BA6AF6400618D170DD44F -E231343E2368632C89C738DF38F618DD9774B75EE2B146690EE6726E6462613F -2A6F47522F1843F126BE21A8FF4FA0D9E6AB154ECF0FFA138E036C57D49ED1DF -517D36CA6171E5C4A26027787F2DE873B6438C55B7CFA023CBB5360B60C84496 -130968C3DFD4F16608D310458725E904300D304B660F5D6962592C7073B2C9E0 -513F8F6D25AFFD7E743A710302CD5F12AECB08ABC02E650371A5B23C18FE024C -9827FD131A14E622E7E3F1C2DD0531CC6B91AC9E259E78463314ACA0BC7DD2E9 -B2EC250B3BD48075040FABBC5C87F5EE51B5CBE1E167DC4E151E902403A59F12 -C4E4BD1A31E95E430EB6C214EAB8F6825EDB0ECF123AE0B980C4361A2EFD55C4 -74925A2592AE2195B0267E828F7ECF7B9F674D0D3D4D2A9FE7E03AFE8214C82E -B97F69E4ABD689257F3987F84B31AFE10133A6A86610D497EDEB680145F0D62B -647998A8DA295A5EDB43000C63EB9106BD35C280BBDB84D478EB316E506BE0B7 -1823AE8E409652AC05D96ABB02E8815640B33BFF08793D23A2797847C7793573 -BE9A0AE34ABCBB712BA86BC2B3D614D77CDE77DAD8D41A59C29FE2138BE18717 -60F23F275BEAEA736E1237232B4F5C9171E49C5214F841ACE919411FD651D4EE -D0E49C79E175E2AC19B0690D7F7091665EA3DA20DE5A559D1481EC058B5521F5 -D26A8B10966B6EA55E7B23CF0333D7EE20919C9168A50EF7AF4D4E57D9E5C698 -3A0626D67575BE6CBF0618C12A169F9CA62F3273C4E790DECF8590274D7D7C20 -BED651E2C65107CFE57AA16DB17F45F7F178F8B63EA3E9969FB3D6A376A416A4 -14F809F02F8B9A5331A6A1279B19C9D4CA9D9987B8FC1AD3CEF0797F53B70F25 -CBC85BFFD3AD3F1D460DBBB2CC644109668790DD2B5AB7301F37F19FD1AD0A52 -C6920EA73858AB10EF369E5ACCB35A61051ACB6586B3B5435FB7A8CE51C16EE6 -A9DE7CFB1B7C6695DEB484A8D4A723E83B573B0399AB442A1E57793F9D6AC73D -B8DEC23105D56BEA2424E91B9DA5CAB114BDC3636F0CB34C60BF1B0DBC9174A6 -A8EEB5F832D3B44BB7593250A6ED065309DEDFD9A1B3E57E10CD1C651877151D -B086E2D82959C3BB999C11110C2D61CB8278AC65B013F6A48D501417AC494D51 -E75F579246F4449D4D7B83612A4E80F65845B8766E95EA5129F49BD80CDD2E96 -60CE7A6EB6DFF8E9E94A77A0126892D661AD2FA3D587B7260ABF3A8449A43E9D -1582D0D12DE3E35F3AF68BC48935487A6C8AFF614012FFE86E48DA54DD62B510 -BBCD311AAF2472B2882B0E1A8E4A0B37DCFF968A7F293B529EAEBDFF5861E56B -FA1009DF759867512F68CFD8F01A7122CE07AD3F409F809E3B6A6FC0C5244229 -9199342EDB58E0D35B6519443411794978DB0BBD28E736491B0F04EBE14B2C1C -3BF6EC7CBF1411BA50AAB52088B88997355417A7049F389C770F1D33DCB3CED6 -0ACEB141033F237611D473191C1C54467391EF4BEB3A64241583A603F3C79B7C -2F0B75DCE77C4C88A1AC382503FE2F6421A3CC5824DC16AD7537BCBA4DB1EC4B -F336F77352683BE1546356CCC9702F24DCE6D1F84AC55DC7BF562B6605A36115 -6F9D6ABA30A043C99C1A0194879AE635B4AEE1C0F0D515018F45F9EC58DD76A6 -EA0DD8EE108EE353D8CB3AE7A6E4C2391E24F4607A688E283ACF52199E20902D -F8EB7960666C8552BFD487F6BB348DC50189B03F0F959743183B92DABDE7A8BA -E1DE007CDA5802D6B2F00553B927D9B787630441C04593344EE7BD12DD085A64 -8FB62FB4836C5AA2B1AC7400A00C038E55DE2FB9AD92FEF7EBCD8F11378450E2 -83673F87DE599C80786B0E0BA22356CF30E9D2E16E5D27FABD579D71D399AB7D -4485299038F6813CF8C5063CE55172E3989562DB517522BEA73A4FCBEECF85D8 -AE4A4F9CF3324EDCA9EC981DA2264FFF7284A15E3A30DDB7E347072193D0BA4A -08A127B89F591E2702A7D4D6F95556140AA417CF5CC62D69F9457E0215AE019B -1A8970E87074B208719B4DCEF7679D12D771DE2A01E723391D59DF7BD0A7326F -B5695926DC92E40C177389E289200909E425D1CD28D1A19E1B1E4E41682A82C2 -7FDABF1AE57DEAFE7C395886E06524AD96E214725129A3ADF8D515FF3CF78CFA -EF84B53620D5FFD99B1EA3F28DBABCA650B046C320A028426C44D2AE3953A9D9 -46EFD717B838F2E3FD8FAEAB40F2128F46410F1431440F60326A1198889CCDF9 -C2F9DD3D119A9132541FF09116A8C30C6E8CFFD9AA3EE31E00288566F07DC598 -D7234FDFA8F8B068E1062998F8EB6B4751CF1D4FACF98CED6581FFB46990A524 -B382A1D65C66D131BDC936A1A1834E3CE36525D63BED86416B7B7F1D24564D25 -A60990FDD9E9FB1C1BBE5FFF5DAD9D8525AAD7B823B00EECC9373D671FBA7B8A -5166B2B4B72A93373FA9063DE4B22D7A6D1859EEB440634DB57990ACEA84D507 -69409DBF24C5A96ECEC2DFE715643FDB87703A4B42EB6D3ED5D5FC117199E324 -FA36C00AE07A6A772F6DDB48BC19F6255FA3583BF967ACD54991A78A5E3BD803 -C442C3E8438813F8E4D040FF5F287FE9D9D450F5420AFD1BDB7006A1C2965562 -D8B8BB8A8DB9E8016E69C25B6FEB864CBAC9B1635F78E57A0167E4FBC3269286 -A829BABF548377EDD4A7A7809219941BCF62160DE5EB11A6C3F73F22EEEFAD6D -79349CA6E83DE5F014989BA7801172B7DCE74B1CBA05563434352D8CCA8DE220 -3FE92EEE6DBE5D0F15E1E4A4ADEF7BEF05DD0F5A066373B47C98CDA85509F685 -BB0A9EE13E239C34BAFA19DF1253BA3E03FBC1FC85D5387878EF5EE62B77D254 -5D7468FB55B9D5EFE11BE32F7E7FE83A8D60B15480674FEC54CE1DB50D05C58A -3C3DBA96784AFE89468FE881C7D5E569A6387EB96A2E6C0293FCCB29FD5E3022 -6C4DABDB07C4D2B211A6C7AEB61E6151FBA636EF6403BA6C7B8BB793C5F4F7D9 -62AD6160B6705BB536C7C4C6B6049ECAC5DD72814370EF535444C611CAA0DF1C -CE66A641A30EE8B3B8703410E55970FF5DD77E5B3932355EC6269102D7D9CEE7 -D3E78B00DB3C002CCC5A5447A3568669EBA5133D5682AFBF5589AF5E5833F539 -D767B8BADE673D65B88C8297428CB077E68FECDD2387C58D7C3EB9E545CED26E -A1D7370F2F4DADFBD9722031A72FA1D3E8F564378D08D5D9B05DC16D1E2C187B -C5D20ADA34B3FAB982743B3070977EA4A9CEC000C46CB79BD3E84F30D1A2D334 -6B0771A66033FCA6813F22300E643E33B130939236AA4019AF8641D0D5974AF1 -88D18EC8B25EE465FAEF3E7690391E33FA8EBF2B43A7622894356303D6E7CEB6 -FC2FF5050E1A2D21D61AE6D1F5641EC7689846BA4B7EA87A20D309EFE78C9DE8 -A10251FFB6A4E0269F7A37F566A826B1FA2C55A243769546A2BB9D4CDCF4A543 -029BFC4425E79307F1A3EBF4D5B8EA261CC4C0320E2449A381E9D8E4BA7C7F6D -340FBC8B3C50B0E59A61E9782DCCD9BBD23D3FA9C54230C5E1CE3D0A235F33EE -7D8EF251D33EB218D57BCA368487B0B6F7D5792CEF0B885F71DAED5BBB17BEFD -17DEB3C15BE0F452534DD61094C298FA9B5CFA0E96D091A2589D0F69C85F8BDA -59936C67A80AF924CBA0765706672940476C91C76FAEEFE48467FF8198468BF9 -238E2926377C2CC141CFA2B4FEAC7117FF081EF0FD3B2B48028D57EA49B448E7 -902D0690096EE6C83231FD32653432A231943718F6BB9DB10C534730BC8CF192 -02973DBD125618EF21BA17142C8DA4099A6B530F36F9C782436927BB03B9A761 -77D0ABCD53BF2398562C623260043B3E7D041B5C2A244DAAF6B57245C6A977CF -C5A34693D558DFEB02ACC7C08393E21AE88C22E3C228A2FC4B000A14664F586A -FAF41B2DE959CC3F58FFEBDBCB3D8CECC85660F8F6628643AC63EBE17C02A6D5 -BB3965D42559D47EEF9A98A3DDD12193A445D678E53E55A8FC95A96F3FE1F0BB -825A0A4F158F54097880ED2DABBBF7B6DB3FAAFD59E981FAE49B79406B813E91 -DAA2AB3195A5A0CD655516A92157BD59164840B4F4A7D266B9474BA220A48599 -1C2B1DDD7BDFBD99327D677E45698F80353D43A9BADF034824473765F0EA2F10 -44B98499FC974CB913C4B64E1269E6B5BC912B34D0B89FA37879A63B93A91256 -553416F94A8B00EE325F328631787E37C9DF3AA9D7C2041DC58425FAA5DA0CCA -BE2971E437FE146D557ABD238F8CA06C5E2966815CB4B7E1DA75A5AB83617E0A -AA0DD4F5BFB79225F7D083B6380EF342D6AFCE6B18FBB40EEBC845D20632385E -8063551716EDF22F257487DF1904618ADE7487F6708FAB208A911399351F71A1 -FBBE41602512D92CBA6CEE36043093FAAD2688BB0409D71B6B09C61982EDFFC7 -1BAA404D3ED854ECBFED7E9D4FCA1DF74F5BF05A1417E973C308CB805B4336A9 -2ECEB6CC76908C93D627C557B3BD77018F96DEF4145A9DDCDDE08E47F80626C2 -489C7042DF12A37C574FEE56DB542AED908C22600F22D467B8F50F4C4809015E -EBE96D4A6288A07BEF0D73690D7FCB45995F0701D0DF507675F59FDA3DD997ED -C349ADDB576A6F2FE117CD42978CF975246390610DF22AB9BEE4BC8124FDF869 -0D33C973FB6242981DD07E21EA24F0C4656EF450BE15FAF83BC9B5A5C38C2D68 -99412B858E80CE9ED73E513C8A169F9490C94FD74C837D338A2F627E481F09F0 -89B319F6076A70A0AF1ED9E4E8C6C9C0C697374BE102466C5870E7564C692899 -9A0FAC9A82C038FBFEBB2912E8E335FFED0AA2788856144EC2E147714075988B -FBE652847CC46ACA47F77EA672BA21D6B1815071B85ADF862DB0F26928761F55 -92B610D5524839CACFB89A0C1C3A50063710BF3F85E48748352ED45907122625 -3D1270F4548E6893D1B25F6D0C1384DC91F6400B0AEC3BF07F634716844689E4 -EBF65C1BE2A5B31B111BEC0AD90E4D571F67C0F28A57878D2B93AA616FD1E969 -1DCDA4FD3004CEFB0536057B412318E69D9E589B852E41AB1D79C88A214631EF -6F407003F1E303C6492BA95F475F139E9A508134E39FFA501C01F5979A062085 -E07149AAC966E190DF1C10D6C197F7D90F388AE154B401102B7155B48B5E812B -BB035E4BF85504F0F6D73F12F1871B986DB5037FF1A07BFA91010C69F7DE4D04 -5568FD6DC581C20485C58DC87296AE14D94DD4EFCB90FC49D59B3A24FD5134AE -228F9D6B522B9D698D82B01A2598991D427324AD1418811A30039325134A3991 -1900B9F104CCE14A6FE8060192A9BD2272390DA86710FA38968F84A0EEB722BA -647850892C21E446C52CB44D65CE6ABAF963EF7E4373FC84B8C1C024E21D3EA3 -B9EBDD9A7C55A6F759807BFD086C78CF5B522449B1610F3BD0590C97B17B26B5 -4EED5D1395D9BFE60ED37EF4B00CB48BA1A904C4137433067EB2AEAF35030874 -D0C061F2C83B8A4283ADB386201192832E4C3C5A47031D6AF00CC267F7DE8449 -73CE55232992AE3E71131A18B348EA7D0118857000CECC69B80BAC3EF6508999 -27CBFCC211314D256E112BBAFE8BE0063F85764E2FCBA821CAFB9DEE8EEF9B21 -7B7F361B8F817576F09B9A8A33CDDDE20CD30E5D07BF072553CD55FE164112FA -CEE7AF710FB84812E334ACBF603E21A3A1B78AB470B232041D75E041DDAAAF26 -3F3D9267E9DD307AF620E16B50064D8F5C8F1E917C8608405DE1EB8B1AD1FE90 -6EFB0F29A9540F9A0FFDF4810CE7CEF183A6AE3DDF193ED3C6DF3DFCCF989C64 -37248688B532CF9B91750A86768DB6741E2DB3312FED357B174AA9318DD6A78D -25456E6D80B32495FAE60E5AFE0AC1A05D1D8FDAD6288CC6CBD3EF14B3B87058 -454841B2B5D37DE3ED4E5F0FC4E684836EDD69BDBEAF3C4AC483666715FF6075 -98313AF84619C2C9AEDDD0D20EF2CF95C56F5A910C628DC242FF71BEF79732C4 -93B3897BE143B1C74942F124F194EC904BF92B677FAFCB0A85C3900A75B1F0D5 -CEC1F977AC17C7EC394718CDD08AB218211A5C702FD4246E5737959F527847C4 -C1730B0AAC3E28DF726DEF7BA051EAF425E442493C7A616AC70E9658C95D417B -29E655827D9630AF834C87EE85419F4AD1D6F618493D3C610F1409A8FFE3E5C8 -43642A161300E6C90151CD21EE11DA13C7925B7D5B44C59AF3565D89C7D9594A -66C411A848E067424A23B13EC03FCB090A15791CE346376241809E3851388F9E -BB90C488DB50AA60ABAC64CB67DAE8F374F2C90CFD3D8B2F2CCD41740EAE2349 -2167952F63D005C9F1F09E6DAA22077F7998CA1209633A1F719F2EED5FB3122A -52F67D1CF0FDF42324A6C86EECDD300EBFD9494430BE5B462D70349BB64C2508 -F0D7FCA414462DD4F3CDD0C531F385179B316B7B043404DC4067D450F81366F3 -9D3BFDA706859CEB1DEE3E62C453344BB48D69D093B7B15B71FBC503E2414316 -ECEBD9F7E25C20F06F22469902954AF3B2A128F76C0B7CB6357A5D8402EDAB0C -F5D5288D07CB484B69BB687608F51611ED3AC3780D11AC3AFA9E804EF56D8089 -64ED8A5F0589267D8330F17580BA3E35517EC2C692A66965BC089777DAA7C8E8 -9D419BC85C6DEAD167196761928B28C212B4B88A83096ECB68B84EBE98D97C85 -293B8CB1021DD541EAC2DAE1087D6464A74CDC165479940C9425D636619B1BE7 -967F7259D1A536B2D83EDB38E473311E1FD0C02A31EF851F3AD001482AEC0D9F -D507F00DA975A2EC33F5DED8D6DD551257E20930EA0497E40C692CD76EFD6012 -2FBA02244EE7D0C540D98DB6B33AC5472AD9E653C1EA35FB2CA5A7309061E28A -096617B9F6A34A017A42D2A13C7AEE8D875A94CFDAEA73E1EC32B2F4F0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D -E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 -337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 -0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 -472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E -A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -30F19E1BCE69BC499D860F9B17E6A78469F652E469E22DF3BBBCC803F7483463 -96F1C811AF62FC36891457BD3A5B988F62177864939C23E86BEB50B9FD0D186A -1C14795945646D82AA97F66F6050F81D9279AC6CBB908C7E1F96E082B31DC1CE -66777F3D7C18637E94FFFD28171E19E178CF932B38A8C1681877DCA0CC4BBA17 -250D9C00BCA8F753A4D3CCF503528B0CA11871F2F0E1F400FA9AA5894128D07F -CC739AA7B0A8A3B872647E1BCC9F015E007F208CECB08EE15C91ADF0F06094CF -A1A6ECDF5BAB53B67395C422F009C511570CE39F739F4C5187386037AEC9BAF3 -434368015408A4317115A1A8D296CF477E67C0A49614602F4B9C9007B2C78024 -E33584D32B6A1D226044CA57336FAA01585F3BA39D9616780FD6C124B63F19E2 -F20EBCFD23222358D8229B701B2703280E0B86E4771AE2C5017A3BF22A545246 -8D6BC985C2220034A34E0CA85BACDA735A9ADB3D3981E04B9AAB9E11A959AFF7 -0AC9B7C54AB816E2CF48178CCAC839D1216AF26D93547F242069F877ABA93E19 -45B75BC79A45D12E23B40D1D28074AB7D20597B517E0AC38860D1D0048661999 -4A424F6983DA23E0E6DC06D6F7EFFA87C88EAD1AAE2BC85574596B913279BCAE -B535042306ADE5EE2AEB1FA1B833D56EE907B1FD6838369000023CA728DB364F -6C2012E4C2614E0C662F88E2FD02B32499CAF6918DC050BAD957D7B727927B10 -24F98C9B780E6FBED86B63795719FF60F0EB582D4A5E9CDA6FE05D7FFB0625E1 -FB94151065C607914FFC72D372399283A48B6AA96421974F5AFC60E28BD25D48 -B28BCF78428B21EB03A00C878246EF8BA2A2EE7DB6AFCA47EC9A02EDBC55D2B7 -929A0B178491A4C483699AF945ACB840525647C9E7F55E11BDB76E2A6E3C2828 -FFBB5DB375F4E15293B494868FF31B07860BEADFF66311130A0BD51D976287DC -201EB34FD81BA3274938CE0A3C68324BC9FB70C00910D7C34D507B529EAFC6CD -24CA11385CBAC30928F4E088960C773020720312A7CCD60EA5F822E12855BEE3 -7A734C12C8956A373AA7658C809E4FDC280E3936D422FC50ACE01A66C73A4636 -BFBA5F940E08F3CA382B540FC795D6ED2D57190BFAB1430CE08F39020B29BF2E -B1399B2D3292AA99F892520F88C5A0FF9B479ED45721EB772BC18D4DA9CB02EA -54BDDECF4249FBA0184EEE9990EA902613B5F6D55D5B010D19188B0B36DAEB75 -922A7AE22ED53A34AC47FAD7E72374D47F349943FBDA4731D2E1CF30BC103F4F -575A03E46F37EBAFE903C74D81D8D3F241516021862D9E203CFC1280572E0C50 -359D4E87B2976C7F35334F4744FC78E15DD7979F29308148494C2A42A2FEE1CE -FBF756BA8683B7AB065FB07F666896832A5C83A2B85EE546FCAC2DD870FFDDCD -19890A5FD9D88FBA6AE267FC8F1664270F3BA6B990BE056AC79E55762990CBCB -D8D60EF5A747623D719C6A76414BDBBE4549D31C15EE2DD02D452ADDD22E64F8 -CD13525C274456A216AA919EB8B6CC3692D9128A76B03566CA33C1B0C5E3158A -0722E8236156F1B51302BD02C97D4C00DC60B298E2731485F3EAEEB50A4D7135 -72DB3DE87ACFCE1E40C8602A6C2E00D6F3C7CD712D214A53BB8EA0B445BBCF1A -412AFDA97AD44DA2DFD293420DE95B0B88584B2CC79AEA82685006BE5C6C783F -9957D4B1F77E2932741E056F3FA78033BCB92FDBA00B2E498FBF1000DE6D9DAE -299CD854743A82032DD62F04F4BFA9C5CD84D22F2CF7013C2CB6AC249D67AB12 -3396C3B333A5CBE9A97E4F07BE0DB2C71AE4EF79DF3DE952D7E473C5AB2EE898 -4968FF37D409DADF2432B774B5A0BA55AADA100D27C96102BCEDF0440CFABE41 -19D49D6BA5A8A887EE02068CB1788FA378CB0BCA436847E0925C2F883A980158 -694D66927C117212493015BCAE200249B7758DC98D849B7AEB32C78B2F1577D1 -1D91912C0522AF14F75DA48A197229C2BE08B6F8F52A839AB507C8CA524FCF24 -C91DCE6C53D784D15E691CDA18EB40BE0A7C3B24BCB99F36F7E8F77C45EF87A1 -A0932AB194A0D5E8DE4C567C6E86EB3E734F89EC1E4C485D81B90D505FDEE463 -B4EB9DCE53CDCDC19F4F99033DB2ABF9698FD153FB68576A25FD188B98CE1BB5 -B7FD420849C0835A54391C28A169F57EFB53AB29B0E9DBE776E37C04A6D6BD91 -20FCD689532059A98B4477107E868A123B273128F7E747C0F0724811DF029AA5 -22C2082D557EB8CE9DF349450C4446B4B1DEA70CC1B146AFECA06A1859D212F2 -BDAF41ED546BD1057F6F6AFF46FEE60FE8380E8899F71735D2C8D7EB9653B027 -68321432B37050229B6815A8C4A1EBFE19A76109EE29800B88E6C528054A17B7 -395CF482AE62445478D6F41C0E7B8F78313DF1DBED339E389875A8E883867921 -1AB53CA0A3980594830B13200073F966F005D1B1402877CA4A46485318A1B863 -24464445E264EBDD3567E9273FF01016EC1CDC142FD9DBF980F099509F330305 -3B138C51170BCE3D59072ABA6C241048612434271419A80DFDD1BA156A8AD54B -39E45FE64F1B558A712D93C46D729A1F8B364CBECA67A618FA1337247C08D0CB -9B0A418C729668147DEA47BBDE342C2E0E29A83631077DF34C861EDC9E80EFEA -75BE3040125BCC60D4FB69CDB78C25ADA72F2D104CAB8D3FBAAB5E8931A7B8FB -6EB41252542F302C11D3DCBA66345EFD816D9623BE2019AC332577E1CE8E6A8B -3DA487BC54B82EA9876961A4968E772603F37936C5ECB4C14625DC3E36E4BE99 -E692EFD3AD7B0814DA32B13D6C64FCE750F80E5985E708E54C7A545429496894 -6451BB8608F12DEFBD585ED62A2452377DD91AE560D14E54C9A449FABBD16F26 -AAD76026066CD8F5677BC18FE9F9BF89344D90B454B7A7FF20A3EF058816ECAC -D49486263BB4AC87ABBDF43D8BE4A09F0DEF416C95AD8DA91E187A5528390F9F -FE96D0CEC53022F1DD7C565ADCCBAD63B1105CF11DAEA2D2A9D827171CDE1B90 -0A71D9C2C782B74884C9605DAF063F99759079E3A821196781C756614E400149 -A6199699F5F2AA97859FC36699F86504D58BA77D14810424C2A3FD79247F3DE2 -1EE6CE0011250433EC504A3146827949468227E75687BB81EE40F4EDC2803F71 -CCE3BB5F60FB0E121253C3385543B6AF741BFD67158D2F38227A29C3ABA429A3 -33BC564E8867C1FBB058ED6EEC8FD0D835AAF442103348751C7AD941D1B16566 -761ED69AFCEB4B213CC9A75A1C01260B545654EFDE7042C8E7ABD0508F43D4E8 -B50E6E799A5CC8507E814EBA958EC2DD9655CBD18B018F284658C4C8299532AA -48EA747019D9DB74DAF848CB76192C0125C7A51695E8DCB73C4BAD826A83FC9D -AB177685DDF5CE3A7DCA21B02FBC6DD7B52B6C086B0C06AA24919A38845FB295 -1EA169C8D17210C14E712CD90099334C9EF449FCE214CF640FF39CA1DA2120FF -CF5A9F387B3E0C7EE4904DBA33444A668316DCAC18B85C98826F5FCA5CAB12A5 -9F75424521CAF417B326F8975E6574E5C9E55EE2772FE20AEC65C4CB692A2425 -9A29F75EDF9B31C2503C6A7E79A17B957EB19D4E5E666C83AEA92A8DBDB033EF -1628486E2BFCAC1C9E32676488BA13B3001F6AA2EA03747A3EA5D220A5F33B29 -4AC5AD623B0C9A4D0C4C6D41F89E3FC325747170BCB0803A7D988627CDACDEEB -0D9DFE8AC357C07F6B60E90C5DA3ACF868F145237D1710895C4859A319FEE038 -D7FCC9D56620607F5392D1998C6BB1B2ED2BF4F9B5BB6F80AB0CC5A535D52BE3 -A996A70D581CE43C365EEE168ADAD963D0B2892F56FDECFA8664737A5CC0595D -3D135410CE5CB4B094746D5CD8C3355C4BF77F9D5375334A119833995EBF757F -EAEC6ECAD4A62B90917006A1AE4632D758D437DB443D6D7661434C9A8813BB1A -80C5389D2210F4BFA057DA7900FDF6B60212B5747E586FB865E2FF4260B2E3D8 -0C78E003F3FD527925BCA22DFB87EC7DB2188309D8DF6C6424048D99C0CD7F18 -478740413A816B92D6A38AF0025FC79B4A8D35E2B3FF5BED4523B21E9CE49350 -AB42D25A5B42B1A49D5A468C38635E91AA1B6C835C18D5B2506533B4E77EC0D1 -CEEE1D66569498F6482BEAC3FD818EA2B3191A3A67212EB41D8C725F52937F99 -06D33486272E82A3C9B5A5457D0219A3CFFCA0F18D246AE6506915E055F2E1BE -8678389745B28EDC2DB006A0AA5A4C6483B24DDC0F3A38EED7CF30FA00B81CD5 -56757EA8C44164F2BDE071226598D6246C8A0CF972AF52331D0D2A192C98A320 -01435C77CA0B61256EE98D373A3A8F2B41622A6BCD5AEFEB9004B90F8A9558C5 -D4EF6B36912E854014AB35841B99F6E1AC11F09F536134DE90865F721DF86DA0 -D13B6BA2146D75696B2C2DE21F4ABAC37B3C0CA96BDBAE8334E2FA6E38F75866 -FF7ED0F64D5896CC294032AB86E5C328A6B06C2225A617F39CCE8B69AFD5B041 -9B1F9FF00401D7F0C9189B79B0C2B700945EEEBCAA38A9E202CD5B68469542DE -E9EA782D7C494CC6B411D614867B498B2C2729D65D6087C3D17956227B02345A -FD3E8653A3D4A9CE1FBC46C7E8690C803B4556A80F05674CE27069D24563DA46 -7D2C4219D242453D06650A9522A3184246937CBF4EA2A188C6B2A71E29E0CFB2 -934B93550B451AE9847F96AE18647C09C927C4AC12846180DBABF3F145FE073E -45C129D663E21A1F1F1F6755F6FECD1C1F7061939722D403BC2F2E856BBC25DA -F069F39A441C837FDDD2563B3A370EF73F0835D34DA86CE65162917E84C76201 -0A5F2854830822FAA545FC0A0F77E62A79545FDCAE728FCCDF2B720C0AF9A9C1 -2FB5878E9831D42FC9A56D41904B1551DB2E7410EE055948CDB8B9625C6DC618 -F8282896C1C258608234A372CF031E5660949250072025B7EC4E535899EA8BD8 -D1CE98A870C159964CEBC0ECEA5DEBBAC1CAF86A398D9C84A076ED630991501C -141AE2DED1688C1F1389ADC40B025407BAE7EF3AA847EEBC61DF58A6C3FC8F2A -D9FC820DCF1DB3CD2FD32A46BE1B98D87F3D291C8229DD9169E370BB10706B0A -606D45D65E3F9A4D5CA23DBF23972668A0D0FAD4D485AFF44AE284B91EA6BB13 -108B9E0AA5C0CE5EE80D9A6D10114ADAF14AC05569B7CA7F7A8444D75D504700 -89E7DE515BB66E320816BB61DF65D9B6DBCDF5BFEB475EB6BC93661D39BFABF2 -B542CB9E5F38AB3271CAEC60AFDE8FF533DAD806B61C17A985FA5CD8E537D941 -020D2CF7CAD6389AD73578558B49795CA5D2831FDEA1BB0BC181AC848EDD5FBF -E9A052FCD5BCFB883C704D80D9CA06C7D147645742EC0A601F66A5D198A7B6D1 -7851CF5D65E96E4D801D87FD271D079A59AA5E96E345053FA3CF427A80D78A5A -D5007F12ACEAA2F21E612AC2ADD7B35941EAEC728CE7BF64809270D09D469BC0 -422C3760D1D6FFAA75B0F36A1961278A5E63406E4AAED935320C68A3E5515C5C -226488F98CAC3B04F016A03E343A9835EE8E373A6B49C685F1B02798436BB098 -DF854825EA14526B337630DFC27914F374DE9A915D77369DDD88FEAC626B0183 -EECE378BD9B0FF448EAA2B656A20102641B181433CAEB6D6A0A30A8346E710B6 -B9E2C6103103CD25CBC8195C02DDB8A6E4216F24FEC5E0F8092D9B74F7945F58 -C8BBEDE1F6993592E723AD0F343B2B118098F64D52BC5726B253BCC4EE3526C2 -49D22E2AE02CC44F11C2DF0F3AB0AE48BA03795C1ED3D5E10B1158690D402C43 -FF3DB585DBF3EB9EAA8083DE62B198E2D81D9CCF4CFD13D5F5DCCC1A07F6D94A -E3E11DB551CC1124229C84F311EAD1EA54B30918A44CE0CB565C29C099ABCED3 -25EE19B9B1775C25E2BCC0D580275F4E526571B074CD8531C66A6302FED3EFE6 -C516427341082633AF21777A02140C90779B33CA0D31FB4D8A79474454AF949E -855C5E1D1D9510B2759A9DF9626A2DA26B6DCF05E68ABB11B5321D9299F3D8C3 -91588707B63CDFD33FE34BECACA899612072830172F1481702541322416E3F55 -BFD2BBFDD9A4322E27576748EA043E4092603BC4B79019674A29378AE9A35A82 -42405650D62A13DBDE6BDD55A831685DE31F9C20AB76AE2337E1E7CC6B0FB44C -FC396190083575E186BACB52932AA11624D830A58AFBB2670E39242F8609BA50 -BCB062991C4A193C09466F4FF2AC09F1E7C094F502E664F129500F2B93ACC2CE -B916D080C6DE142E496526F0C9A5804688896D31895D0C0ABB7A0AE4918D3481 -5360C8CD618960A8F014B0AD55575C50B901C5A57AEF996230642A5C8DA0944A -76ECDEC0730E6EFC7FADD09D9095FB540F377D460D159CCFD7059B0A34F738DF -012B7CD8BA63A47263423A9A70C14BF72386746772CA8954C5BD1F1FC4C77115 -FD47E72638FFA322F399D7123BA9DB28022589735875F058DC05521309DE8B01 -27387F330C5489B1752B789561FAB8C92ADF7778068BC27E25C245539AD11B15 -017A7AFD7BFAD63D0DC400B369194B8D9E4D298D548FC1968A0063A7EB8FE1EF -71AE77F99B78F6529CF9415E886C565EC305BEADEC0AB65DEABAC40DCD5E2430 -36315F52C005A9802DC49944A423F1828513EB381F24B0FEFFB99FB53FB86A4D -DBFD7B5994FE736820AEB30AB5832ED56048A846A1388D3BA69C68180E017170 -CD6EDF246A127BD8D8D24664171024ED9E1A99279DB6B5FC91E4248EDB7EF45D -5A9A851EDED58F11D586EA07F9D32D80BFF6112B4395916FBB5DC06BA0896492 -D9C770F973522E6CB5CCC92A08CA1F9067F7ED0A35CE4103EF73C3BEEE22F2EF -B3445433295AFC30D464929C0607FCD7495F9A6C0F5727CD8844BC3EAE436046 -B8D484DE4B8BCE607904DBE5D01924A86E18F73C5D530BBDFE7DEEA30ECF1C80 -D10614F7713CEA36DCA8AB9DD488C57E4D0E846B48433DE35205B57506175570 -F8A0740F6B654B7C3B744C5D030827DD29952CD579BAC27E25AD67D946F707F1 -EC44D9AA1FA6F99BBC9F473FE5191C7A918951F66AB09A9AE6980DBE3CB1742A -9D95175D440778A3F9CB5B5C9A0AFDA59EFB9EFA6883C836D562E2629C9202A1 -0C12FB0B7CD4313B89FC47202D9A9131BAA40082CBD9F3B0757853D79FBB63DC -4230097FD151C9620F5238C8A3900D3F4D0A4E9DFACBE9CEAA5042A8DA1C9838 -554C754D1F947DA0F13861F71919A886935409EABDE5BDF80AB586AD80FDFAC3 -259A58CA5B2164FE4E8BB441C76DFAE412F9D8F6A0791D654C8846415B8F50EE -2B51DDE94C594C35B200F6394727F6AACAB7BCA7089728C4D43D08D92085E899 -4D49B867A20D4D988269E5BE9075B8598815B98A33F71EF1DC57A16F1F8A6A21 -5EFCFCB8D5D6EA63BD71AA812A06B65178BA861B49D228B0562CB643CC272FD5 -5B75D91C52B23F5119AE56700D9316162537A4B11004DD2B36CD5BEEF7CF5007 -1321A5A8FE603B12EB3AA6874E2ACB44FF89228BED8B457E1E671DB262FB3999 -F21754172CD06E250734DD0B037D39BC7F95B59F706D96B3438FBD36F8096AE1 -CEF0C6B206FD1FC09A267F05C2FCAD9D48B7ED79C5274ABB901EBC710C56CB51 -29314F4FBEEA48BF0C63582C5071627BE63F1A8997D45DDF0777F983629FDF43 -1C88D91790B1ADD40007131D9EBFD2775CCC7DB5F43E6549E6DEA92FD93A6E62 -5F19742A969B6DF6835E58FDBA0ACA7561DDA911B8872C5F7649CC798CAE3BAB -D34BE5B8FBC192CD49DBDF869865C89CD13D5E1DEEB078CA83B54115E398B027 -F02F20A2FA1598CE55D6261D71F91B8250C8C2F2774E21C623AB8558E6BE220F -5CF0D43E6F48ABB5E7AE213266ECAB04810CE30BF85EE98D8145427EC8CFF5E9 -86E1BF142EB41D8C7276DE545605BF8104806355303409CAF619EAF139DF67A0 -7F768B867066C95F429DFDF448465B94979CAB16A0DA2B116A4F42968EEFAC43 -C89E9A4B2C9C4EAFFDD84FA4C3A997D042389392AD291133A42152ECEB35D361 -7FEDF25957674492074C77EE5DFBF544DEBCC883C292390C9DDF991B0287D8F6 -D3D070EC59023AEC64BEEF14F870339B83AE10DFFC49AE74AEB45ECAE8AC2E34 -243D7520D4845D89FFA6B594D8AB95DAEA65868E4C6FA56616233269F4DD0A94 -FBCDE3B1BE6D7A98F62E6E58208CF6B524B9B826757A5E443A07FDDB057C550F -D3992B9E464E6EE833CC53086F03F990C82B36E9A1810B24560DB09814C855DC -2CDCE238364E42B9382BEE77D9C29BC8606E9A514C0EA0C83884764F6E034E20 -9BC152C2F10F0C867CA4CC98D0D0769FC254D8DBA38215F6CC85F3767104126B -2CE70A4D40C8F8CE5895FACAF369FD9BCD27441EAB29EA0427FB06F42F8DD689 -11533849A08759376E87AC341AEE5FB95CB3152B2BDFE9CB046E012AA3389B15 -EAFBADF9C8869E53B009964B02239BB7B9DB3AE01D0F5B33DF315520A733745F -904BB8B003624B3B8511D67BECD37DED77F0237C0D51B72A7F7F92EEE9A04BFA -9EFC02EF4699C2EC0F4699CA60381C4F2A39351AEE2772AFEDACC90D92333F89 -54D65F161351FB24368068A78C527BCF188204033CB08065A892828F43C05A2C -2648F9A979733190786A03D47A727FDFE8EDBA3F49255BC3795E373CE2A933B5 -2A72E2F670977F4986156487B4974BDB948E452E2DB429D3D2FB8266F7B36626 -1CC210760CFEC9D23C9621ABE14FC18AD7C9FDAD031D56CE72EB7982B653B8F0 -D991F9B5A0946AD308355EDFBB2A3F62FC8B57B4FF2F66FB35647381E545972B -8099A7DB9CED093055CE1A414062458D701ACA675362598AD0ED73944EA9DAFD -6E3043B91DC39077C7758439BE71CABC2C16B59303B49FA4C02B5A5844A01367 -0B8068FA9B4CB58C5F24FF462AF013F8EEED386DC5E5C0CE30E5908E722E40FF -860C02C080E14282980C09C5307B63806D01E6A61A37D39DC2446470D7D90E45 -2E3CBF1847BF4BF8D7845AEE4AF1CE34978577FAE2A71D501F97C85BE49C1583 -A07B590256324105AC3601D061149ECFD87E1FA726089A2C19D1A4B2B273FC8B -0FBA9E23F63E1766E5FB216877FFEAB2473D023BD1F793F6D7561850BA060C43 -7342682C622E0203BE175097AC69CF9324A87BABCE6FDB4AF08E27C3D8E7D65F -DB19F68B3335B3EC2F5E8EE1462C52AACCB0A9898205855ED815A42830675F9D -457479A33BA6A034F3BBAF66799EAD3A152624C3F50279264C8CF38A66DF5FD9 -97F9EAB52B7A280667B42983D65DFE44144BA34FB1BEEC5FE1B7E3D201038C47 -88A5DAE0E719C8E4B3D2988BF536F2C94962BCACB12A8A28CA12487B709585CE -A36F7C289BDAFC52E9374B05989D2B409ADAD6F18149BEC1DDD16C8FF5B18BB5 -4AEBD7FBF9C62174979665D2BA7914ECBE3D0DFDE3FC2AA6FF7F88A37240A353 -D3EBD858B0D1FF939F40449BA58D592B85F2C6217279FB62B484C2C4EB0B6B5A -D35FD070653A16443D51D291C4A9200AAB185A28EED382C91E307A3B4AA1AF26 -EF0E6837730BA40038B336863431D30525DF8AAFB6FDC92C0E98E5528956D4CB -330DE95CB79542670A8C89A813C356255A263FDDDBBC543AC5D7B2CFD1AE25F0 -D6A01465EACF69BA84AEDB6F0154AA25AEBD7927D636CEF416494AC8E5340424 -4CD0AC43C5C03598CB6BD8049B34B2641060DBB0E3FCB5AC60BE229F355D94C4 -225FEA17641AA23AEE655FF569F90E24C8CF27082E4E7AAD634F281612F87705 -A15B7C05BE8330AA970EB82B01DB4AF18B3117BFB53860B40B370A98EE513E4F -2E6108BA508172CEB8BCD22CE4FE5188D2C7DE76862A3F78747DDEE3A617336C -BB7D3EE52D46ECB52DC057E82B6704A2F1A0C3115AE8E7D2D8B31517DE586AD7 -DB72A4BEDF2D22F883F70DF03593CAC92EBABC5AFCCDE1A78509E024C6AAF558 -C45C7F1A4AAA246778F967ADAAC21699B3C2F7F53CCD424642892C3173F61703 -BCA47E653C62458309689785EF8EE2922E80634449F0D5F7A8D70FF8561E30DD -CC464AA3F3760E7ACD1988BB44770F258EC07172DFEFC95AFE45B7143F61BA47 -EFE05472C43A1240E4ECA51664614FB9E46C08CB00B3BEB9A1979E7CCD6E198B -40D5D6FF8435ED0234FDBC6786B0EED8646EB3F49B68D2F4E238A3A5FB509FFD -0C18D7370C768192A66770F77F254F3D6CE99865EE852437775E2ECF6A070D06 -629D8CD6349D0E40738DFE2B2322F8E9B53A40B6FF442230071FE3C8F1CB165B -5AC61446AF6DDCBAF235AF8C3E5897B295F5C898871FC7676EE5536F23D948CD -730F67D658DCE8BA321DE88BFC5B2D5AFB76D04CB7BDF3142E1CDBE22218DB9D -A2187DB6C2BA28F8B1E56E4FBDA64A73CC93FD301DE2ED8661D61D21A54B258D -664D91305B62BC03F9FBAD1C9B09643DBEB374950E8BDECD2840E3B48A2B0045 -85FF594BB6AFCFB94BC4F82AA8B81073E9A991AFE6A39709606967EA58F6B498 -12B336A139F1C8398B10C43468E4D54F8DF36F74B9A34271759CF249F6987E16 -9A119CB6BA19300AA1602D2A1A68E7859E0BED5ADE943681014B83E4098A9724 -E7BFD908CF6E90A25EFD148CAC2017C71D84D8EF214FF9417B0FC8E475513D3A -39530CD26C08004CFFDCDA05A7858684F5AEC1CCC131ADD910A51A93A4F1E288 -8486BFA3CB3ED0015D8527731C53D273F5C51DF3768C1FA7C004537457D0EC86 -45F2484A76FE59C55523C21EA566D7E75A6A825001173F6A34AED8537C0D312D -9E5AF5BBB8C19BEA4071BE9B14E75EED39BEB37A6E78CCC9C58FC9BD74E93A16 -BA479DAD22BF879F7F76D7CE0A39478190787C410D4E7BAB6CA813CC2AEE1A7F -E1F35431FF07AD1A5DAFAA1853385E96022553EC5B1B625118FCB6C1B30051CA -E231DE09B98D9D99E821F50D435BE18DF0621F60D9D5D37A55CECE00EEC5711E -3DA7A696E412EC22B7B0A48B56FB2FCC5CAB6BCCA80F73AB9E77536E03AEBB21 -AA2E7F5FB2687E7A726B1F24FE9ABD388C2DBFFB8C7645ECA1C3192007EDD223 -6B79D161F94F838C53E1D994A9D89409D998427A4CCA56580F5CEFCD3163F90E -F4DFFFDDAD963264CFD034C40C11B5A425C1A51D2DE781E03EB2648A409819AC -1D6C73F4EA08031B6ADCE61F80323FEAF3C049ED4F7A6008F4EC04193CF051AD -96F15C6A47771B4CB267DF45255EFF5D7BEA21C4B8F06598E0FC2F3E7CBC2B1E -2DDA078D01D9B55D8A20AF61666493B74A369F7B64C2D7B7E3109B033026EC7E -C2A01BE7C8EA7AAD1F533008F6CCDD3AA0898238BE055BAE80E15D3ED7778C1C -0AD9E39ECC67FD9B9910011F980EF3618F8E91ECED76263D0A13B1917A86AE3D -D800879EE7D742328B0B1448AF3540732D52C9D6530CE36032586D5EE643BF51 -17492A3BF5CB62C9EEA019F77026B13581541A06A1098D6F0E330196E0B929E3 -D923C0B43C28D0BDACB639F7D0474B84A43A3CB8A2C61FFF0C07479EF58825F1 -133487DE8B2A382B58538855165F466A3F066BF3BB90F3E49B8F92D69A02D0B1 -F79BF014DF7946D0E492E936837C9102240302E26726943BE70C0BC64BB08D4A -9C0ABF2E1444980CD359553D67B178B52797BD03F64C69BBC4737C654DC2FFA5 -29F64C35D7CDF2EE29DA97A7BA4D32E475702767290E984BF9EE85EBCFDBDA24 -C984826C7564AD82249AD05DD17BCDDFDE646E822492CB3E6648C414F9DB4A20 -A76F6DA8EFA046A0A50A2834671B66852CEEBBBB57F1C162F6C5BCE7A3962A2B -D08D49B3D8A66882132B494FD028BF40161BD24B07F3E851B372D8883BA6B955 -51F5A535D8D44E9F5141420798770F368079954549B505F94541B3988BB1716E -C4336D6FF12EC282597DA8DA87EB66BFE134885A7A1E27DCAC28B228A50CB41B -5AEA034FACBE35433B0764F451A51DDCAA3480A07910501080A94EDE59D95CFA -94C8EF5FA0E86E751A1DB653D6C9022B94CEF77EE80455FE513F17F07E3B6366 -B14032684004763E72298DCDF3A57222D64DEE2E49D8FBFA309FA6F4B78F7414 -CB30A2C8F4168B9DC02C4D489CA1305DB50D1F2F02AD88680285C85DE712D2AC -673C235672CD6B428766575C7032971930AE264A768D40474C275E1CA9D8E690 -E592C565FFA7EA1CBC7F7FA586ED8E2987217F871642F677A588DF3C10F2A855 -78B74CEEA437FC6328DA6E1FF942CE6FA971381FA6440490C0DB60644E1E4237 -E2431B475D7AD678E6A72AD0A3ED0EB7E026ADD2666D99EBD4F05C2E1C25FD19 -86641C1AE15DFA7489AB7B26393A8F77F1410507520ECECECEE8CF5D6CA41F7B -85EEC1DFBE32CF43514CE691289A06286A46AC0FD23A23F7CB60293685ABCA88 -2996BBDE3D98F57EEF708B22007F920EEF74A55BEA404F6B7DCEE10DDBC99241 -E003FFCE303F78C5EBE1E4A60F33C1FE91877806F225712D2095141E1E43BF0A -23B42A2C3BA99F1F3C46127211F4B9D8BEC8563B24D3EA2F1D3C37C59EED8E60 -EBC4A7466E963667BCBA206DDC700B1F99D5BB54B1ADB843797DEADA6DFF0D58 -43E1EBEBAFEB9706857712EDD1F21D0DD1102A95950223A36BD84BA78E7085C4 -ABC2B9852D1BDF205905948B35F85A553FA3719B0E6D5CE2D2167EA238ED03E6 -C83B2909079CF9D0AC89E8ADF899FFEF1A951158C8257C256AD7F00819F29F37 -A3C4D48A6C7D1FD0D212107F462406BE4C74C7D241CA0BA93FE225A31190505B -B47F435974F65228B39D69A2CD94D2E64EC17A0AE11FBD7F88BA89868CAB6B45 -06C9F7C0788A6758594796186EF6561723D9E3D540A0E4C3F4681285E3E53BB6 -0DA52F4A2BDD414D1748586BCC68BB408775EA9A38B02C1D30A12E6EF56D702A -4B2A443854D9F13DAD905587E879497455F80FAF60D5E03F0951A5F57D6B0B87 -FE19E867C3EA3CB445527EFAA4110770828CCF0E013C102C2B1DB02AB939D46A -8EB43B028A10E6C7EC3E616FB498DBD170333013A4008635B23F7CCDCD8A0879 -34D2FF449D6F2B90C31AAD0EF5F5AFB312E0FD496FBF5177999EBA15A448E6BB -A45F5460FA0E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 -08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C -30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF -C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A -BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 -5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D -43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 -374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 -DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 -B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 -63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B -89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A -5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 -C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 -7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B -EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 -4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 -7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 -30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 -2E080C10DE923C18A4E8722C0BA2247E4445AF50CF2457D0F320AB16DAF58530 -09C469922A41201DE813145520288C427C8CFFEAE4037F0999B1ADCC872FA414 -E5F41DF44AD1A79F10F62019BCD84663280343E7CA50FF4106019AE0A0351B36 -F889814914B4CAA436A5E2A1524D45CC0BE6DFAF1606662B5442CBF6E056E49C -97525F06D93E23035257668B6CA0ED863E09AB10D930BAE8EEF482B9ADA477DD -91138C17918C0130A8417BEE30145CFBFD9749668656EDF546845A471FA50E0C -018D46A2AFD5E2C587F1BD1A439215AC8FCF61501657A2966E51C4D986672B00 -2081D80293F414AA902D91D0D1ABF7FA6DA81770E4C38F16D3D19579829A347E -1745955A03D18CB37409B28BE6579F9CF04151A2F044E99C0F2805291EDFDBA4 -02D67D6FBFCF4B3D3958D5BFD0AC0D01604F65FCD631BE5C49CCF9D6A78C12A4 -EB03F11923C1DF636433A112EA558D5F0681D4F784BE1585E560757BEE67008B -85C74A8F34EC016879E9B5748F14FE6076C7D27F58F4AA7EECA1F8148333A791 -E9C84F617004AB64B40C4C196C3B4F730B4FDB5533094F003C35BC2A33F194A6 -BF513D20AC55C18219440DB02290114BADF3D5074D0C336CE12D73AC9EDDD509 -33245C5731DEF7CC5C770EF5A820CB5B8993D3AB0B34033AAC8FEE06BF009382 -ADD7C9CA9E74922330E0DB6DB9359F475C377556A05611599606AC46157BE365 -B27382B2984406759B4E29A4DB0135E2C97A8FBE1B6230CA84E5B960FBD61BFD -EBB60B3D1DF58541F85F6C7265BA68BFD713417F32E8BE62ABB274948A454446 -D2A3C71DEEF2D0BB4C54542635972F892FEF2DE187DCCF429CC745D43C01AC24 -9C652B4048DAC3FF784191CD37CA564127D4B91000A71326769C2AA9C84FCF1A -5B512FA171E048C2346A98C7B81BAA590E425A3211B1EBA63EB2AD0F68C23D30 -264E24F0F89F752D5915A744965B9EA532E567E213045EE926074C5137853B0C -68B7F1A32BB6EA8C2AC6E1DEB03504D05AC453EE739631061C02DCF90AD01721 -0A4923535DA2B9991E4E9571954681126089D40ABF277433B6AD7F6A6087DC92 -31845CE60B70377105B48FA6EE8EF3D02550D160609ABA9A228401622315C48E -F4FFD3E24375A0D7C88D4454F55CE3970FAAE909780B2BE960DCBC3E42364958 -11BB1801659B6DDE9ADD83D7ADAF66A9580061F149BDA437FF7B5C98CF726A11 -438BEA6B7948C4CA968031328B69EEA5C30ED6DEB86DD36E9E5334B93A9F2381 -B141A64F2027360C9E7671C401AA25605405E507AA416ADD07BAE01489574482 -5529FC37F50197A1632CA085121AC3EDA547AAF667F0874078332B8AF7EB2716 -A92E76A5025448C81F69B9B7AFC56E794ABE5EFCF703A54DF577DD7C17BF6E56 -0540A84D67E32CBFB06AFAD3124998578CA11EA13E707EEDF5EE34689C0515A4 -5E63C0183DBB9D947DA2F78319408285D795350E89547BA0D1751E7ACDCF4255 -32F143E7FF199CE6A2C9153039C2E15CE19AB3475963239AC3D64D1FBDF5CBD8 -99B2CC4B8A08ACA3E711A795BE8C24F857EA747BDFEDCC87D32703BF163A32B3 -8127B04BDBCAE3764AE5C3697722E08490888FE9BBF5621EE0244865AC8FBD5E -B0B8FF2E97B66DD2A0591FF6CE09443F38EE65E999AF40849582C7D4A5AFF878 -0B32337FDFFEA19314BC17CF387C87641E34F285FE041B5618057748CB522878 -34B9636548B37CDB08B35EF77DB2E9A24D7685D00ECF05EA9182F83E770CDD6F -81953086B0A0C31606D991EC755B051E7C89B5CA9AE6C8F659EBC3E5CEF4B846 -3118F1C39F01BA1BA876E9B8CEAC46DD210BDF9264CCA38BC9AC2E651AD62FDD -5291C7D1B0D958B83C5F6897F22A9976665CD74CB3EB44AC4B8CF4D909812744 -441F3290786784D33716E27992DA6D18A58AE0789F981DC76C456ED7752F00B8 -8E81CF58D8549837EE24BEE7E62BE7913295D7883E5B527EAC1683B84C1507D2 -0A7F8E00792B2AA7D6B3AFF3FB91CF441608219367A1562294338BCFF0CA5BF8 -652991D88CB4F748F8EDFD039EC8E4940D689FF18A4C3923BE1DFEC77D51BB81 -7A12D76CAB3B0076CC7EA994803AC928E3BDE512F981854001CF52B5FD992263 -87FF68324685FF589145E0FD33BC3C81746B08D631DB60B190AE501007F7D08C -27AA346C653F56060D06B1E41E2E59EFEBF8295EB1B172C9FED55E95601043B4 -D8F1C5FBEC42D757E163422790D6A67589FA5D2790A996A2272F2CBAF69028D5 -A13E016E7C3D285E6EF9637A18F01FD879B0E4301648A6E3759C88C68A5BD582 -A4E6DB3D1CF5EF74955464229F39B8D6255DA47D8BAAFE09C928BECD13290F4C -12606756DA9576F853A92CF7C0B71E81C4FC15E4B78D002FEB3A56EFA9FD8F18 -DFB507358FCFC543677B715B2F59E975423A5CFAD6B00B50A3259A60C68E46D9 -9AA5611C7D839F2C889AC1B75695F0B1DDAD1F10938F6483C58F5D0F2F25EBD4 -F17179D8C2C88121B76E21E4A5EBF14F34FB6792936F0A169FD5167D2B4717B4 -10DBFC9536FCF8C1C00F855C29BDD7513AB75BCBAA11A4E6D8F7975AE469355C -C7AFB3CBF5BDDCB66CCF2AC56FCC7518E6941E25C0D4F3830D586CF9257BC21F -A97AFF2FDD093833C88477F917985EDAB4D870B1F30C6074D296E2AE21AB091C -AB1B5B144AED3153179EBBC9F87B9FBC016FBE8739F660E170BAA6CC2E14CD68 -12F2AE2FF8B41EDCA917909179FCDE3445D6F2AEB81C3214AE4F124C1472D109 -7DA7635E42FAD17CDDAC67DE0D11887711663BA505BAD344292600297050C8D0 -E2CAA1114D1A3204FBB919F584234F06EEE68C41440141BEC1A76F14F18EC517 -98029E371381D3F418699FB8FC659304689303DDB4D2EB0E164F38F07EAED0F1 -0BB4B9157A1A5EF36849BA070D084AF36DC748658D1569C6A6B99F375E47B9B5 -ACA4B0B399F51E0AE785D3C38E0AD77973A017AC6ED39C6B551582BA5D64DDCF -1EE6B050D81C98E93DB2AB9DD84737B35385BACDA96D31955BC1DFF0B6ABECB9 -EE60B19D1728CFE958267E753B7A15913AF8262EC9B6A04B24ACF6D8848E0A51 -9EFACCFE94F12E18CD095C0E99EAAA07D39F47362E3146FDE419183C80B29A18 -6E15FADCD59636C0DA9A512DFB4445CF6763A523C7BADAE1A510A156E042BABC -4D597DE5C5E3B6461133D37DF277711BCA0815CEA40908C1D7D7AD94D2673B56 -F1C38E8BBCC4EF64B0CB462BBB42449F5E26BE1F6D4E52B671366F4F15A77AFC -4A1B0A74692D7E57E0E3CFD92CC71E11FE8B30AE22B90D0896741435464EE507 -A7282603445853CE351B73E062DC2E9B716D30E12B88B6EAF58D288B0AADE133 -5AAF21C0635559EB6D4B83144309DCA8DF53E77A22712ADCF3B1F8440ED4050F -9D9D3F3CB866908C13E04F8D2FCCB19841B3D83C297F60FD9337D008E3120100 -6C29094E50AF3BD19961ECBF94C19BC86224FBEBD5BA9E8304B77CB805E78A6B -0EE1DD22A2D5FB997F1BEAAB082779F1AA73DF79CF1C2F4C4D34D7F9170D1BBF -6E8DA3C439B113BBBD29A7144C059ED6BF224347B8B4C9D19CEB246D2CEA8767 -2C68E0039C4B1F299E67439A8391BAB4FA60AA54E696A12A60A8CA11D9B3072E -5BAE7E3038309DA1AA8AB6D313DB941D19C992DE658E8170722913AFAFA8ECC2 -BF797ECC8C89095CEB5B3F17601D03BD302F42EBCAA8C905B197954BC16C48D3 -877B8B6C47EB2EA5BB5979E1E0A6FB688FB4288D3817F3CEDEDC9C5B7852D678 -EB51EE6E1AAC12D68B34274A66367C79DD0791C932A1A990727716914E4C5BF1 -F479E48F4817FA22F5112EE7458997C048F3BF4DEB83E7AA5B266BEAD42DEE0C -69C7389F5D48D33F89190257858B6099BF6F661AB55D0D6EB0F78B5D09FE2E58 -423001AB0758D10900842768CCA64752A5E93CF44B25F66A2035562D32A203F1 -2DBD00DAC39EE36A2480BB8721B9519E8EE4C7C1B1EF71B9BD792ABB1D38F8AD -76BFDDBAC0C67C913957593690AB0109DE432A70A94A3694A4E56896B340FE31 -39D3FD9B732812C32272C1F0DE4957D8EEC942765E6DD04AB4E3117636CA51BA -CAC9EDDD496DB8483E2914677C71F1CE56BDEBB4B9C64A22079F1F4A279954FC -C3BF659E7B7593B44CB1610DDF98B58C2C322D45F11B8017537F5311724864C0 -BDB38F650BFCFC7580D131CC4AEF3B44E05D965A5F3A3E6DD667F53E17FD12A7 -080F9A79838B742E937E998E6EB9F78F170C69B587EC8E57B675D89A5699A118 -97A619EC4712CEA771730F1409F3EA8100F6BEE39AC52BE3ABB67679293ACECB -2CD0EFFEF072E84FCF1CF9EBFA2B0BC7993DBDA1496A7BFD394772C10034EC86 -F2E7E963985EE6E7BE7DA1C608A50E296F5B44E0CA16379C8BF999D13DD6714F -280EC9237DA2C80607C309EB4B15908F37C38B73F0A2A1B65715CD92148B3334 -7C434A3F70CCB68E9731F2C61A8C67FE218B9FBE3BA7AB4403B9EF8425A88370 -8EF6C06BA166BB224026E6ACAF5507749CB930E28B9ACB86EC107B684A8106B3 -9816DA5F6E8FAF47F4A79AAE76BE5BA3C8111A4D2C5050132BBE8202ACC668A6 -5DD3C384E179AC0200F447279B2D976EE80B34604D918533FCDCDF98E4FE04E4 -2B6722F4FC69E698B563FD2FFEBD607A1EA761090BA03E43DD3E19B973BA4177 -6C5AE3C1111844BCAEAE18DD6B62421BE44D81383B1F125DCBC73DC2EAE3CC3B -60EA9DB613E0379BE7B688E41F7D59A25208EFF664B1C12A9E8B2FD83F2CEE2D -78C043C9A2A50C7FF3CE6F0CFF328CF8D9CACF7571B044C172F7E0A4F8878D22 -129C415A86B4E794567C986107C16AFFB71C1AA057C21B9C8053563B16354923 -E38F161F94E7714F0D6422DC96CD82957F9147FA1CFCC46B1A117EAE4FB8E977 -C50A169B9D4BDD7A18CABC936650BCC545A0C69A2CD1E6DF42A9A746DEE0DAEE -DABC0CFFFBC629AC2F60475CA1A38252E5112A1DDBFF6711EE22B95411546FD4 -27038ED19037B7C75AECF4C99D6D46DCB39FEC6641B448FE0DD860A651BD6892 -88AAE0E352129532ABA41BE35A15F0FDFA5D6DD84DCA1DBB5F169ECA1A8B298B -D104C5B6D29406F4E48EE6BAAE6E7EBB3CC5FC4FDC1686AE7B4D9BFCBA8ADAE6 -F8F26CBC4E3D4BA7BC49BE8EA170B13AB7B852EA39EBC0B0B493444AB280FDDC -6609BA785D947B73D1D181F2F9A67D7E55C710984B460338898418A49E01332C -B94CB65168EE1882905198252DE2A31A207060F3BD07AADAA6F1C683EE047B5A -401AA853075356E23AA43601F865C6CAE951D3F868C7476641B1019ADF891693 -C96314832AADB7FE2FA03DF3A52F9104D93D448756DC0E6C7DD5285F6DF83E78 -2A8F83FB2F3AF613CE92194229383BD7A42070AA0686888FEFAA8D4BED413839 -F282D58BA75D6E7945F1EBA89D172B319E76B31C8996465F68253574C7160893 -75F8A278DF5E68D6290D59DE2A187D080A5D6A94295623397C2F84D2BDD41CEF -72E265F5FE15F71EB77A2E2FEFE6DD163CB9EB741DA7A0B60908CA367EDF2232 -03F986AD7518685A49E9498A34DA63A3C10E8AE6ABD90455E50F380D6BE95920 -6E675770B1E852452EAE7514734031848921A99CB473E4B6F327331F603A5730 -0E07AA58BA6FC7D90D271BEBCDAD6E656F42AC02D7CEB58E30F5C9219028A86D -69FC173C5623E21736C1D5DD1945EEBDA39D47DD9493FD1ED41380653826B1A3 -6384EA7E12FE828CB36B2D9551E38F876C426F75AFFC3B7A626A4985AB9D3DB1 -72A3A3F1AEF5CEB8B7B70A04F85C9C4CBA278C1FFC109483614235D3279FDF24 -484F326677A9C5986A96DAE4520C5B5DD75CD23FD0461821B3025E796C1AC2D0 -158061A3AE9358775608D288CF449198D3A5A7459649802CDE6BA6EF043D7450 -36B505F12CC431582530830ED84EC4931049510DCC1BB8755203124AC851F0C3 -1F3559793848CB25D4C091D2F559EF43E26511C726CC235752CCEB98C156EAFC -D215D0E22CAF31F5822FF47C544BD876DA4DBC24E21A9C9BCD3DA0FFCB6A9071 -2002461BEC157A229EE6D7AC28CB29D09475D6F9D6405F7668E2708B84C7D857 -3A541A70C269EF06F10DB00C30B19FC267772000C2CFC555729781A4FE0AB522 -C09A34977D1946A3453A4B10F74B82357D98A3727372E5803AEF73A1D7E90F80 -37DDBA78233AA1397AC9438EB1A962B91107200CE8A4E2BEDCDB669743518F07 -69786E45C1D79821AE1F71B3C00F969A16C728C17B29C0EC9603BE4EC5376A6A -7415580B2C402E3ABAC2B4473A86DA78BA69BB46BDD0590DE573E72882C5A922 -C0646DAFF0D552B412A6B7E7E3F1C59C19ECB875DC43F0AF2F8336CF71D968AC -F1894E0EC009666D8B37D5588F9B9F241788391D3E9B3B53653CD7BCD1B25EF9 -562E71B73B59F6E2A546A77188576EE40849921C0C41B38EEB1278E91EB13AF4 -6E06BBE37727227F2ABD70A16EC68B17E6B3E08A415A2A1C219CCC73F75B7669 -29D14DC63D4319A2076C3E94595A6FD9AEBB0296A0C1A72AA0DE3C1EDD6DFF63 -ADD96B91CDCC7B69BB01472785F89D2C6F9E8CB1D27761034A711A28B5C2B482 -A446C59BFDBCB1A9BAD0A62A46570C62DA58D0DEF4587E602C4024B12399A9FD -C49869727A655C0DCE803A432177D329CC54F034DB84C20337D6101CA3E5ACAC -060802E3D45AE4DFD6534171783BBA3101286226096C72C6E75F33C905A1D172 -B0BC3734A52E8D22AEEFCE5DB2E7FE19C4B8229961252EB56E43C27A20694B21 -B75D96F8DAEE6D1F48830D02D10BFB50A69C2EA2E585F74D3E086B84D7DB9E65 -3ABEABE4865EAE572A499F1DEEF7940131A4F821977BF9376160E1F3ED4C6F55 -4DEC96C755D368032A9B485D6097B519AD4FF7989295952A32D7DE660E37EA1D -F15D1F75CC7BB1D837428F5B47B212EEB46932F48AA9340DAE0F404836F4307C -BED6A19D55049C9C54045FDBCEC701F950BEF2626805001A68FACFB7ADC54A7A -9AA2E2990C5968CAE23828B06A60423869652D43AA74FC0B1E0C1ED6C4C1C378 -29B3F369277C25B1981E85D41F5677E2AB7B9EE3FD31D2EB8965B65AEB9941BF -FBE3A2CED1A90F0436AA4E8C19B32E837ACFC84B330EBC035FB5ACF7ECB6BBA2 -626559DA2C279AE0AD43A2818E21626DF050BE4A54C683825CD6C3BFDBBA5FBD -B1709ADB8E0CB64FD47EAC22E1D3205B01CCC98824DAAF7337479E122C954426 -0E67A997027A4B8A37A1CCCEEC8DE06239FAE6A20E19D2731972479D04DC3F7B -8415492D81ED2B04F8A7921F83A8D3F6904A68508276AE029F31B33FA1608FF8 -80080AFD5B2EB2F974B1EA8FD301F05026E9A5E28768ADF6C5A7DA8755E06894 -D85B5BDF75A11EA31FF53F0678A7741D8D88CF6223EDDD0019A8C638B6A138E9 -FFD17C7972AAD5AA6CC8E271E84D376E034F507334A94E0A0CC9A43D12819199 -738AEC2DB68E39122ACDE7D0530DD9EE6C686D04446D2D2D4F0D1EDB6B594C1E -C07CEF409AFAB79974167CD3561A2535896CF2C0741950533F9C35D552A1D59F -EDDC95A01F85E095A877AEA3025A86EC10C69B802E72DB5B7339EC4341808FC9 -17374DBD2A349B8B72C3CC588148153B18B7D644A7DE5975CC8A574484760C14 -C9F5C750CB6F8887BEFCEC11A01F713B7CBBEE8ADB3C5D7687E9105DE79ACEE0 -1B6641022CDD064CA528865136AD083665D8C417E15615D9AC29A2B52C4810D2 -DE294CADD0E3217FB84F954E6E34DD1C1365D76356FB2559041A436186B2F58F -96D8F9BE6D4BB4333CA83EDEFA0543FA66D9176D81E4F7CCDF05571553945908 -7759C20348647D1EF3E09F9F8429ED2F17CCB5380C256BE7BE8817E6469983BB -316E21FB9564DE76ED933F93238DC5F2CB140ED9E0906395FAFF35A679518835 -6ED2E65D0CB939E8DE46720B094CF86990035B0B9351EC536709DD2477233388 -957DB0FF735CCFC04DAF42D90D0785280F62B8EC6E77C26591A84A36729E689B -E9853B88C2DA53F64E677786BBB8301B19EA6707FEA8456C38C53061AB09E946 -32D6F69ED6DA83934A37B7BCE7D9497266D5DA31A11417DCD3750730A74BBF76 -C0C2729F29F68F30C66E4B1F09AE42FF9533AFB8F27B811F2B03EF1C57B7DA66 -E0029CD236D04FFE12BD00C1BD6ABC65DBA778A8BFDD127862104AD6D53471CA -CDBCE38687A2CA30E2589BDFB1D9776CB442FDEAB5909744390A228E3ABD73A2 -EB3187DE932D603A7CB623367371657D8B6979B80F041F6C69E86D73DD326347 -0172FA5DB875F9D0D42594202655C2818EDCA461E1713E900C966750C53A69BE -7E5DE484DF282CE88450F099755D1D9739618E2D938CF8711187F13556AAEA68 -821AA9523A9CAECC22BE4C9BAE30E8F5B8A4ADC8CCA3F414256E7666B6E61097 -E0F8FCDFCEE0D0F424D5548D511FFB969C9C4DA9996D80D6349A4F4993EF5E07 -18C2A79986D491BDB738475CF07D5F6D7B51DE07A2F2C70BB8D36374CFDA6D48 -4503CA707EA969F7A2D87A94EA93EC2FD6C498411BA19DD0EC4862BE8CB218FD -EB4D11BE9E77E945E3CD9BCB19C6F9B59B40E9FB2B951E364B679A5572EDA20A -093A5BBBCBE69385728332D8012E78E421DEA8C9C96445F064ED7DCAAC0273FF -3B3AF3335BC27D53E54DF0E2F543C7BBA500C37DB2AD5C23B8A73A7EE535152E -B582C384C29BB4842F6D4F3C0F7CAB5B44FC1C30C8E722BF3DD43EC687ED616B -C52DEF4FFED93DE0AF5A51F260CC451E27B0B44729FCFDBF62BFC5D67A925989 -C71A829CE46D4EB0577C5847A82D5E80546882FBA3BC4C72CCF9B524785DE77C -E53FF9456B9740D6117173C7F767C573CAFB795138D2D05242E8CD787CAEBC6D -7C79EA7A0CD65346E3C3B4FD1E0FEAD67E96FFF40D3B6B1BE13846A960B29D81 -68E81CE13FD515B2617FD48CF641D05BB0B4F5A8D6D50FE8F52AE36826AD9189 -88810C78E5D300171434E05A35763CC0281EA5E4A5F4FD8DB3FE850931106924 -0F3A2B9407D947A446BA9E86FF76CE619D7D8255F0DC9D37E3580C82554631EA -4F03CF84182BB9CFDC9EB4FB3FF8AAD60CF25DD359DE5BD564E5CF4579BF9350 -EA9F3B44475587F66B25BCCCC4D8AFE311681741A5B63DF4FF263BCFBE410F61 -48217A3D7FC2D8B38973513ADD62BB64AAD19EB5FAC08D653563101EF9DB6046 -16BD7F61C2A20F298398C7B356CABC47968715A16D8CA13DE2B4628550AD4495 -8F8C53AF17E0C8731F390560F434FC273419C0D7935A76E2F85F696D0392818C -BFA2C3F921DAFA78A19872746448C3C55A55FCA36EEE706BC23D73F1CD303917 -A3F63B2FDF1A425FBE6789C101FF15E5C66101CD3FB2AB1035A0E725C6455DF2 -2A6329BE6D62C791E2C0AFF8056BCF5B59CAF1EBDC4164D6D8CC47BB0F420209 -C42DCCF18750C49862FF5040610180B050E0B81617FA8DAB55D6E18694AC78F9 -A2C5205AEC3690869E8DBBFA1D41CDF4BF8D5617654B65BC738E6866D2BA1C23 -0C9F6534A9248CB12D7141697497C0B089BA16084A7F99B85E17C3E335C139E6 -8A864C3C453E867688169D44F34B3825C9FDA2072EABE45C87372370FBA0F82E -CF5B0B96356F869DBAF1081EEC193B1C4A54E733CCC9A43B9BC7062FE32026ED -B1CDBC0CD142FC882078F094B041EC305CB74F6A182467DE0BBB4ABBD43CC7F6 -4220752F87DD5C06526C9E1680E96433159948522269C6BD5C165F6CA5E66FF4 -9D757FF55A21B3424B4604BB49C6AD1841CABA884FAB2AC8D52873A653112926 -C0ABAFA7990F49C6D5087C8BCC04261F5AD4F6319DEDB33E321FD2399D60B9CC -D52D3F3CFAB819B6B047C3CDDB40BC669DCE76E4A6560ABDFF5777C5D7044215 -C2EAEC926A92569335D7C5EADB9FCB82D4FA7DEA1B2EFEC6D7EF13C5209E84D6 -FC93ABE556ECFF7CD07ECF447B6F6D82F3A7F7CE3F6E75503181B3495EB0B933 -79ACD4BABAA3972F7BB81F9A786E63313216FF668717AB5C38A650F50271A727 -D8CA027486E7713170181865474F409D80390E1BBF784A6C6240ACD188801FB9 -261255640CE90142D6A78EDA30A84A1A146C7B63A74A180B05618E2EF7765EC4 -9B5619DEDCE41FD00EF3FF273C9BBDA8AF00B06F7954959F249DB4640A96F0DC -1F6FFD14ADC2F99C0AABE152434C8BD7E45F611616D2530E862618CBB5935C37 -9431A180BF14D95970763B42C91D4E353D86B5314855A5E351BCEF14D606BF16 -585356D57949CC4D06E5AD54BA5B3AC1FB36366FD0B1F8598878F81EC83502F7 -960585DA213E2D670C0685D1EF6795F1065942C522E3EF6957FDD67C5FF19800 -E518F1A3971FECA7BD3B40FBA06065C23691FDF1E96A2A11E1DA179D2C620AE5 -4C18031290D83A1A4D6CAAF6783B3258640721417448CAC44996893836627D32 -45E07DC94090545C2BCA857E598A443299FA12238BB29AF9E68E447940CB36BD -2EE6CD73555D6601A450DB06AF4ABEA52A9960E04C82EE91CD4CEB085276378B -E90812B2C70EE66EDB3D031DAAC5B6DDD55FEFA329D48E68CA5B18EC48EA881E -9098BA42FB6BFA8B58C58337093ADC794D637391AF5FF01FC3EA50B8542F5271 -6AAEE5D496AF7F4D6F3EBD19AA36B073A274CDBAD246B5A79839A84385C414A2 -635DAC09804A3ADF10862C64236C6ABD31C91318E77AAABFF4857F3679CCB17D -3B19E2D3F5A92688F6AD9AAA1166ED1C7FE822D183EB127BF6BAD2A3B3F0E556 -37B05E50210C87E79A8B68C6971B59E54779FA2A9135A85794F4081E0A14DE7C -D2EE771131008C83C0E198022C292174AB4068EE0D53A16F23DF10D5D08FBBAF -FF0BA3B5D70857D093416B0C05589AA68903968815A89EA5E89A7E4371EEA504 -22989AD5D2125658D9204D32CBABBA477524207265A53D8F172BA36695998C11 -986AABF5C41DAC03B03731C604BE7D4CBBB613A4CB5E66AA396EF0C77550DE32 -F9294F8D3DBA42BF147548B26D4EBEA1495406D92406C42763E4BFA6B5F7EB88 -F11868BAE28274A320F3CCC40238FD6EDC619AAF39EC637FC6DBE6661558A21A -408886ABF7A86DB4826348D379F0A21C0E2124E711C737ACDA7C202F849CDBA5 -BBE320D26FCD322DE78598411C74026F0DD96EAB567F33CAF36A4472E7790649 -E9CA91886576771E55CC04D95791DA23214D8E95CD4DA4DAE995EB68B2E5D034 -323DBF719F4585A56D4F333D08B31539328EA1642EC4C2BD27DFE9FA9488BF7E -88A0F280DD5780E5803D4BB55D9A7A8399CFABF8E1ABD2991F11D377BC452BB0 -A6478AB422A185B7D6E9F6CF0B322790C715B1F446A40F808461C05A51F9DE6A -16D774893F62EEF0520E5227C0B768CFFE087543F953F599E7F639740F79484D -005B12CDA1CF99A65516557A4D71F41EC659DD04756791D9CDF612DF9516F004 -356226DC862CFDC092F52A9B5E1D76C6BBEC54CC22E16F2CA092E2D8DB78D8C0 -45B2889B8A9AAF70F0449D1213029F05D372F408245058AC07A069519ABC26F6 -44D49FD50538BEFC61825FEE73639D70A52DB8DF5B7B1857BD0F007C1DABB4B5 -A4FEF2C9DDC3E17B0B1639A1C875929833F0FC63FF9A260C7FDD22B02204AB07 -D86F76A7B6FA25E8629DB7A263F095CD01628C1A94B3C5FA0BDE529D2A98D613 -F8244214772D57A330E26973F647FC4B9C9902197BEE1F7181DDF8E15B4F20CD -983FDA9B61ACF472E1EC8CC4C83A3338B606E52B3455C2F3D54D570CC2A6A73E -B0954AB9F361B9197BA06365F56BE621925EBFE2A1BBB8E03EBABC1877C1124D -9F343FFAC47268A0CFC72A587196849D0B9E53D9B79294D204E0EA5FF1BE3CC0 -FE02E764A46CC88C3B33ADCF3983C89554700D7BCCC61F09DBCD40E94B14FBCF -6E8A91D11965E46F20C9441001A59390BA2EAC235BD4FE2B995923F698A9D7F8 -4AB20160A0E72300EBF9FBE6E9F7E3A25B71F7A183DCBA3C650CF60D2DFDA3DE -D57D903571AA1E4DB9986EDFEF125CADA779262CC0A33D6BDA3D084983F46C1E -4A564A4D8B9029E86566781E23FFB6E9D6CA3CCC6A2DD8A4A5688A329913C629 -8BC0187CB8F95D282BFF33298A45CDCA38D62E1378CDF207C4103163D91EA06E -90345EF0702F549A7BEF14EAFB33D49776DEECDF22246E10CBF5180F2BED012E -4248DA7EF02E34970B83D080318401D77D55399B0CA69E1909A5FECE5A3FD9C5 -B66CED7B7C03AE0CD76BF8CB24239D38F7C92C28BC86B36A238D7230EF49A3BD -4D051190DCF146636C52B9F1E5C8FAA62A63786C0F049208C6F8D8172C2BBEB7 -D85DB7C4436FFEA1778AB042AED56FA8D6CDB7E93AA6AF825847669DCD9157BB -0E51F1F3E72576DA81513E0B1A5EE7D80F774FB8B8C8E2320826B99E51509CDC -8299E44E44BA054A8B9302BCFEB0199508E653FFAA593BFEF9E6B7050834D022 -19E0960E02B27DD84C00BF33BA87562A0697C2AF0F6C32BCB6A58009C649B927 -50971B89D8AB2687187B2324513B38310DEDFF2FC9FFCD46F98AAFAED2D122ED -C270FDE6D837364EFFBD17473D2B8A686F74FC3A0F6A7861219B145E241FD58A -0CAA17805D78E7AEAA897A2C1EDCC6876D292AE7B0DB6D5C2BACE74687C0BE87 -A01455686C3E509BCA6889E422ECAEB607D1D70D8606C9E9FFE7C1C49118BB3A -D5BDAE4B89495D828843ABA49C0CE749A940D9DF789E49165ED24145C8DF8006 -F8FA32A8FCBF088A1A22A8D789206FE8C17732C02F303A109745CE8017E13D74 -4E48D9DA75BCFDF129DEBF32301D52592CD5EE5A7CA2AF84B590B8B3EA1C01EC -63AE4B00BF74B5B13F0DE0EA6B49F6849B70909630B76A1A0CA692743CC0647B -6467F3F2324D8F4A510B034C59BD0E3ACAF3E3FD30A609876897CDD3921AA6D9 -1F4527E5A58BF2862CF6716FFAFCD9BACB8C20D78E39DC001E6387E834E8709D -786A786928D8302D205EA0BEC32A4B95ECAA5BD29A91A77980E0024A754C462C -4831130591AE41466E6CDCE10118B8D87237EFB50746A6A23076EF4BEF2574B0 -447FC6803F5BD80B029A1A94431CE2ADB6CED67A977252E4FC3C03ECAFAD92FF -5689FD644F4D483906BAA88566FFBD737745CBF3E5FD3E33B449DADFF1BFAB15 -26E9CA01E757DD2CE79C440E565500215E9AEB1C9FCB2FC5A15E2F73F2787F17 -7B86FF22DDDAC458649D2477AF3FBF261E7EDB19EDE0F8120EF24D3E12351692 -220540BD44BF731F1590D2F00A9333F29AFE7DDF9D85549BB643E1EACA09FFCE -D6F66F7C646C3DF14F5121B34E41DBBA6533705497A448C4115DF01E7DF753EF -61D9B8618796AA26E0A8E783A6DF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR8 -%!PS-AdobeFont-1.1: CMR8 1.0 -%%CreationDate: 1991 Aug 20 16:39:40 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-36 -250 1070 750}readonly def -/UniqueID 5000791 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 -48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 -9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB -0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB -8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F -EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 -FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 -9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 -D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 -9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 -ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 -10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 -83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 -2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29 -044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49 -A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0 -23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413 -19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42 -1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39 -8BF7664E30EC188FBDBBF995890F9AC6C923684A02F6C7DB89154D09C81BC7EA -9A2B34C9806216117E5533541980DD76B8046BB7221CD2EFCC188EC32B66085F -E42A6892DB535EC02828116588FBD74EA4E0E3BFD88684FA6C7CB71555AEF77E -0D78142204F285CCF060D964A7967A6A2154B3D08DFE2B2322FDA86ED5D45470 -EE9B589449C6DF08697D3BAA6280D74E342FC602E5FD61DF2D74FEEF1DCF80C0 -0497F3F1208A9E574D216C3B48093AE15D11F9847624B5CF4857D570D6C0A907 -14D4843707484EA5D3BAE8D0672F6B3A9C8C1ED6BF4DAF2A81F5C7FC263CCC8E -9FCC30FC885750FD23B170C4A001EE0D0FB35BDFEE911AE9F70A8C66DB17C60A -4AC74DC48522B655F231C01E4C61E959B0A0CBFBF001FB0B42E4DBE9B1A6BF9B -4D20B0DDD45F462FF4719E893B5F61078860087D3DFBBEF960E1A6F722385F99 -64460E5CCD0EE6CF95744E2131500B2C691795BD499027BCEBA9731B15086FD3 -774A3BADBDBE26012CF3F4001565ABBB2C4642B339BE77343AC8511D720B6272 -2B606999427A671063AE9D97DCC822FFC39E654E077129B2CD9B295061BC7AB3 -25223A9DAF1D6835627FD62317CF9BCAF55B04105D22963838F3B4D6ADDA95CE -E5E49A6BD2E7AFB72E564607E122C179D823DAD649C5919671E2B53A8CC683C0 -CEC0E9003F04E200FC25DF5CA616B0B19CF230F6BCC671BE60943E3D440D2291 -0D15111AAAB83B4CA5C842369690C29408DD421B5EA29E17974FE032235AC25E -2019D3A4A5D3F45884F5C44C08C35C205DA1C032208EB9476C6AED686ECAEA46 -D63646B2E652FF872928055BD6A5310D185A6934C286AAEFFE58E650F4CB967E -D6E859A734B62C19D3CAA63D31C71EA216D3EE53C3E8E952ECE9DE4042C95BB7 -EDDDC9353F5DF524A30563E952A31F5D040DAEF1150F87E400A4AF38DEEDED55 -8B0F4C717E44D6C4B9D6A517CEC4F8A3525ADCD321F12F81CD82D27E496AC1A3 -78C42B954025DD0B1B28DE9AC66BD9AF171D66B33FE1492D087FAA0921DB8CC1 -D5C0972020BCD8B667FC0A249AECCB8CAD6741DCDD06F0364613EB26DC2B95AB -14CD7503667EAD92084C99037F59BE39F98AC2D02F88F341C7CDD72EB1FF7D68 -4754AD07D2385D3415E04DEE3ACD5DAA941585A1215BA426BD5E53A62D60DFBA -937C45B0F9CB1E5E42429B1747DAFFA43E4A5234F34B7BF0D10442D16DBF1D0B -7595356E73BE3C85C11BFF63E26DCD1B4343419C1308E2312527E3992FC6515F -0143C7A98099668D8AA66A432D5FA26806268C4D6873EE7C3B90E0A368168C33 -3FDF8D483AE0151E7C9061CEE544699BEE1EF5E8BB9EF897745FAA7CB2BD3803 -BB46F0E6F01ACE744482EE4D86662DAC3043C5716D0E2A77DDA3117C70F7225F -CE2EC1CA00663F019A14CCE473D47820ADFC620C3E2F9AE0BE50E909934B25A5 -8BCFF6D057F22D43AFAF475750EFC99FBBB5C1620C73FD26F4145F8542B89CED -1AF6E4D044F4D1F58E8B7F3D655112975D8D996F252383E4B93A851DE80F6CEA -9251942309E3591CA732E1A9CD8AC2ADD5BAC4B0BEF318BE73C15E2F07C03592 -3252891CD1D3FFA120BE2A496FB417D683E0F22DC0EF8F0F7303DE3DEBD6811A -EAACD37AF708C641A75FF6984AB0E9FCDBBC3F0A45DB5A146EDB1F99BE208871 -BF643DE15F237F192F8D990612F716F2FC81EA3ACAD89639158030322AAE35ED -EDF89F0A8F41A927D5F536ECE5EE39FE6F19E9F9966EB5814C24134D70F44F6F -A79582D296E362DE55CA27C92AC8376DAD8BC0EDB5FE9C60B0577C60297A7F57 -9C940CF66E5E80BA5F802D584F3227C1C7D5DB243360F94AF4D7C6AE6BAE5FF0 -47EABA66F54F49EDC0A2D35C8BF5310930515EA95569A00C76EA23BBDF958EDE -A1BB8F10693AE3D778B473A350DAFA4BEFB26CD56F99EA0B60958C43BCF78576 -048503553CB41899066F60F6722EEF4FB78C72DED9883C2207B0D72EBCA8360E -EFCDA95AF624DEBD55AC802A0A9EC0AB78C7D6773ABA1638D12E20712EC4CBCF -28981E3F95BEED6FCA15DF4CF24C8EEFB0AC314466E97060B7E5D4C23F261EF3 -29AF6D53C08814D9FB15F50921A37BE6A3D663A33BA80B6DC2181C4D654D048C -BDF2538423B70EF21C07CEE7C6F53A65E20F861657BD5C9347CE43CAF97FA1D2 -2E3AA12CE29225C0E52F5E75AF09F292F1027DBAE29AA7B40C330F4EB52A4216 -06A01645A9564C875A701A4D323D7A4E52131981A044FD52B4EC7156DFBD021E -DFBE9AAC28C4B6E7AAE4E000437ECE23B404A5DF1E2EDA2A256AC8893B82BBE0 -6FAD760865E409D03B865B878013CD3C74683D66724E6A76078579ED805C69A9 -131C90EF1959BBC9C833807D10A3990015F75C7338676B4EE320B6EE7082327A -2F8638A6AF9D40D28E56633D9601D24325DD1CFC96033012D45B545565CB67F2 -79BA7F6B638CC7416BBBB078D7298E544D015154D56F15195525D351156DE994 -93D242FDF8DABC24E050F995839991BE0214BCE0D796CE1456C82E28F546C17E -F7031B8068036045ABDCCE01807E44B171B50385DB3F4A5FC967312B7A1899D4 -B0DBD1B2D935C7FED91DD3BC8955C0CC6D1C9FA894554AF16A7FADA0E30EC20B -E5FDE32C0E94322C2E0CAE694CA62A555929C8CD57E344F04554320D8E8ABD1B -7E1AC9A4CDAC38168C4BCEED9D9BA29C321C22F7A4C17504FD6026DF513B4B0E -12F0B1234C555FB7EC19D704E11F3C8FF22A59A83E3D37FE4C74E37B709B4CF8 -8A054BBF6C915590B87BC824DD8D52C5DD074B605991C4C8E276ED8300EB974A -486D59C7DC277514C57A8A835715B4893D4B7820134B5259DF699728E20E85EA -90A2C5E0ACF963D4C337904C48ED851BFE2CE7C71DE737C48EE172E57DE7BCF8 -4A7542EAD0BC76D813382AB254B9898F0929045F841FBCBD085248F04437F368 -9998D93E1CB93B96694520EB0E46B0C1DC8A272615A4EE1A5C89B116F0E0D596 -F3B729A2760B790663539756611F27BAC5D0A5B007411C48DEACD10C3B85E6C6 -079172F9F7A81097BC12D1ADA805F06A7812952456687747B3621D7979C46F14 -CAE2EEBF488DCDBA8C10E171A2312373D166053A4864A0BFCCB958AB52526514 -0638C3C42603FF8613051E851B5177B67E19EFCAE16875079B1CE8B07CCB055F -FDA70BC4906562A76BD4DA1A8A7D57187F6477ABAF8AFBC49FB0DEB3F62213C8 -41F5A469F84152D20B72A1C48D8072E87E3841C2B832F28A7EA88E4727457DCB -A9DE91010E83ECF4788A7B2BA0C10223AF216AB589924FDD22068C390B04DCF2 -E8809127CD20C4A41EC45F92FCD7F319FEC50C84B0317FAA44CB7F1245268CF3 -6BB8067AF4862D842F743E282382A55A82C113513A5576490C5059AF431A2857 -301CD331301A2F92D6E8BAD6EB47DF90BD21E561AAB2ACED9DBD9BA22C3CF522 -B6E10919F2CF1FC8CA02D44935C29CF8D3A7330A91512982E219D56CD71AB196 -38262D63B4676AE3A30C416BFF50EBE68302337FA27EF74227D64FAFB424EE9E -DABFDB7150D5C336F58A2FE9AEF4538519377833A857B11C8AD51D1A093B1AE9 -E091980F3850A8EAB2633CD9090293C798200316B85E292AED878AD7C28CF0AA -5F970619E2C0413B2B719ED01DA74902D163F0C13DF48C01146A4277E42AF371 -C3496F5570EC1EBF769F1F97FA142BD660707028BB3A5F1EFCB20DF215D5D538 -CC6770438F7B86D94AD64D38BB3F62099C04B8FC6F864665C4B03A178A3DD738 -45A58A082E7B6DCE7CC82FAFEC2DABF443F9C0A792A426AA5EF425517B47F11A -C6E9B98B1D468A3F6FAD221BBB69E808A900A0098784A890D32D88F3219B528A -18686B5DDBE6A683967C4CA31A83214E9CEF6DB42C2FC3E18C4CE373ECEF038B -04F26953932B5401F05B91A0C636AA111063BE72DAA2A60AC9E7BB4D8C3572CD -FF032CD4F6BAEEF136C02E7F997F6CB513CA2492190043E4D4C3507FB8408175 -0FB47C08DDC70E86D3BCF7F9DEB15DCA6583151074DF927BACB9707DD0819085 -940A0BCED41BC18BC7A62251203E2E1C010AB0F5B44A842356AF7CF9BEB013E6 -A10362D47360DB5067849C835AC20754F9C9F0B7FA13D6A8FBD171BBED1D13F0 -F030767F7614D4C9A0039BA0650A93773F703253CC3DFBC75A72EA0FAA56340F -07D631063F347E3E8734A7E1F2D6BB3D5B91F9590C7DA355AD9F2B8D4513E7D4 -528410A1EC6A5C65EEF78659FD9E511B85DE680CF4EF104ECA236C3127C73013 -E2E31BC6B91F60ED27BA6B9F38700C402B0D758E8E2A54999D4D472E10EB4943 -F8EE5549DA1565F9C2265B3D49D2B14763824A16AA8718B664BF15B96E88D20C -CDF7FD4852D70B71AD0369B3D89203EF7DAB69370B703CD30962B22C8D6E929C -2A2F395C5A455D1701EF0D05076F2C40788B9DD7457F68A4A13AEAD807F544B7 -3A844D376D61FD49AF09E502B6F5D15419E31FD03355D261E55F36E989D6C030 -C06AB11E764F4A7B55A49E26D7A4D922F7FC1F7283774CB8663FB4EB97D3F50A -A7624F4B2A8D5813EA1E1560BCBE1363515D1E9F4E45300D62F129F4854014ED -754EAAF06528E0AAA25D31A1A5AD55F0C3DFB2F5DBAAC0E52DAFC207D6F4A006 -7FDB452F3FEF90ACEDF137D8C53E272FBF846DD677802BA13FCE850732B0966B -92FFCC679CE181B5D5DAFE0FB943922020DED0AF242380359A673E0DB7FF8ACD -B0F1C1EFB5A26FF5793999E43A8CFD9BAD2B733D5F08A311A99AAF7BE445B94A -0927E34D4DC4480030F5C83BA2EE9D90D4DDF2EE0466F46B3FD776DE0A402653 -84CAEF6C8325325D7E99337C461CD248B1ABE857A9C296F6D972C6524AFBA089 -0E3BF41644D39860425A7B08FF8AF01A4BB7F33402A79452D5B48E5DADB3F87C -C7B41F8A650AD7FFAA2B16342947BB0224D225CF5EE8BD44B2FAF79A7BE0A654 -9FA6D04EEB57B287D46F202FDE071F01A32C6A561FB819E98AF25530EB1EC4E4 -CB3560B348023F4CF9DB99106DF0FD87CDA9C8D1CA702CBE54F1C4E6D97206CE -A03B809D519566C03AA8B03AEC9D598307EF18230B707ADA01E53CFE7D3DB5C7 -568316F1A8DDFA54271B1F9CC0C1DBA583A0AD4073AACA046CB46634A60CC862 -7688D6DBAED47297898DEA914C5AE1D8A71CEA4899ACBF700FBAB0E08AC24EA3 -DC41F3917C021D37AECC1E7A7BE39B87000C8B1B6405706427F27984C0227AA2 -F0BB1D0579F196D83C548BB1A2BC0E5B4C49C27DD41FA124093491691C878C68 -EF2F8C915BD3C99F96048AAAB7D91B29D71382414836DED075E235107AE38268 -D1B393E06B5609245F356C9B01E10EF0B55C46E5A1C0E2AEC7B2389BC1CC113C -7A9C88507D98BE861B808EA46023BA73C93EEB1B8EAFF966B0EF2EE668096B61 -61BF2B0812D072649B8DA55CE03CB0EF48BFFF6FDEADECAF2FDA4CE65D8A474A -B0644973021205DE39FE838BC7B2C792BE051ECF3C0C4B3FCD3DE7AF823E28AD -9EA226B22167652C0683A4208704F451EE311FD79AAB849E08C32345C0BEE452 -31721906A7DC9E67C02A2880E6B69205D8C777E26BA188E08CFF8E08078F3020 -9A40EAF73E97A572E69BCB6BE5C1C99FA8BFD598365B59CECC3AA6CA03B1C3EF -FBCFAAC56444DBA3B1FB8FE554E8246885DCE707C7955D155E4C43E74133E5BF -4B44B12CE27C79527A570C3C372770D95336AA8230B7ACD6012677735010FD38 -BDE62AD2F00157DC69292283122923222F3C984E81165B872F299215510397F7 -2854D3FD3DE0E96E7085C72DB587F72AF43B99A12B1A038DD95955A5312E091F -73DB034DBF4A879777F775B0DAA41B5D938C1D775D32593B7F0A03A29CD4A67C -8AACFCD20E38FC2B7E8058E99EC7219E951184E8E505A3179E9DF64F6C4D676C -5826C834DA3DCA57A30DCB0ABA997A072D700D8B143EB4D9458CD6A772CCDD66 -9AB2A29BF7E0936C694C27646F2C2D32F046A3C9E09A2923E06DADE28236AEDA -4A310B56EF1E538A53B3D1FC282A40F30EE9DF5A280AEAF2CD366B7F03608E36 -C83BC963F528E05695063EF1DD3018A0A98E7D48613D79ACD285C5BFFCAEB04E -4B428CA13FCD0485B2FBF3ED199C4D90350326EDEB23E9E357624DD406ED79AF -75E4DAADDE9879FB03EC6EB56CA348D6CA73917FD53150F0EAED95738B082426 -B54466762248286104013D4861050837450ABE706B43EA7E74A87C16E3CDB4A8 -925D3185DB0136DBC3493F3E1E89B90B54FE1822F3C6757FB5A11A -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY9 -%!PS-AdobeFont-1.1: CMSY9 1.0 -%%CreationDate: 1991 Aug 15 07:22:27 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-30 -958 1146 777}readonly def -/UniqueID 5000819 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D0037D33F24E2FAC2B0009AD3C8350CDF8CC -65BCA87979C36D14CB552E9A985E48BE4E88ECA16DF418749AF04FDD2B0E1380 -D281BB2476BB45FF30946B247DFD7F57305FA87E50CA338121C71CDFDF927A9C -77FF14CB4A1D6D80356FB1171ED38C37702350497B44E42CE31DB2F493807DAA -15B887C671199A54C4C1294BC520F5538C15556BC43C9F62342B121C6DCD6C5F -491DA47FF360201EE21C08A781ED0589A6DF91B99FE118B9B29E4F068672E52F -1A06C514D91C4C937D4E642503392B1CD1BF5AF0BCA28EBD840AD76CC39AD7AA -CF2C05711374F7849708E1106F88737C9AA60612D384CA8C173FF1031EBF6EA4 -176136DE1B9F29E40E82680A2CFFDC24DA05853307F1D1F6537D061EBCBCC5AE -E6316380ECD8E63ACBEA9FD1FC28949366850AAABCBC9552CAB2CA3BB934C8A2 -14C9DFADE24D9214858B1D42B2171DB18A475AF78868C2549F19555AAB07F586 -58B28541C74E14F28B68DA42A9D46C031CBD74FC09BFEAA3AC1DDC68B7B71B81 -6003C9C6AC8EDDDC046D247A2B8AFA63A3B1BA1F12AE0B4DD07327F0138BF470 -4630E4B5DA55C194F454EE2E872E0ABE6B879DF2E87CF81F75D79F458F7D3F81 -FDB76C15EEC4125D18685E1D8591C54C0B0D069E2ED73434617B9D30E64457E6 -1542E4630E848948FF2747D5C31B9C314AE108931003DB9F76644DB43D245499 -2D28E8452E50B1945E13A5DE2A8B93523D3671D1C7ED07EAB6FFB559E5A1F828 -B22D2FAF349B40C3B31FE806595F67C5E75260514F456FA0013668D948619514 -0EFFC35C1AA131AF8578A254AE62CA75A6631489C78CCE633A3B302BFACB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMCSC10 -%!PS-AdobeFont-1.1: CMCSC10 1.0 -%%CreationDate: 1991 Aug 18 17:46:49 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMCSC10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{14 -250 1077 750}readonly def -/UniqueID 5000772 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337 -900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA -87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98 -076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518 -9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A -FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD -B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9 -CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30 -40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D -C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B -7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5 -FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC -81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D -5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90 -CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6877C1B3D2 -24030F377820DA58F4B95CFE645109F3F1B80DB5FACFD7D05AE2909EEFCF95AD -9CB286C8B6C075CA2267C101B736139863186C193E31085E7C9FD88EF8BBECE3 -933542C85309013325B4BBFE9A5B606780C8580ABDA2F5D0064EBFC23939B307 -08568C3B7F5F053BF367DEBA349FABB9F760C44D100BDEEFBB01F27BFC61FCD9 -3BA0C4AE0FF4F03CDB67A59BF0FA3EF565B71B6B46567F47386A37B73DC3EA3C -83D600659CBE5CFDC9B84CE11D659D83352F5B6E9FF599E0E25244709CF94999 -F4490F79C766FA55136CD85D8BF793202FDD810A61844BCB7ADC5736C338B72E -F6B6EACF402E22501162C7B985CABBE5CD653BD4BC882F3CDA306B8D82F8C256 -D66F86BB8D800556AD53683E35812ED61470F11E8444F0A97CA096FA37EE63A3 -BBABA37D240549D95D6FAA5EDE9867EE2CFED7EF929B833EADEFB9E4E9DB19D9 -2A013D3884F1A17AEB95D189CED0F4C80FFAE18F71733697202DDC4ACE91E6B4 -600332FB49F953444AA7005E65DA787EE3953EA2B0B928726553C7EC1309C5FD -7B0B7AAC5BD4E2535866540043F5F6815D7171AC447EF63D8B79471B41F50C94 -7F405419204A80C33463AB00205F51545C7C6C723505DF68238D2591C25B7627 -7FC0F4A215B2F8F225A11763A97BC2AC25E060ACC4D3D6D3DE9065A8A2197F78 -EC0CDC9AB6036F8E6E83D0D099E78029C5A755C00A5F24B5F6EC435558707430 -C6C966526F7ABB1CD635BAF4BFD9904282239A224EDAD8330344A1796FB18580 -965F34F885F28CAFBD5519411FC833A319F8265B8E9A97AE064B1364B9A5A3A3 -C59E19620A53F82B108D9C48FD240A5252D2ACDBF4498973E31C9FF3AD4D943D -01A6F9DEDC0060E9AA8EC38DFBEEB5A63DA4A6FC9981F3ED71818C4F3BBCDD6B -4652824691C369D1052801AE761EC8CAB9EF46C6F820F88874B1ABB8FB907C14 -03C8990FD8106C3DC14882C3F651BB89B9E479B7ACBB958E39CE4279F8173F2C -50369D3EC79B5679E8D3BC42B40C896B2A73180E94302FFE0AA5A6D6066CEC3C -116115189CB0FE5B0700E898D624CC772E932B4ECEC87AB7DF9B71471ED7CBAC -B8BA84825E9B2F69040D31CCDD677BEA51C6B718E2D1B86F718E3E4F05F1FA1B -5B1426412EC3539F5499D3F31C78CA1F8C72F2E7674286A9F9B20871A0C76CE8 -E89CA4111EF6628FEA6FBE7D20853111EBC40167181B8B5D97391502C960AD15 -596D6B0D81F3B3E92A2386D378BC5B236BC35941963E587A08EC126F7EEEA860 -89CB644FAC8E77EACED049D7EE276760AAAD684E68D0126C7D22F180A132F942 -5F68A03E7EF07C70B50DC802FAA05BCF9E2EF3FF8B3D3F7C5963C4DFBEB9D11D -899AB25979042DE940F02561249269A038B76EBC29ECCFA0D44C055319F4792C -2B7B4CC47AEC4C83A349F0F3B281BF62B62DA0FB0D8F24A8CE1F73024815A802 -E08B9BFD14ABD611C7A9F764C5F91AAB5BAF2A2E46FC269495B2366129E3DB47 -D09E707549900C0D1578FE601E8EB803CA6BB80CC5A488F9B7F1D923DB5D06E3 -BF1E03DBADA701639A21B9CDB67BA8BF62D308DB4C460DAF18D4622AC03912B2 -4D904D416FB927600B42F271DE15F7286E52E53DAD4F2CEFC545845E1B7AFF3D -8B25FDBB6E7215769E4225DD284F6D37C785FDB0C7DF182B54C443100EC58DFE -18164FE653B9E5977148A6BF77BD089EEB8286024A719DB721F5D9EFC46E1DB5 -DDEA3CD883169686F0534B35EC91BB2BA6971F9FF44E8691A9D8C8E8C0262A6B -F20B1497174C8A8FF6B3AF1323C59CBA4E3489BD8527FEA652B404AB552DBAAB -F5FBC44D7BCDE495895A50516C6E9A10BB8691DBAB29506D703167134D567F83 -951418F611CE7323659EE60EACC8000F6BB0F7440C65BE980D82752CC3823169 -D2C934514CAB71FCD8C8FCE139BA03DB6BC7B9557E7B0BDC14681FF3370ED2EB -A1B9C315C03528AA381ECD389EB53833074668FDA5DA2282E7E4433FF7B94457 -C3AA2874BFF73FB21A55441D3DD11489B5E0A4E8946D3F273EDF5A845587A422 -1915696A0D1B7C8CBCE3D3031A69DB3101AE7F547628BFF38D8E383DA16B52F0 -3D42676AB459769F2BD50C8F3CE7A6DC0430AC385636087783E98E6A4582291A -F34E3F6120E5E2282C765E97F8A99EB922BE98FEFEB86587C63E9B10399F00AF -CDABAFAD8A1EE367149C4618582BC85DE5D57FE6B7E8254E8B9ABFB9F4AB8635 -74A449F2AEC35A84ADF4ECA4940AA2AF136DA60EB8797EA726763974376893CE -8F799E1F75FC012D4A41BD5A9A766CF23BE98CA3D31DDEC59F26E9E6531A3BD6 -3F4DEC954168D0CE948329C0DFC1F212F781C31F84484EBE4ABEA55923C9FBDE -34BE6DC02B1A9E0EA6AC9F0D0710B0E88AB7E6D87534522D98EB39B41DF9D960 -CEA4A65D6311C0AAA6E189399222ED5B2F1728C7218E45E49923445FCD858633 -C8019929170C50BDF8411822AB2759A3CB38908E1CD5598DD89F68DF0B905204 -030F15C16AD938DB3389026234AF4B069B9EDED52215AA2B21AC72D505F1EB58 -88EA6D61E815EBD83D1BA7A6DED6F45A8F6AE0039AD41C88C4049299C1BEBDFB -A464C2F55EC061926DB93DFCFE19A33F9EDA3971FF1681FC001AD37407FAACC4 -56CBA2C45031ABFB1E96E5AE1F7E4645FB6AD13702453FB79AAE8EF6B5D6CA9D -1B3A37D4E80E9ACE57BF6249E3D1DF36945D9493FBF83AF7BB9F038AE96D364D -73C2120587CC6AE260329F0786BEE3F282ACF41FD7DE5BF8E7DCFC3DB19E09B3 -85CDFFC5D9608B27F6ABAB2A0CD25FAE183D06E7E55C002B3A9200632DD9D964 -E8109EAC946C4C272006CDBD6CD8C2EDB0BCCEB7C5C25C9B6C7D881794533508 -2029A936DA935A17802F2EB438B5425CEFB51CEC94A7AB7A1558F0B132F57DB5 -ABE34B5ED234DB394D5764816730714AE3AFED28FF069789CD75B70CB7ED1C7B -1D9F547BF6223C89F97C62D1DB03221A7984620DAF68EBEB934E2C1EF4E99038 -0BC9DBB60B893F8078480F5BAB81A981F849FBB8B6E9E64589D4BC777A493B08 -570577F541BCA84CB0AAFAD4DEFECE229C7E507EE332EF7C2335E6DC0EB71F79 -38EF17EDE68309834527EF9EF92C61922E5621184D850A97437332FB6CD40123 -C56153CAD67A63654221BDD5F3D04EB25D370A3CEF597D5EC664831DE2DF99F8 -CF42B7E665850C30610E9347AF7A8B2D2F6754E2C8807CA049253949E63C0C9C -68FCE32046493B2E9E1622AC65F30AD17CBF3984F2DAE2B6D115D08A23B0B2E8 -C0568E23543E93C7480C9D73A7062B12F70F0A556FD197B92ACA0FD60D157236 -FAD51D36A8B8D1E81C768A88B2E9676E453F89231DE805877EF9A71B1AE80699 -1CD0C463EC1596B32B985DBFA9725AB31D23C40012B48BCA5D992961C1FED5EB -BEFBCA7952AE46892A1DBB8C25DAD22CAE4159CC9B9CFD26BC91EA9E4A8E50B3 -6B04B3C75398E4B3038BA8DF88C51404E52EA5E9BD6E87F35F37296BFBE0BEE1 -07289BAC29B72510F6DE0219B636008F9D506249FED3D58B33CB47F9754089D8 -477B55E61B0FBFC7164B40B2FEA4E45F9966FD7BDD758B24BDE96D7E8FC5EED8 -9FB91D03A510EC8D2063C914E227497A4252C00554D745D35C7E2E59D4A03B9D -66E72D62597C1FFB8F9A5889C1766E6701788E8383A0F9287CCD75E72EFF20BC -702B606314BAF95676FB696302D25F1B1BF9417046A37D53858D2B8A5A3FFEE8 -FBC245D6F93DFA01460F98147E2D159D09C62E76B67E51383976C7CE861D4041 -075394791016B1EFB6429B4FB930792939820AC1C553F2B3E6691E09F0632689 -F59A1A8838AD3F8F758C0B79D5DE4BEE864633264BAF10EEE0E6D501A5EE9EEC -3750CD6C91FB9F7E679A0B02885E8437764797BCC0613905B9CDEA87918D9E31 -EC63F4F1464DEDE470C527174B079979085BC03430CCAC7A92F7DF83DA2DECE2 -D770949B3F3FC1012C1EE7531E8637533507AFB20869F1323EB98406D8631E5D -EDDDEF57DAE60EDB26BF66DAB185616D4245D0FA92A314F3995E8C7261443165 -A81E250357D84A0642395D09A017E324A381048D8A9AC7D42F7D1DC471252E26 -DCFC25EAABE8C12E59045C0BC2F790C8C71A7BB6C0FAF914940BB78310C38A52 -74A6A3D3B19382171B8E7AF8A9CAE10512E942D928A52F10D4134FB66C60A915 -FB663A6BE31AB27F6F7AF2F121FB6BF1AB79C76EEA3BBDCA392F4EE64DF93EC4 -AF5D2528E66ECA77E134EC3D4368E0AD8055D782D5BCE2E43F5830F34AD1D64B -9797DF1416046326290DCEDF3EA07175381A8C1D268B5A6E7C7C864AF59EE9A7 -1E1042EE5F23D303DB1B0A940D7C40950B4F7C60A78AE637 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F -21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 -06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF -55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 -B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 -0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 -1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 -7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A -7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 -356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B -19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 -C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F -244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B -AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 -5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC -D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D -993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 -2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B -E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 -309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 -F42EDDCF39AE522A1DC2D80B2772B05DA60F3DC15A815A6BAFEDC399C7956E75 -3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A -FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472ADBF11 -05A77651F118824F6CD00209EFB60C1D32D46A78E8C8DCB8B0E742828E3B7D17 -DF5200D68189C91FB8489CDEE8BC223C4281DDCA5F7DA80BD5C2D66A14695EA1 -5F05E03500579ADD440ED2C57F535807560C6FE3873143D792734FEAB93AE8DD -633BA6FC5683083402BF086D23594AAC84A4868AFAA32AFBDF86142B350F8F62 -E2531321E4CCF34293024EF8AB617BAB11A3A5EDA03CAC5AC431C893607DF8E5 -C3DC8646027A7554625A16FD184A70DB5FE6DCEA366B64430A147144CC9839F5 -72829FFA42BC3A8406D680E44A0305C9C9E265E91AE82EDF30F73730DCD4AA21 -5A7A9D68297D84B0011DDDA6A44D8E6F0B5113AFAE9D3B0F66D6FB848160FF13 -4021ADD1556977B9AC95BF81148C1FE76F3992BC8B1DABC2C8F5FBBD4A3921BB -70DDF314D78E41F0ED56721F313A208FF0503D85F125955AD86513FD8DCDC093 -9FA3C29076FA27B5C745162F14AFE7E8586038E3DB7E2BE20D81A3DF1BE04DB2 -BC54AAC9283F6D91107F0E64310C6E281FEB21EE5B594A052259C87C55A599C1 -ACD69F7EE902CE74E92C41A1C46D069F47532112FC183FA19CBCC7E726719014 -5DB5BAB855671B4853DE6F2402868324BD032B1A6C768FECFE1770B655338EB0 -60BE11C22C06C24BAA99A3F2274BE68D21A7328CC3190D0037F516B6AF555E84 -6E973C988B9604E6F1F09B5C6D762D019DDCBD6010D9F0AF6285ABE25EB7B9F9 -BFF99D72C7A4400DF9791643B5DDA95030C3625AB14F3EA5477363BB98D4CD2F -A9033B18073769D640E8BBC4CE9C830E032540EE63E4F00DB9D720EBF2482FB1 -2B83D8DF7AE56BD45876E16D74E46768074AF8E48D4E329CFC2449AC998F5291 -ED88EA4F583887DCED258F32B20209A076708F97905C16B5009455247F4124B9 -4C717E4C13664409955254865BA2D380B7D7805A89079A2A5A60CA94602D99EE -68BB219D9FDF7DE70901B9DA726A0CB9B76598190724AA6BAE22B1E47AA017C8 -D9280D582C9C3576065FA51C5D825992759A4E23D380895489A88FB3093C67BD -4171D5ACC2492A288E5BBD0A38E6E8A7B8613B72429B5C9CC1FFE1D05C177704 -127B117860272AF357401701EE98E124E8E86450F3240919DC2D63914813A64C -9EB4A6530331BFC2CDFBFBD92B5A13A185EF3E8B41C550FCA5266B0F57A0E1E9 -676AFFE6548CC834650D7596F3D694F2083654768C0F69B3D048CC64A17A8CA6 -468B4E0481CD050535296F04A44FCF6EDED22097D4D78AC1508A2B31C2388FAA -638388975A4F0749A8D61D30365A497C52E49CFEF11CAFD5C9B4AF1749F481DD -641485F4F8BCD527F04950007D981AE733F8091A1A4349906157E5FCC84DE8F0 -0D9BBE078944626EA7B8E5BB292ABE2912102ABA9768BA41E91EFA5873A5DC4A -195D0AE57489432F1ADFA11E3C42017A5D0EA195E26943E0B78ADA4CC3888624 -387144527691845D8B804F657A14927F8C731D0F3CEF347F78C38E40E788DF28 -5921B5F6519BE9DC9F3813AB306DDEF740A70FE033B50130F5A46FD10A23A2FF -06AAF650C9B0EC7958B6F82ACA9B130934635DABF279800484AE82621413810A -21C45CAE15F4B6A802C5E187726C88E0E3520051D1FFE35AE531C02F71B0EFB0 -80E22C4E7EB9AF3A54E26391AA116CF9F6BD60E0FF108F8B6CA6DB74F7BB9F9C -D672DED73EE5D93CD420E76A8849E2A2AB9A3EFBD689920D3454B1232A7484DE -F2F8F90F70FFF349319F280502F28F12D5F322394F12266C1E79EFF3B5605249 -AEA0AEE1168FD180F839477295B04BA68B9C9E260D80927253EDF559236958AA -394BDE3DF606E47C09BEB68F5E505EB2315DE891E3546EAFD782C89FA9F9A56D -B11B8DD000E4403E698EC7A793DB2966584764B633A7ACFFE4BF62A9926431DC -37808DFDBD97AAE9DF6B5A861FB12ACCA59E84544DF07BAD599277C7266D986B -9BCEF6C380D0DDB4B16A79CC89456285267EBD523ED2971DE50F792693C1E219 -F2C57EDA81ABF3E9CC13CF1197F2ACF4BF9597AFD7CFEBD109CC0C86BE812EF6 -F0A5E412AA025EED7BF7F2C1BA835A13ECCA474A9FEB853807B274270300D814 -3330FB0A6C17F723F1272677F8F5B28372B9314190A48A0B00E8CE45DD657E65 -1348AC068D0211C67D85F3346F9D5D7FAB2A08D7A02295163B6B041661EA5A4C -723DBCDFC8A471FD38C42DD2E32DB7721E3FAAD0BEAFB85853C1EF8B7702F2A5 -DBED75AF8040BFF1E9FF3643259E4E7F85A38F45DFC09B7C333AA44B2EEC1FFD -993DA1E2860BED8EE41FA34543DFC0D760E0A47B1114A24EE3346C93A4CEF52D -8AC99E6132A330AE340BEA2EA1840BA152A7172B14298BEB318A6FC2192DAE5D -137C1323E6D1EBF0B2CC749F20CA3AC3504927279D9EE3EF97127619C3439EA7 -C28124FCF96F9BEF4A6AC960C44EE8FE0677366FC295A5EABE370A09AC5434AA -3AAFDB8614B6C3187C73C9F94B61B369CD702AAC783367E7A67AFE50E621EC92 -4277CBC084FDD8865D6048BFA990B70C3BAAC6F449FE8D006DCFCD7EC2755AC9 -810F4E57B64649D7D1F8BF21D766F565AC2A7D111EAD60ADA3141CFBEAC8E139 -9E48EC7249564215A73679095E5FF1DCCF1AC0C8CEE4E2257C384F3E5EFAF857 -D9B3A043112D3E3383AB95F1AF132D156EC89442208E1D8F53183CF882DF3683 -44D1238E24003ECB746D91921DF2FA33B0AE84111BE54D62BE98CC8F419DC91D -E7E8A6D6A371FD75BA160466606D8EA13FFC16FCED59E2CBAAE033A090B96901 -1D76C0C860D204B826C180E5887E52041206F6DF91C36DF6F23402216D108EC9 -C2438EB3023763B57F1AA0E4214535EC4977255390066A19A61E0C3F3E39409D -19160103095DD99C872A8B1B339AF0FE551BA667DA429CF64B381502BEB19D83 -7E0B607F196058C874617AD90B5BDC7916AD706F696AC13530D111D70AB31409 -720193C901F656EAD781FAC3FEDEA7D10E0F90F6136C005CA83A41A6D5AA1B5B -CA25144E3ACD36538E895CB56237887472C20D0CCE418DF3781F60DDF9CA7E94 -051F4FD7BC30867D7CC37118569E9DBD6AEED65CE04894EB8A1ADC2562660DD6 -AB91A2144509B93A933ED84F16441DCB7A4C44E6A000BE4E10C843DA3055C813 -57C20B8D61983E75F72B9ED5319EE95AD2D37E58953007DCA7EE86CCFFE5BECE -6BC9F03CA47CEFE9FD5BE5E09A07216F5ACD8263398F99E708817BFF27194CF0 -5788F2E709CBA7F753F74C081D3068BB095F2B40635CE6404AC6EBDAFAACD18D -04008B8154C38824D05B81F2A3F7C99516F792F49C73F0454394160B15C4FCE4 -4D4D769DC2559C00BE224FF52A9EAA550DB6F5F7375B900F1839AB3116693AFB -669228F9B311F6DA24BE0804B5C6B2851B5ADB6C57319C4C1CC70E23C5CAD6A7 -B9019A21D8B50801B8977B766CD5D4E1FD37B19852919DB201FDCE07ACBBCB67 -1A3D34E40165D3B87659394297BD0A6604E11B1A71BF99A07B751888D74210DF -5857EC4F22700FB057205F284BF1FAAEA21251A4713C6562685587C82EDC5FF5 -040AB083801A8974D2A008B59DD1368C13CE00FFBCF73B7A422BEF6EF8C08490 -B4070D2A1FFF460E4E05025CA6973FF082E76C4FEEA123A1D0A47E3D4197EF4A -9786369446F3875B450CCC5389D6C3CDB1D0A64C8D5A5C316A3341DABDBF496C -694AE97ECC77C2EC57040E83CD0916680B490F0DF9443DBD20BB97E543BBBF15 -E20049C76969CE56B0AEA28A28B6BFC3EF7E6BFC58C69339C927F8657ECFB631 -D39D741B012AA425937FEBEAF3147AAF1F18E3225666D94EA18166622E672315 -3031DD98EBCF94F9FE1D28406D8D8CBB9F9CEE173A6F2C6A8E621902C620E72B -C9CAF734A167C583F78AAC792363F9CE7CC3CCB5A90C32F2BB9880C287429B9A -CB7C05744777D339E86300998615E1F991B89FA0F415EDEB76FEDB476E9996FE -C5B301CC1F8C6E3FB20E6B4A03656B2E7AD6641C7179BFEA39889CA6CD4AFE6B -D9BB48122EB88B31F3909549418E20EF018933076D5EB11AFAD2A4E2203307EC -6202BB544423459D37A26EA5D064F5A3A76ADDA50DDA60B08F3E8DE5A9D17458 -A3CF5483D7F57BDA0B0E65438198E65950954967F7CAE8D70AB7BECA62C8A2FF -35B231E353C9CEAEE9C76C4E382EE03C995EF55147F14A3817FAFF2D9C3F9A7B -6EE48F363490CB95BE2CC4B1C66D835E3D68B387065C94C47DD21BE5FA7DD775 -6561E53D66499C5683FEA050EC57023C14EBD08EC05AF1517B14E47BE183B0B4 -BDF1229CDFED63810B491297AFF65229276254FCAADDF10868A8970C98AD09B2 -F29CC206ECCF6ACA77FAA20D4A02D95EAE67756C47BE4D0CC7B1A964207BDD75 -D48D69A70CEDAF026C4C9CEFA17C336C0985C9ECAC63D81A8E24C77A42C57431 -02F35AB78EE59E8491426953A30C5223CA04D5C52920D644D1DDE8D746239C21 -42D573AEF2375CD6F22D48D3FEC491A4359863656792714C623E9AEDD1CF4584 -930843BA171732C13ACCD13D22807BDA661AA9B8B25F2899B383A2264E9F7B16 -62BA3567E1BC3F1D5B37E0D8BBCA4CE31CC8F87258C2F1B10A6163B32C73F8DD -022F8E082DA54D08C46BE91C89D95AF1AEAC554507F308B49B6CB17E3C472E61 -1F3445E4242ADE93D2D4368E6EC47E64AD6DDE289085F01BB780F7CD23156E2F -86DCD31E221E0A97FE5F830C709E009331BE8D511DBAB64F4D71B70547B1277A -EB4448EF937DF037275AB452C8B848D6D31E4104E9598178C687723C5EB0025E -BC9016713ACEDC80CC4E3BF841909B5420B6E732E0E6707A456170B5C668580E -1D6A9B532E4A244DD5565ADE7B544848EBC1F8F13C672DDEE527EE0F00C8E650 -DB861DF41BD70681F442545C87760F353AB4468C6815DD1EFD2FB5567F12E31E -95A01C57BFED8D670D2A9B53EE6927CFE92A1103FB8A5EB5FA04E2C2A9DC3468 -79A6B737311176ECF128451A66B242FF5882A2CD23FAA473CD842C26477068AB -FF9043D9EFE91C5D91C8303940DD82F4E01AE190FBB748EE2D59C34C82C40CA4 -645066616AA0511997D56E18D7E7203F1552C22C70F56C6552978DC5591B4C87 -E9D47E13A2FE5543EC9904CF25428A678A1F2F9171D0E634A0820EC24E01D572 -5E7E6D843DBAC7D9D0C4F1FE488BD3C62649B78A982E710CC8C6467DC2D01C41 -735BA8C8BFFEBFFB3A2519871C707A562B3383252771761D6E5C13C3031B472C -4B2E865DEE5CD50703F5DB61A65297FBF37A2C329FA25AE71EEA0413336B0453 -6D16F3E666782286C0C7438518B2179EF25DF50DED1EEF3B364B024222A5F14E -C19B407EBB9B0397F4B59A9B38F1CEFFED5D8A0FC4276CCA60BC6A9F4196B652 -CE8384234FE1E73A36918B4BBEF3269B7C8ABF0A9BA590EB11D01AD682D024A8 -F82CB2196CF0744696ED36026AB7447CC97BF78CFFE5513D6CFFC8E96DF063C2 -25CFDFB56B2B1536E207E10B5022971C8F4E2021D52825A46508A976B9043DDA -71549CA80EBAAEBFA2AE50DC2546F6BC6DB05621277C63C00EE01FBA9078E5E5 -56D1A24793DE06730F6D74AE52AE1579FE36D28F898044CDDB38604104AF78CF -D009354108A86ED86C7DD3F5E04B0ECFF924FB32A7215A647BD7598317364F71 -30FF1513397C0C9B900906FE036C842DFF64E2C52A2CC5197388800926B1C623 -7E4C2DFCAD0DEAD54954F1835552EF47F832A6DE20DA96783C8E0FE255A48B1C -4D9D3082E5131445C25215FAEB4C2CFEA4AC5B2FCCAC95506E88864B039EA9BA -850F7C3669458DD3578890B4E14A18E527A837137EB9A1A66582EEC3F37C43C9 -96D691E9A587268F33EE2DB0AFD29C4DE675572C74F8A9A81457983C0D75F4A2 -B78D143E8417B478BC232B35967A0A4D055482F891B6EA70ECBE902360B29E95 -CD75F60BFDBD86AA37564DAFB5D65F4EB331302782D9 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBXTI10 -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF -E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 -BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 -3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 -F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 -C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E -BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 -2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 -879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D -141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF -63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 -4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B -FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD -395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 -82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 -763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 -165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E -57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED -E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 -178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A -4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A -CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 -890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A -7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE -82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 -82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 -C627A8BFEF75B4DEFAF34B44B356A516B765AFCDD3F5475B1F928731D09D2170 -B97E40F12CCEDF4F6BB3756C4734F6E98D74B7E942A954B1BAAB83D4AD727FF6 -DF6DC50B2223BCB5568A73A112E4860AD490554E64E780073FF3399CB4688D33 -9E8829667CD6EAEF25E0C7D2D44F2BBFA40E999325F9561514844221B50BC8FC -4C7AD68CA7220D69125C2AF06849A3E068D18733276F0C0A6A2936D3C2C87CDE -59CD1AF148C44F85784A5DAD569F5FF53C061056C067CE29AEF1E3BD1FD8B0B8 -71A0A638CDAC6AEEDBD5337D4683C084BB60B1859E600F59CB4E19C5FC5C6327 -EC544A68134496A9BD0B87D83AF6FDA3CB62FBF0B54FACE1F0E6A2D84B467AFF -0F62DB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 -0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD -F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 -3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 -A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 -5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA -2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9 -0E172209FBE3857AF495A7F2B34BC893D942C145C2204CFCD6A5C69FEFC25B60 -E412CB2BEAE7F7FAD03AF46344F6A7D483BBB1E896BF16B0F4C363799DF23CE2 -E8127996DE841B6F9D8A9E56BD799B6A938582988AF87151BB8D3AEA85C49857 -DD862B5E10D9F33D57795D656FB616BC9B8397B3612131A2B0F472656700958F -739A548F7C3A348698AF9F6F9821D7A9FD4131781ACBF7EAB885A3AC254DBF94 -02FA697941A0F97F048861788BEACC20DE829764413CA58F9D045A6B38BCD6E6 -E4827247EDF1171F64E3B041A69B244308DC07F66643FCD7D5FD37F36EC4CB5F -957D4ADAF91850A3B1A765E0E580EDC77556593D1B2E1C22685268469298688A -45C474C9D0472D019CE1E83F25182D084AD85A49C502E8D679C227DA8E32045F -8055D1622C478F8FDA342685F858DE3F53F1CEA0D70BF3FE09037D981E9E7FFB -BC3F896535D0DCF53F4C85A1DA5D0B632484D1F25460E3EB38E251D2AA17817E -F3B25A2A49C0AEDE0B89E277F52CBF744EF0243C409FD71FB0C574640CF11599 -117A4F42F27D8D282D34485AD116F7E753A8DEBFDF7C552A1179C02B7A37782B -743D0DF85C15A333BE9EE82C13DBC9CB007DEB5900954AD9309902E08B3D5BB4 -E8414211B971CE8B9F05A61C15F400D9297745F606C6419E8A8A9ADCBDC39243 -617EFABFDCF9F836D14411BD72EE19D0BDE89234BF7D52E7A68ECC952FB74FE3 -33E1A87DA39AEEE9E90406E2B1CF3799C63E9BA858D54F38918B814C0DF0B696 -839C820C26FB473ACC5C08E2056457A74123A398806EECDB427BB183F5458105 -2B66D7E1FC3529025D3243A045625E9DD9417FA089B3C7C394D2B65C0367FF73 -79F17ADEC6B5D27A5D3D3E244A0839E38267ACF07B2D994C2B4E7F30A416EEE2 -D1688F167D1641A72A795B1F4DA3350F75AD6D546AA118B5F8A5085F5794E6E5 -28256CD31D250D8328C9620B8ACAB03E4A33DB4595E959F4D0FB1C8CE85A710E -22F1940067C036A7DCED7EA48F1EB81AC4735FB26A249A32AC2E3E7636B32D31 -7D76FBEBA106D6C67C94A3BD4256B786B71C6EF8D191CA90CAD8D2EEAD42C6DD -8BB4BEA7DAD4ECB6E002F3B71C2955A5A401E34D55F755BED68178C270109BAB -FA0AD848347EB977325530B27180661A59447D7DB55A62D65309DE24B6638986 -1D3A539BD37E74C2C00DFED3336B5C6B28D915AB7188FFBCE3ADB3CB903944DF -1BA5923A1C053D4682BB8616F44E81E18DB2B58298F4B1A6289CA993DF3E7C73 -B00DEA3A9B747FEEBC4A11E5B9B8B05CA2709B8AA935A42159D3DE399544F5AF -AC1CC00F6CB94AB69856078C9A2EB2046BB9055CDD6A0622112F7D3710143F1C -20CD8DAB4109CD47BC00EBCB88314081C1D6C43132412F261CE0262FA28DB7A3 -C7D8534BCBE1A60488EA230DC558B73C72AE87539A9D7E28C2BE05FC05F58DDD -87117B7DEC7977BAB45D4A945708705F0172351337540995AE30014D72EC74BF -9FE719C2DB7219EA5E6A3CA53D7C27EA091E4DE12F3F810F3EC4838B5B3A872A -1B0DFE67C25B2ACABEF6D82C45EC9B15012FA9D0EF69265097E91F969C8E22E4 -825160B96EE9181005BCA35E04547BB8CBAB3B30F2528D7079582C527E1B8CA6 -C1529ED70029C8B457101889C37DE12541A2E6341F99E181DEAB84953F0733CC -7173AF3A2D4999A6F798AB596B87D44F6B57672D6E475A1EFABD76698CDA887A -86201143CB6EC8DD7A64AF229C605287F51AA88BA1C990396DFEFDD49DC6CA32 -C04D614930E769EAC512FF6641FBE41DC7A17B1D97B3FBD502CEEE62B4025AD4 -CDB70EAC958BF00377ED2DE47F196DA9DF0AA00C4E7D8A0578CDC6FEBD6C2DF7 -1D106B4F96B691EFC625F778172E9A9B2C9A584BE29A1A287FE111BBF534C83C -B27B599AF047F721A0CCFA87D1C00B143C462875E23622D3A779FF507C99F3BC -BB4CAF154F6778FC3FAD419FE52CBB00BC410138425272C2FAAD9DDC4F890C5C -A31BD41CE648AB1F381FA44F06882480358894A6AAC407A6B70E571A0CF30B88 -9EF5E9A44738359B3E5A9704F8827ECDD5074ED2282366CE985AAFADA0E45B21 -26023C1971DE56B6FB238242559F7D045FF616ADF1944810ED556631057C7D7E -105F841A51C6BB76AB499A1E36DEDBCA0E9AB0186F59603F20B56523B19E811B -D8CFDF1025D599542B34AC0484E44656800FD656D07030C7FA5A6A2FD92E2E65 -D92F87A8B9FE63746372D2C48675C2E786BF8B83ABFAEE2B47F36C0D6F7C8C1E -D13BDF31873139BBA84A9083D29C46AB1AB9DA0DFFA2616A4942B9590C690405 -811F77C3920FF661BA03A1A50BA1028E968FA65306A60A8E400A9414841167C0 -B486063FE9D4E76C5147485E05A5D9EF4809CA0C41DA2123458A39F503393ACC -C9149FE8231D20E669D67F3D9C19547BAD194150C13C23FBF9244CD77F898337 -D48E576659113F5F5B9DFCE2AD35EA9CB8EB0FE36BF2761CE4130A74D320C419 -B33AEF7611D00554920D6484F1C2EB22F9037A9F7002BF270C104E2D7E46E651 -53EA393C90A7A70DC8F72C2733832758C18398AEB8807F392A12EC9468848E08 -3749E6477D7589D6CC7AD63ECD52397C33372AD8B13BA754BBDA5F8F92206235 -ACB6F489B306720C36F5A3F0902EA7B4C69968C4362C7CE69DF0A31F90287083 -C7C004934F23A70386C9F0DE0FF5684623F8F723A7B5DD5EA6981FA2130078B3 -7EA4E68FD012555D2A74BA5109F1D679834C1B4A8DD8F223C809699F68E9F452 -3E7FC7E7F9E30A19C5212A06A862FC4ABE835B0B17A9A7788C5EDC7B33DD4080 -F3EE40A8804B7AD8674BC414ECBEB5DE743BD7963254A3A1693F281FCC93C518 -E54550AE2F236B42B1AEDF3774E603ED850DDCF09A6EC4A92D31C29BA867B3E5 -CA7E7D37B9985C6887A1402C56F574D8EFBEC2353E4A37294401A267FB79FCFB -49C5A6DA374E11EF1C2F015574B9A863DC7ADE154174789E5C0CAA8F0E648986 -16433040F58C804FD5A55450B9B11676D923C2B0C736CE71DE810FF93B29EB25 -B7F7FC77020345B09006F502D7F83B472B807424C4B02102B242C07AD309D63C -24FDEAA9ED39D7D5A3B01ED5DF589703F10149EC39ED63A5C337F25C0BFC3621 -B119AA613027CB5069C5D6854BFE89BD19441E91A48DD928839CBFE3317AF4A1 -4FD6F452D9344801CBB3DE084DB20DDC7F5111CA90375543CB763F236B29949E -ADDE2DC1223515BC76F812683604756A157173F8CE30F9FC794F8C7BB07C5252 -3185EDE84CE45E99681DD14A6BC9DE1E942FCBA2CD2B7A94AB7E5E451FA24CED -6D008FEE900D5D8322154DE40D893A6BA762DEEE301DBC40099C2CC940098708 -8703C1455D53900E0CF9E84963A0B525919F0CC2B64B8C835DA217F7245432A9 -1DB5F10A9D4F5E63C28C40C4799D63B8167C8E655B0FD33487CDACE323F30452 -53856B3EA67DEAD78E79800F6C0BEEC94E9F1DEE63DDA1F873C72A3A7444E501 -B6B8FBC2661FDA22D4B4D1F6C62226899EF7A53F7DF6E9E0BE0F3E94715D786B -D80ACCFE3CFCD44D2C448C9D6D6F653E4A2A67A3E7FA3BC5A96217224772AF14 -F6ED81F68D5057A80FF9AC1C486F38C7F1C77AC6405BDE96A836A0A44E7905AF -2DF79F86D4BCCE65BFBC77F2D328D8807BDFE4558A3EF98BCE198C75DBA06144 -C62BE0EF71E2FB24F882A01770EDCB7E9E8E301284AD5CF2E0C52BC215FD6D30 -BD65A26C8ACDBBAE2CDA9A44F1DE42B87C1823280DAE64B66996048DE1967489 -7D2BEB683C93C909F1B09166075DF1720E8BAB3CEDAC1DA6C942D71F59D74D98 -D7D524CE9C5F30FABE9925BB30E2D35E274A052FF6324C767AC44EA28D091D8F -57B6C156EA89C0889161EE4F8C7DA5F8337B3771C6E0E93ECD69E7DC5258A9F2 -289CC11FDAA6E3517B7375762E6FCBC1BBC88192AD19299FDAD5CD22E504209C -1BE6CDC2EFEECB8860720189983485E10BEE73E6B4872C8B419F86E001925E28 -B483C99322E6DAA27C2937C8907E713C31DB7EB0BC8725AF870E3744168B97C6 -BCF3483EBA58CD5E9F9191C5DF2220E24B5A0739172E6D86EB41EB11276B0500 -69ED1186F05525572CDBDF3BAAFCC05E372D5C0CE4F8ECF7889C200E194A1FF3 -DFF0D042E7D3AC3A51A827A986E6A3DB8F8BCC5B66E509F9DCA18489A296A1C9 -C1F76BF8B6A79E72C1E0E9C0A9F49954092C414DFB77BE1D13214369E86D2608 -52E141A5722ACB31FFFD2CBBEB9CAEE98D09601D988E98FCD0835D574064CB29 -D192A8410690CEC6FED676E5292D87C8EE0354B5E1A2186BBE3D9BBFC1C0ADA9 -65A9B760BB36F52E3923624957D593F8FF6FC6B6BD6A9DAD2B511AC78FC52A64 -BB64B0BD0235689F014D92647BC1ACCDE52332FEC0A7428D7216FE2F841AA42E -A2DE24564A6A693E0E3291075A1D18337DA5DEDAEA6FDAB77B3ABF2711E546EE -616EEC27D4D0D8BD5FC8D2DA1DBFFECEF0640D7159DCBCEF0BF8DA0B6CAC1AEE -BC67DD2482470346CF8EFDD8CFE22427E02669044C78EC9947204F9651AB39FE -4B66AF0DA9A966FE5BA4360DB057F1F14D13B3DE6F94CC0BB83AA0F09671C0A5 -708A0B59172593C93D85F048704BA2579DC324B3AEF58089AAE163462C2E0332 -D4985B7B50B1F37048C0E79E7B85A8092B89E6077108FE644CFD0F58B43E9923 -8221503464DFF94AF49FC1121ABEDF250371C9349DCF779C3D488CC43A250C0C -B47604660F86F93B3CC16044E230E48A97606857283DFE219220EB1CCA98377A -B7C54440AFF35AAA326466485AFAA3F5AC8E3D9DBEAE6107AA9F8E97818C5BC8 -852B21ADDF3CAF7CA759CE1443474D76DCAC593A96D757AC642B6B8CBCF89ED3 -4FD40AB998FD245A5B4DF4D501132BAAD6AA70B272A3788E0AE7093B6A338199 -FF7CEFE7EF6AD49AFAF45AC84FF67F6C890B0274F75B65461A8685FA4407AC27 -17DD00EB2B7A5C0771FD25B8C41450E91D2EDBC708B8E07481183387BFD652FC -BF1F05F160FBA53D33C11959F3F2299ED40A81392333E7D106EF5B40F0D38663 -DEE095DAF5B72D00BB4F9F8F26356B3A6456017B94946A3517CF712950E9FF4B -EB8988AE17432EC9AA2048D7E2809DAF6BAD894DD2637923E3D75767988DE43D -AB22D37C6C0420C658BEE5CA676128DBEE15CB2450DA40204279F061ACAFD15D -94B65148434362381CD614900159F7AC2EE5EF7C0531C73E1571BA7689078727 -E865CD8563A36AACF35E6A1E162A9C98C99574E813B9100BCA53A8D71E697AC6 -615CF0A599238D369243C20D1B4E8BF02F727EA5A2FF673F0AC76C84B5D70847 -1DDE277EE5EF41C2083185C5E11C1A4CF77A8A2C3ADFC0FC8F2711AC9B38F92A -B51AC94073673A67D1AB54B9356E108233B2E88AE004BE9B6254CE5198AF99E3 -7D4995BBAE32DEB738FEB65A13D3F22065F83E48A30F0BD948AAA1C93E7C0B84 -CF3398C2B86B33759F8018239FC2CE615DB3B37B2C35E446A6FC8C24B85FF6C6 -10742456817381CD070DB115E25F15D85BC8BB3EDEECA6F21B580913221EC80C -64FEBEBF64A82046322F289D32FEDC03313407EB63FA4533705C01AA85D12836 -E190848B461390A60E4B0816C5090E8CBAF315BF4E267B0D3875C06818A9CEDA -6A16BBDC9E0701276CF6E7B9CF6882FD5DFD28E9C3E3C2AC9036EA3F24A4EA71 -F65088DA619A62AD63433DF16A4DCD7084FA3B6D4C20A76B3A5B437437C02A20 -452A79B7A778C8A245D3B2386F8F80D6303C8297C9E49C71791B2A940B704044 -EC687C7F706479D3B02353BDA6E78870436FCBBF1E4BDD0CAD173A707AB15941 -D9532F8C552DAF7E3DA6B02498C9E13912F071E3F117085C4ECD21CB3F6E1CAC -641ACE00E92693775C29AA496D85F21F9A7D0E3E96B957208CE8D1F7540C2B7F -40A71255551234D917C23977B787D4B97D8CFA28D1B3C6B02793278B0ECC2F2C -7E7DD001E1585A66B1A3019910C1669BE8AD6705571AF79E1A586B166E3315FD -BA3CB4C426DE470C8FE28E303576F34394D531359284AA34963965804A90272E -9896F666F2B0B1CA29E49800E19C5286FB5156525C955EE830E3E4888D07ACA8 -63102C9460695B44EF7D422EC1A819F1E80AE3A98342AB0E0B775547641250C5 -47F024223E37ED8970976022B478F9C5C3F8831FDB4DDCB2C81B6D1C2A7FE134 -D24384D9680372DA0B4CE881ED6D3C6C334A0F5DF3DEF9D262052B1047951FE4 -42DD5270F367E94D33A58E9CFA94CC736F9A5FAA47D905CD28AB4E42D34F4085 -8C04D8BC65BBF069FC0342492A6929A211B0347995B5386A05A63A78F6D1EAC5 -72D925336C862CC10A5EF3F3C726079EFE3DDEC28618380920C7D9F3C73FFCEB -137BAF5DD9DEA609FA95AB7F1770A8A82F98627289565D87AEF6FDB0FFB364DD -18203D138240BF6A02636FDEC85A5996695C6A6C8E2E41B295819A48BE7CF094 -8B127B26AFECAE31E10E659AFC05A015C2DBD2678717935705723EC91291983B -FB48D71769AF5CC34CB3844B68827C2E817A8F93AF30A0670AA8E601F71443BC -FA420735CC19C90299187EB1183B49641DBBD6F87F115EB90D2E504F297B04C0 -FB5CCFADFA826180F6D3814ADFC7902AACDD197F167520CC528C824E6471327C -B50C4C1371635038FB331982C7DC2DF48FEC3F4048D11AF5BBA9158B0B86BA28 -4BC1AB2607A3ECC2C944CD3BCBE8C5479C4CCC4F15BAF0AD9AF9296C68778AC6 -ED52033F9B0425F21F83ED2A452E81994F36E293948DDB1F27554EE3D1922A5E -1B9F13FFFE79EDF68CB418FC8F67A17856F8E442201AD68F45095306AB6E0391 -C32F98C7B460241253897B6453D9F17B92234643C800BE71544985AA22D23881 -7E7601C90E655D5C9DC4C70F55B8617ED78FAD85AAFA391FF751BF0C93F03F79 -BEA299271C7B6FED8BD42D345366FDC0D44E061FC516F3514837285B5DE60D8F -EB1E6424D840F466A936C9FDAB88C342EB887152C5A0EB20749916800830D3F5 -21D29BD7D1147B0F99148E407BAE52F1E124977E8C05E46D54108065366DAAB2 -94278CC4BE910A68A0644DB6F88423F9233A203D89CC3DC88A0F84AFE4E998E4 -C4F082F51F8693F95A6F08A96B5627A8C10004CFF35E1127CC4299BC159B2711 -27B895371A65D8DA94BD9E1BB56C5AE84C8BBC23A526E6133E89BBEADD2E25F8 -318EF4BB5541DF68AEA712940A9B50C1AFAA09F19F57BA4E29986DBAC02368E0 -2415C7DF37150E196CDD74337CB26454EA6F0AC14F1F598810D431C075C8B939 -A205688E86987C8A9C6E56042D2627C5E6730445D8A394DC6CE6DC6F3056373F -DD8CC18EA19EF4F3F4B5F2055AC85F241C9E9E970687FC6B22385AF3BDA70A6F -A6FE8C36FAE02F38180DBFEE65C6737EA9738B49D774035CA60EB228D8CCA709 -30FBAF6BDB58802708071E543B6A565BB775F8ABF0BE3E13D4F7B97542DC4F46 -CF3AE241496A29A295B807D367D0237C1F397B942A65E60A1313F78210F7E082 -4D355195B993BEC149C905B8D1AFB89C37A377D08AB853C1A0E56B42423F5308 -6824021E43157F85E1A5DAB38E1147C9C4B50E3B765B410E56999B33D9D66488 -26E8780DB2A1B7A8936F67452935F271E262823441124657F6B283ADE79E05F4 -9FAA4D2734CB7B7B8EECD155C9FFED48A47BADE32D1CA56CA5801C6D4B5BC900 -C3779C078FCF5670F74DE65556E8A6545269D157D54EE8D555F0B4DE4315486C -FBC6C534DF83E527082051128187115A68A8B2F2AD7224C0CF054C2A6FA7B7C3 -BAC811A5C717A33FA95F27E2EF005C07B62A810A4EF62C1DEB5BDC8117F395DA -0D4EE7D555A2C9FBF0214600B6A6CC0129EDD4ED15269631AC66E133D42257A2 -8C7426DEA9D01118A93BB083849BB26AD61F0FC29BC233A09E7FAB87F1F70616 -3C23EB70ACE221E3BBD29370532EF0CC134984065EA1D8692BD8CC0858BD61FF -96418CB9653EFC45730FB9B4463B2D63245E3720E95E7C1A000B903B102E7511 -418AC726633373A4F0BE6B3F37A197D0B75ACB722597FF179AB1AF95ADF841B9 -97B35A48FE7E3EC594B291A202B7855640E143309CCAB41F25C3C35EA6BB0F11 -9617F4DC575DE1553C432E2C48E1E77AB04D85A0BC185C88BAFD0E0D5D4E90BB -89DFC7D18824ED125E195AF2341B3017E8282ACBDA90F96EF19B8FA223141F17 -CB38018CCA5D9BDDB5BC5BA2C6E848768331C9D73EBE7F176CE969E419A7B865 -A12E853F314E3071F58F0E8A07AEDADB951A7015FBA6F47B5981AA089035E349 -40406D0334BBB1F6F21C604269B207E8432B5C48D6089CBA115D05FCD30DF213 -CFDF4AC7A3351C5A89CED39F9267D4F6124B9350C9FFCE34E81219CC604E9F3B -B4ED7426D57C8C688622CE186AEFA427880F22EB177395B0716D6D7367BEE76D -899D640F017EEDE48D3C7E6B5CEB92E9C3FF6D708AA5A871B6B09922255ADDA1 -0F8CF7AAB52906D4F323FAB9C46D8F43961AEB6EC72C8EAA0B1FABD4D805C27F -2D6C89B414D1AEFBB3176A67269FECB72B2F3AD803A75B8AD1590075B5B41253 -BC3118224B8CCAD3EC204C38BE7EAE07BB189398A31837E1D5FA81EE3F5A4D4D -81455EF890151AC4318E6D3763ED40531CA75F7252267386BEC4DB8AC1A3D8CF -7CBFFBDDDDE80A0728CB04FB05AF5A39AE08D95E0136E01AC4E6EFDE88471480 -018E63626C002620946876136C8F3CDAE4D1BD7DFF1F674FF2232E46D84FB20E -7088FF5E3EC783155C6B8FA1E1DB66C83F37E94134E0729D20E74DA1A53F9F00 -13F42839774CE3E1BE225CF969286B0719CE0399A1D83D51278F7514B7F02A21 -351F006E7A15FDB650A5C9E3877D5490AACDB33541CC15ACE8E1C9E548303E90 -1D23A2FF71473CC83DBEC78A32E2D51F41535B776B42083CD02E4E18EE91B331 -347A7FB5D570252FA5107A5CB471D1F6FDB05951CCEFFD9FDB8129FBE475FFB0 -B01D91A8013852D554C47E48F4B9F8E966302E473379CC68E8A2E0CA17FEB016 -15FA71FFF852984B768CB67CEAD942C8DBA98C06EF114AE99274190873BA1ADC -65181E9EA880959E4FE7DB97D799D4D87A3DFEE680FA2E430C66255B5AE986B5 -14631B2F10AC0C25E1AB148651EF26AC1665234C5046F065A71B95730A1736D2 -DB23390470100510483BDE1BA0855E1D77D9B2A0E0106A3212EEEA11CCB353C3 -2D1E8DE4704FCB5CAA22DCA5B195180CFAF9D1B9CA0ADE3877004035A82EFA7C -2C37AC1B2A02447A7B7886BC31AABD4D9C6491E8EBAE284ED208BA821C01282B -4BA140CBDD58DD9F50C90CAFA1A99C4F951F90734DADB2D5C0A59E0BEE4609CA -D8210E3D55A985800EF05869A37C3F4BFE46CEB765673BF7D63E72CB03958025 -C5085D838EE5140DEF23735A94AADB59208CAF1A7D2529A8D6535EF38958B6B8 -C307C93E983087F3CD83274E102AA0F8842E63739AD08C55B89101A604A9F3C5 -14620B7F95078539B49EE523699A0494A091119D48E51FF3C0945909131C2756 -6A66DF6C5AEF12CFB63CB8C9AFC3BFA4CF89C92BD86285FA4EA6451FF2C85E24 -BF4C061D16928179EB26879F7A84514088421449A17123CA53976E0FCF10DDB7 -2212D5C4A1D7AD89B27FADB303E951C0CBBE84B5963CD116061FF2767A6176FC -7405F6B56F9682E3458FEDBE301ABBCD2EA90C576F4459D56FED140634F32401 -80D33A4B1411691FCB2C03F43628E5972D53381C8B082EAFB42CB0A3C4F64633 -4453390B82C2C2E1C9EE6FFD39F82AE666BEE38CB68812BB08C2C7F8F22C5BAC -0F900A03FEF6981278F32425B0B9C248B18D8E368F9932CD2BE59A3375932A97 -E3C73C024302DCE592EF84B141501F99D9CA0CFF8F256B168FADDD7093EF9132 -1275171A6C7154EA117E27791D155C4D8B0508A96EB8B5292F9081135BE0D59A -5857AAC2484F4A7E7C8156C72BE7CB7B31A9B94C1DC1E36540A64B8EAB85698F -A6F3A369ACD6EBA7D2FD86388B097595260A7F276A7C5EF5298F3B46448B36F3 -A304CBB6416096FAA45A1531C1DBC678C6143D0FEF494EB2D5ADDF28681C15EB -8CAFCAAA4AD3B912683C52594477A8086270839BE2B7EF043B02068C0376F86A -66E353DC4CD100DDC4BFEDAD47F656D2B4786F386F61A9157AF0F1A116C51474 -D07BB877FFA1BA04BE68D07C3D606CA4B22D24CF761F89DFD054B5711867441F -4BA3D541B4205EDB2EBB7DA406A9D7D5F9EBDA1C5FC6B5E80C2FD61C128AB5CB -1E76B896A76B3C0AF5D5EC0FC416FA9910193EE8C8DB3ED356ABD4FB38A5B20E -971AA199BCB54B73B47361A0DC7A7617B2CC1248843743E95F71164A524277E2 -196546C146BA4F4EF03117C49AECBB48308F820A793549790A7233825505013A -FFF9EB0BBBA29A54EB6637E11DF9F1704B0F2F115D7583A0C205AF7CE7ECA43F -F273FF876977E0B5467781962F3126468E5F837BC92DB7EEFDFF17246C266AE2 -7BB3D2646D0DEA519EFFC60DB1267D6EE9435DFF69C1380BB98E47B491AFB12A -5D6DA1EE989CBD084E38D2B15DBAB23B2C23389CE75219F295207B5C78C79E27 -2223621E0229C67A668C27427861A4E44461B55EE8F0F34C091669424140F0AA -61EBFD9BFE5C40F5AB85ACC8AEACA6C19C98D28AEA2E7B727196316BB8B897E9 -6FA7D58EA4FFC9C9C48BE4D733376056AA5CA8CDFE34CB1B99AFD8E25FF19DCD -2B58EEEE1A90BB33FB718ECFEB1957B500B618388A83B32FEC2FCF58C5A3B3C7 -68290CBFFA515C6B3BE8E249364CB1DF2583E0677E070A6A110334823860A266 -E6176464C675C657BC555910066F705860A7E982388E166D8D89B84E02FAEA52 -D7EAB66BD9E8B7ECC9FFCF2E60ABC1E94BB682E48F54F76119B5816ECFD499BA -4CDA98409F99D0D705CE2209311E844A03A8E92C488529F5C8F67DD652103382 -176B20C5A29C1850BCEBE6398491B2EDB841DF4ECC30B7A7BF7D1127C3A41359 -2A0B3A6F078FAE1FEA13D12E120CFA72F400C83A85BED5D13934111E9753763F -DACF0707DD8A796EC4B5989231AE7A6726220A2F6BCF601C9A83C19401C7881C -7A94273C08F2AF3E7792D51C300FAF63F9BA92A15B4CF269B013BD5F52F0FC20 -1883318C46656E1D7A491BA564634AAA7CEFF389EDA4D52BC1C3A6D8652B4AC0 -0D7372316B23C6A7678D89B4B3F7DFDF9188894693CFEF7E4C9D9D62A5179449 -7257E4B7C3561FB6136B12FC7CE972A434CBBB9D8F59C832097EF8FD163E477C -332977DA990F9D371FC0EE469B1C4A73D2CC107CFC46D3EC42BE05E46799A567 -DD33993EB2B31A19FD3463CD8A8B3C14DF6AA2E4DDC95B8F9068106C19408AD5 -CA4E09C975BB7A161F7A44D650FCF5FF096F399DC953987C2B96294E736802F2 -E443268A5A8367AC8DBDBE581D9A391FEFB114B96A5DD9A66E6CF0C52A46227F -6D4DCE9165447C0DC2DF3BBDB206FBEA6AFD3A87C07345CED78843F60BB3A03A -3481E4C90CACA5A68CA5ABB22D15282CB3B10492FE821ED1141DF6E7A8B36204 -788C853591C31BDBF86F1DBE08ABC1F44C394ABFEDFB23A99AB18DD9D6599606 -AFB2A9B3CE068D24D2154C2DEE7459395DCBDB8088975BC1D2339029C4F629C5 -C518CDB270A952763E7B13A93A89960332E7A9C64D0107099FAF59FCF9C2F6EB -92810C690E04A6DBA109C8298E680D7955D7608611B0D145B48AD141A270A870 -7DC3F99EA89532269C21F2309E0D6A5F7F7A28D5CD27C1FF2A23E22C86A0CFC7 -20ED6B0BA44DC0D1528974C4BCF7C0169EFB17A69AE505F9448258463CFF8935 -CFBDF89B85E3E3A376FCB73B205A74DA37CCC0144343B25F1DD760DBD7F95FC2 -3F8E49F9FC4EEE1B6064598D3CE0A2B3CC9F87BBFC7CCA69A9C3350C02DAF480 -019EB4B31EFFE7BE576A5B2DE88737D59A8F62223E6F3CDE4737F13352C7399A -A3D3A98134AA3FBDBF176B4A933E7B06FCADB941D8E96888D7F11E83EEDC54E2 -EB8E0C966254850B9DCE8C9849A9EACC704FC68C8DC330FE2B8BB23242C476D1 -C94913EA378341C8F03C94E0DC83F600F413A85C2C605F3E63DA3A082003AF79 -4B650A01B3138B493B614751C7A44708916D75E458997B5C1F8C2359DACC61F7 -C9D58A98898E8C37CEBE7475AF0C1FDDA0F30D1B27E4570AC0B74553D22D588D -C32233F717EEC7BAEF56733D0616C44D966A4C96D7A37C3F511A1187399F6E09 -E9D28BBFFA9D627A288559710F9CA3109DDD920B89D66038090309FDD02546C1 -6F15AADCCB2C378C770FC33E48911F4EF573B4E6231AEABE1BF8411F81DC7F16 -036A2EE6A54A0CA35C21EE9526E38578D8B976EBBEB9EFD7FCBA630F8454BA7B -33A10CF6234A10E962F1BE898AD3A7785E9F1470689726E03DFC9DF58E814DDA -1E9F428037FCEFEA7E428622F0E9361A0F641CD89C974ACB3BF8DABBD2EF2669 -7C6D33499EF5539FB0B4B990C508957C56B6ECDE3692628F22B6A67D591B783C -E6199B10F2460BC8CD8D08A31C848322BC5A66142263FDB95E0C3E1B3B009F47 -56D3C2DD344821AE1B375937AD71BA0B1BD8EEA6B423C6F0A3D065C0DE876EE5 -6E6F1EEE955A67E1C7A65213575BD53A3C32BAFEAA468F5B0B0D523A0ED45984 -CF8D8E9043AC0AB2CE3BE392A508FB092A855CF4E4D5BED3FBC27D6B1AC32FAA -E905ADF483949123E98A6F2F65F561822837C57C6D5D5BAF860D935DB2A4CE75 -BFECC86F0210424F07FE5A8F318B1FF818B5F44247D6F0B975EC02145E47F1F9 -C579FC02511F9CF19D65B10338A100DEAC861D6569FAFE847CBF72531CD54864 -60A7368E8DDA70CC8332A85893E3E270FC7876DEE2E4205E592B8D431438B29D -324136007F1BD802503B2259AC71DA890786B731E0C34A73179D8522DFBAC5AE -CDC1FC0852A01EFDF6D50BBE47A4FF69936A8CDFE6102A5B25443F2B684E450E -58C8CB9068EEB127634CC9AD740E01951F8EB724F2E42EC9DED4434629BEB810 -88D2C013ADE23A15D61087CC1DED68AB4924FDDEF0E30B2CE5C17DD4BAA88B77 -06837AE8245B88239B6AE7953DC1D95975356BEF1529DE7582455F43ED83A488 -01C1AE46834F1BDD9704E85A151CEEF4F0D9E08C85ADF68A497A81064C093007 -08F9DEC44AF753D586BC2D2F1D40ECE2B3B4E57A8F0404AA2955D6AC2DBB37EE -074D03E51FB58FD573893B88E8ECC7E68198CD18F5DAEB0BC84915EEEC4BA918 -86F7E64A575AB09EC19BAE2C33D8EDAE05A9C90B90F0861410CC0FCCD6BBF11D -78EC64F8C453ABC7FEABD5C49E70CCD23B7A4F435F09E0AB33DCD24A76D5112D -BB0536872A2F39B0E540C8961FB71A2950FA5A3880216D296B9B764B7A955BD7 -38072CCBCDE6B5FC862FD23C95460BF14BB431A383BE8F6DCD902B4A808BC64C -515E7BD3A8A90786B64149AC65059E5E6A86708D951054B488A1587CB1BC0000 -A80F17F4E72E2CB4F0D18DA55633CD9BD04490E3C04B11D2FA488A98F31E743D -7AFAF0DF30ED6A371FEAC0C9DCF3342898DD8A3C4560AFD03D52282767C83467 -38C397D8732F17F6DE02A722F2C28461A129F427B4824C9E12D9A16480EB81D4 -BE4A062834149676D31821CD3B68905CF120C58013615D6B89665D05A72DD127 -78DEE15D9B612336BB81A6C13FCCC5299769D0CE6F1ABA7616953A72F80306B3 -95DD1F24AB2E5D75BCEAF1DF190A54BEF673280150990250232F1637CA7F5FB2 -736C3D71C1F93F12550AABD90B7CA0FAC0B8D4E99488E270CDDD675FA1C6AF1C -F855309CB2417D4094F83F7F9D2DBF4CCD2CAF17926591DE077ADFE86FAA4452 -B1D613A54A1614D85FD6A1F9ADE41B04EE0FDCC96A5ED01611C16CCCCF983FEF -E0576A8C5C60E05DFAB842B4C1A1E230F7FBE6591DD57C034326876E8FE75217 -B036F5E70D4487D8FCC1ACEC8709CB9AE028A735D82425035D5A27EC608F1EEC -86E11A204B76BC2BC8D3FF9A192BF8E6F8FBE05A4E1876D77F89A02E098F3E52 -0EA2C6112AA71A624A8FC28261D74C78F0CC401B267092A5C6BCA5DAFF38B0B8 -FD59C53DC36B464CC7E22921EDEA286F3EC5D2D385FE91639DEBD92743E9516B -ADF0845FEDB936EBA1005ED4B49983EFBED369535C10A9E8E446032A25167A81 -90DBD6C9FA1C1BAAB475B3F0E7CE0227033E013AC2E6193E5ACE6383C6EBD697 -029381EAEE77197BC1E986E303E7C60463B732311DE1193E4176F2C599542B4E -3D188BCECF1AB6F2C5527D041BD5CFB6D46F19A08AC8B26268D81FA31E28D196 -AB251C9CAED22478A8A7441FCB4A9A9D91A88EC924FEE72F956F55880B0AD537 -97F14DF2973A7A6C3D66AA6EAEEC226913331AAEEC6402977B1C7DD2033F776B -763D49079C83AD203E346377FF069FEA724CC3F73A114AE50990AA03009EC319 -EC7BB856368072DB00FE2EE872CA9D430DF33AA7FB95082BD33C0670E778D897 -E53935569FFC6F1BE605E8D8C1D4B92DA3A106E9D16E4E6B9FBAABCA917A0ED2 -C3B874B08E542C8851EE1F868C675A60D33B746053A419721C7BAD2EA12F27F1 -A58546B2C288C8C761F15258DEA75BC627A639FFDDE3A16DB0D9309DAEB869C1 -D1ABE233069A0912DDF81193605886E14282980C1F347902389BB9DB17580899 -88E4C5F502E16E3D1AE4881FD62797483BDA5AC3DE293AC29058D79673FCD6F2 -CA5A5854F0F951532F242B23CAD3AEEE9F4226B04DBBB087DA71D6A21D555847 -FF863004F08486A84EBFD234334E5FC241866E1803A0637DE492B4AE0F98D4BD -AC0D2B92549D28715B9E7BA68D22A1FCEBEB77341361B541F9CC13421459AFA4 -B0FDA93D290E443FE70AB54A2AAE30AABA70F57BC0870ED87EA2EF54648FCDA9 -60D129F44C09AD4D9ADD8BEFC78F90E7DF3AE7A5D67747EC6FF6DF3C51CFC1E1 -A79CBBF74B50BE7C2868AC933A9A3003984081795D1E2CB5CD52573FA8B2C9E6 -579010E221DB06DDBDEA111AF0E72789A316F461B0FC5325BD6CDCCF9D872F8C -157E22F2B16F7176A52AC31D05E2C49A661A278882768F100ADA658E3ADB514E -71BAF05606F462A04652AF29105079D01DDD8B85AD86606D74BBFDC44157CC5B -AA7F168D8FCD3F41B171A3A2B1B87B5DD3C36BAEA7D75DF35E258540360A3F94 -31DACF11C2168149649FE610396168291A229A18BFAD956F839AA7040660BD56 -DDF70CC06DA6021B95196EB700A84E1CA59A8F8065895C2D408700B613FCE6BB -687B4654EAF8C7F8E1C2B0244D36A583675A93C70F941D80C1245E8352D0F3C5 -C1BE27C22D430BC68CB5A19D0C1AE9AAAFC03D65DC29BE3F5AB7155B0FEAAF46 -0DE7804B243D635B4CE91BBF0A9BCCFB7974C6A03A9F64C45AA993DB70374C91 -E37471193DC6334CB181CFE40A9BFEFF41DFDBF10477A2D1D82C33529225BD49 -F760032CF9BD374CC680EECE471CD73B1290D4CE657057DF4E23E3A52122BA6A -E1727163933848E9AF7E290526A3DAF79DE65B7BFE6BC6E33288FB847ED9F9B3 -39E0132D14C244D1E7B830AB519E304C9ACDD4A12D85D4CFDE1A4FDCCB451D8A -277ABA30BF92625B593C05B655276966239AE696C279A0789F9FC9A620FBC224 -886CDFE2D307D723DE22A0C0C50E9AFFA2D33E9AC198E9405A3B607CD5AE6EC6 -A616B21444D58029A44A9389ACFCCD497F4FE29CC4B181699534E1B83AD85F61 -8911499DA69867AA9B5255DFDB864FC37A6987E6CB661436CE3A9E01B8B5BF96 -73437C9366A8941B952C298FC4AB93EE364C54F119C5F2A60FD5BC933A44FF40 -D87D7842B1384B7F2D83875D57CC245F2D1C3B7BD0EE2E88D62693F2C8229ABE -CDC5E438DB2CF70693AF163238E48FF87A47AD107ACEFF6BA319663DB8F8172C -1CC91EB19063BB3B742E607EB7020C55345AC6CE9446CFCEEC3CACBE6FDB69FD -BC13FF64457FF001ADACED90E0CF1C61FABE58B6720E0615456D4084D4981515 -63CBB7142D8973D481F0B3FE9B54A0F276668CEB1B1441F08E9B41B2754F8145 -0C7BF4734015B90E2D61AEDB7189DCC18E7C60519387B2E0BF177F497083E8A1 -052D1D494AB2528CDE37BFB459682066C49545EE2BC04C31D9FD70E092B4CFB7 -FC8FB9B6DE0EB48F24DAC9BB80D1DF95C4248D5C28CAEAFA0BE9C3445D8C9CE3 -ABE0FA0AF4AD425851E7588A9C4A9CDA54CA4A075ACFA5D88DA0F5176CED8527 -083B08C61DC18311668973AECD50DBA7E94625B36FA3B19EF34B1B4424CB404E -DF52989F313676A19629C28FF62A15E10328D526AF0AB24E3D758F2C0F84F52E -BFAD5F980D7498DF12D19CEA56177CE1424869CC9342126404AF9E56D0B56E5E -4A9FC9DCB519B1255BE2B3656B25E6834839782987F2587B3B6BD92CF5B060A5 -46154B723629C6AF9F3F9D75AA8332AF64ADA632B6F038794BF9E2936DC9B4F5 -43C29B7EE4AE984154F6F4554706E72361CCB4512D8F3320DB1921CE7F7ACFE3 -1B7F0A72D20A2912540E17DEBBC8CC2B2E236DA28F308117B76D2550200A2B66 -94CA669A909B2AE2FABFE76B641BF3ED9F236E29722F74CFAC337C69B51B4458 -7EB870315A0A136B0D183B5C9E25D2FD57C75BCC0C7406AB30AE3E3FE1D60B2A -C8050242C14A712EE6C867AAA701CAF8B33276150D90C60B5ED62958FFCF4E67 -558B518020959040A3B990B412F74987A94B09C4ACE894EC57E52F434DA49604 -F33262B59D73B7F70BF696D7BBD8F7F4AC8120B5949DED09D8993CEB6AA61E7E -586D50B652A7B7D80BF1F19F84D092ED2D448A9BBADFCC8739CB6F6BD0B37297 -A3CF815325145E174D3BF6A07CDB2834943B02FC4FEDFF98618C8F7E81143F3D -6BF377FF9B9193C2DD24F3A3FCECCC610C4D2159E16FC5131206F7A96D8E7FD8 -AB1B67684B14BACC5E760073BCE327AADEE16436D4304FF7E1D5E40B739015F3 -80DF204E2AD0EFACE7B11F87DB74DACDCB2FA973D9880426290FE865E9D214CB -783B4CC2990E7C66759269C4829AF519FB6647166107B7FBF3EC1691BC75E78A -78D9C13CCA8934E475DB1EAC5F638E8E348D5C3F0E78596AD150CD6CE07E687D -5B19E531A6B2780FEC840C5F5AA34FB3D0F9F7D08032547882005A8B37B9E7C8 -9162664F84FDC45E488B379108DF22DFAE3C94FFF02DAB30943F4FAAADF13AA5 -85CA5937903E961990629D2B0B58C6BE3CB35F53338C53309E64ABA4B3E2C619 -E842F69D946C945359BEFBCBA43550B3BA9BA169833AC32B7C89EC9C0F7D5636 -89E310BD1FD121EA02B31E1A56C5738AE2EB4B27883766691AA61D4A5D03844E -6D655C71E499AB9BEA78A4EE71D7725AD310B23BF925CEFC7E0C61D060027E10 -AF3F5A57CF69919E02794D159A206D331B62A2900699C8CB652052674F408E57 -8ED7F6A79718CFD58E39D990F11827746E8CC41191A4B214C0D582F72F8C9FF5 -11A9D1D35C7A669C63297D8BA473EAE51E08EF60004743878CBDB21562A7077B -ED300666FECF938675907DA0C7ACC29C21046DD98E741D6AEF51120D975E1590 -E493CD5AD6739DA83900B109B1DB865812B3B821C4AEDC089719C81441C2C80D -181B640E0C57C53BB1BE99594BFC6D5FEE646FE75E03B759A5AB12EC591E9A67 -1C1D04CC207C300F79D2ED9A05A1F285D87F903F80820B1E7847C61A04CC59C5 -1CF0845F401190139D51A04539498906B94F6169EC038849D6981CF3DB34000F -10DEB817BB9FC3D94B7C1E0A96E4F8B3118E302CC7669012DD9C4EB9E1A13C67 -658F61688440A7A9F9E26BC63A87AC3ED2201B8CE895292728FBB1E6E4C3D185 -FF8C1B4D9C0574A868E81E273AC96838E37F7258D5FF5A39F90FC2F94156F71F -F9C3E576B29EAB74A1375A3042B5D46FC4F839C26B3FB2EE5C67EA9E77DDECE7 -134A75420C99771B95F28D30B766CF4B553E90BD06DFD63B3924E9409D8841F8 -85024406E9F6E38F4476371F368ADCB44C0C6D7D576AA1ECA6A0C0AD1F4BA2A8 -674341670678014E974F12E5E64FE3AB80BFABF5C27E9B27B83A9AFB9D16629C -A2DC2FDC7E2DF71818BA334F043733632A20AD495FF469F05ED88E9379378B3E -1E8B75ADDC3E59A3D7B48F7FF8A61A85B96E87528D56A6950AF5960C36D231A9 -D83C9FE642EC5201BB798954A900B402070B524E29A5932304607159A4F494EC -4CE0E1FDA8E49A34F33B2C96C9D463A66098BCB8833C5D7E1B368454E48CDB25 -4B3CFD7EBC09EE03BB95D48C40C7FEFB4F11A191032427962754916877D6E6B4 -C172A7D64FA392117ED53420C0CF60B5AABA717DB9CBAE089DCDAAB90FDFAB6A -9F02058D98F2F1F82AEE7FF621A191DB861C95EE2615179716343CD44EEFAF1F -831AE745FBF43A3878492C2606026ADA1B8E61F8AD0E8C8323888C91AC3AB359 -9F4F1B0ED460684C3BB8BFED81552376F76EE9B568DFB2519B032FF782F82EBD -3EA52064AF6A0C04E2B9761167D1C8F93D8ABFAD75A1CFED2F5F4D1AFC17E9FC -7B06752E17CCFB3EF0FC5EB1832F6C7DBA1D590A804DAC83FC9AF8C919014C32 -F1D0E9A667456A2364791405BA58C67A9AB002F4882DF6DD954486B1518A9C91 -1BBBBCFCD883714B0A888CACC8CDB3B8982FD8AB7D512A5BD7145C245FA6E3D4 -66C6E829A0A8640744F781EE6A59B490F783A251D223D9270C8BC5B04DC11D43 -404E161310290FE252A78D7A766FF0B767AAB702D3664F756F7E013BB84EAA32 -A9902F73F9EEA56C7D258068EADDCB9089DE2EDA54350AC7312D50AA877387A1 -4D338442564AED435127C83DA956BEC6A9F4F0C876D1507F5749A6D04AFFD17A -E116A337C59AF9B8A550511F9811B75CD45E53984B26115B0859515654AE5749 -17A893DF4C3613103F2388AEB730A72C6F191188E1F456FAB502C01567AF75A6 -C74373BA2C33046A9821122514CA96C81EE22021BFE73625609252A4931ABFC3 -79A81D23143B3959AF5E546AB2ADF6CBD4EB78D8731B68315CBD5D95230C0BDB -C4D743B2888F5C09A3C38F821614BF4C47AAEC9503D50B8B0AC60AA9C843DEFD -6C60D331D947E2FE40366647D7944AC2C149A27E2C72AD4019B0492B8CCBF411 -74CA332569C815F53F237FCACB38C90748B688E1C3DD96A2173A747B1EC3D03F -6BD8B4CCE08472BDBB40636484A4A80904522C774653F572FBC2E0C6CBA78809 -E53C64EB02223DE6324AFB142ACDBD29CA079A50107EAC129E7F7D6835E4E71F -1237D94521FD4AD135DF6E03C6886E1B55F3E3E0F466AA0F36E69382A34FBF6B -0963C27950969538A9829D199780C3676130F82B664054B306AA13FB36986CA5 -442E2FDBD946C13F82DA2C4369246A00168566CA66F869C6BADAEDA8291CEFEF -B07BE181DF9566C981727AB62B5A8F2703B87217DE8E46F7B4B39FCCB4710F4F -08C70F336AF7ED4DE8C6856614CA228681028847237FFA2D72BF167AF1BF99A9 -EAF4790537A4E51BB9E31E9D6D6142DAFCFAF0EFE31FA502F8F4540638FCA94B -29ECE4CC50D1F0DB08CD6C39C8E87D65FBF696D0E9D85C97038E8A0D63DAD193 -2A702EFDE85FA1E41A97137EA457653BFC568E60DD6C1D19977FC852FE3E3287 -DD604314EB01C9746911E4DB1A1AC4E098238EAD17377AA14B2CC15B3369402F -C4E0C331412B798A5F329C344E49EE944D1B01EA168BD0CBE4F5897C3AE5E8FA -C6576353EFEE66393D34EDD3E6FF2DA38CD660366DC33DAAFA023A9DE3191397 -C0AFB7E5B5B163DE7500A7B43F322BA20B7D95C8E1BC5E8D1D77196D0AF27D89 -476E0F01E23EA043CCE711E3A8E27C0419F7DC320212F86A3D44E40FF184C7AB -7DF013AF9DF45A5DA9285C549F6C132488BBD51B43576A92F8297FBADDD58FD8 -9C1CD7A4142BA668B5E01858D01C3456288B52B8CF8152C8A1C7855A777E5DCD -31DCB340B297FEE2596DA1EC6A3A3A0907F38F620D4E0B54AB95E30FF3A4440D -73C69635C398AA777CF973D7B355AE60BDD84B880AB3D732C63C64FDE3AFB4A6 -57E90F51438C39BA3948D2F66EA8D9089C02D58F0B83B33CF3C8630BE1F48257 -2B16C6FAB4BA84F306C89B6242A0E2EEE82AE157167E537363A83421D30E157B -D6DAE4E95B43B3A90499FF48898D53D9FB6B33026878E5D5ECD26FFABD866AFD -70FE30B4183C65871D4094E54EA693B397495F991F13653A15250C011AD816FC -DE7D139637750461C7A6A60DAFA68B7F8C639FCF5504B68EFEDE8497C9DD8537 -F88EFDBEEAC0A20372EA1B154CB20C0B054A092E60397371F50169BC87863AC5 -C4974F2EE1E3746BB8 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (readline.dvi) -@start /Fa 209[24 46[{ TeX74afc74cEncoding ReEncodeFont }1 -74.7198 /CMTI9 rf /Fb 133[34 41 41 55 41 43 30 30 30 -41 43 38 43 64 21 41 1[21 43 38 23 34 43 34 43 38 11[58 -6[58 1[48 4[60 50 1[59 10[38 38 38 38 38 38 38 38 38 -38 2[26 21 30[43 43 12[{ TeXf7b6d320Encoding ReEncodeFont }45 -74.7198 /CMR9 rf /Fc 134[39 39 2[39 39 39 39 2[39 39 -39 39 2[39 39 2[39 3[39 19[39 27[39 39 2[39 45[{ - TeX09fbbfacEncoding ReEncodeFont }18 74.7198 /CMSLTT10 -rf /Fd 129[39 39 39 39 39 39 39 39 39 39 39 39 39 39 -39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 -1[39 39 39 2[39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 -39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 3[39 1[39 -1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 -33[{ TeX09fbbfacEncoding ReEncodeFont }83 74.7198 /CMTT9 -rf /Fe 214[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }2 -90.9091 /CMSS10 rf /Ff 133[51 60 60 83 60 64 45 45 47 -60 64 57 64 95 32 60 1[32 64 57 35 53 64 51 64 56 84[64 -67 11[{ TeXf7b6d320Encoding ReEncodeFont }27 99.6264 -/CMBX10 rf /Fg 134[52 2[52 52 52 52 52 52 52 52 52 52 -52 52 1[52 52 52 52 52 52 52 52 52 1[52 18[52 52 1[52 -2[52 52 26[52 42[{ TeX09fbbfacEncoding ReEncodeFont }29 -99.6264 /CMTT10 rf /Fh 134[65 65 89 65 68 48 48 50 1[68 -61 68 102 34 65 1[34 68 61 37 56 68 55 68 60 7[93 1[127 -93 94 85 68 92 3[96 116 74 96 1[46 96 1[77 81 94 89 87 -93 6[34 61 61 61 61 61 61 61 61 61 61 1[34 46[{ - TeXf7b6d320Encoding ReEncodeFont }54 109.091 /CMBX12 -rf /Fi 134[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 12[{ TeXf7b6d320Encoding ReEncodeFont }48 90.9091 -/CMSL10 rf /Fj 138[39 27 28 28 1[39 35 39 2[37 22 4[31 -1[31 39 35 5[20 6[51 39 52 1[48 2[65 44 5[46 48 54 51 -50 53 15[35 3[24 5[20 39[{ TeXf7b6d320Encoding ReEncodeFont }29 -66.4176 /CMR8 rf /Fk 150[30 30 104[{ TeXbbad153fEncoding ReEncodeFont } -2 74.7198 /CMSY9 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[{ - TeX09fbbfacEncoding ReEncodeFont }37 90.9091 /CMSLTT10 -rf /Fm 135[56 2[56 54 42 2[51 58 56 68 47 1[39 27 56 -58 49 51 57 54 1[56 97[{ TeX0ef0afcaEncoding ReEncodeFont }18 -90.9091 /CMCSC10 rf /Fn 134[44 1[60 42 49 30 37 38 1[46 -46 51 74 23 2[28 1[42 1[42 46 42 1[46 50[28 33[51 12[{ - TeX74afc74cEncoding ReEncodeFont }20 90.9091 /CMTI10 -rf /Fo 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 -119.552 /CMBXTI10 rf /Fp 134[85 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 153 97 2[60 1[127 101 106 1[117 -1[122 14[81 81 49[{ TeXf7b6d320Encoding ReEncodeFont }37 -143.462 /CMBX12 rf /Fq 242[91 13[{ TeXbbad153fEncoding ReEncodeFont }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 9[67 67 67 67 67 67 67 2[37 1[37 -44[{ TeXf7b6d320Encoding ReEncodeFont }54 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 -1[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 1[48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 33[{ TeX09fbbfacEncoding ReEncodeFont }89 -90.9091 /CMTT10 rf /Ft 131[91 1[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 2[45 -1[45 19[76 51 51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }82 -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[{ - TeXf7b6d320Encoding ReEncodeFont }14 172.154 /CMBX12 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - end -%%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 1373 1515 a Ft(Edition)30 b(5.1-b)s(eta1,)j(for)d -Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(5.1-b)s(eta1.)3139 -1623 y(No)m(v)m(em)m(b)s(er)g(2005)150 4935 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 3024 a Ft(This)32 b(man)m(ual)h(describ)s(es) -f(the)h(GNU)h(Readline)f(Library)f(\(v)m(ersion)i(5.1-b)s(eta1,)i(11)e -(No)m(v)m(em)m(b)s(er)g(2005\),)150 3133 y(a)42 b(library)f(whic)m(h)g -(aids)g(in)g(the)g(consistency)i(of)e(user)g(in)m(terface)h(across)g -(discrete)g(programs)f(whic)m(h)150 3243 y(pro)m(vide)30 -b(a)h(command)f(line)h(in)m(terface.)150 3377 y(Cop)m(yrigh)m(t)602 -3374 y(c)577 3377 y Fq(\015)f Ft(1988-2004)k(F)-8 b(ree)32 -b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 3512 -y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d(distribute)h -(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m(vided)f(the)150 -3621 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s(ermission)g(notice)h -(are)g(preserv)m(ed)f(on)h(all)g(copies.)390 3756 y(P)m(ermission)k(is) -h(gran)m(ted)f(to)h(cop)m(y)-8 b(,)38 b(distribute)d(and/or)g(mo)s -(dify)f(this)h(do)s(cumen)m(t)g(under)390 3866 y(the)j(terms)g(of)g -(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 -b(ersion)39 b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 -b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8 -b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28 -b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33 -b(texts)e(b)s(eing)g(\\A)g(GNU)g(Man)m(ual,")h(and)e(with)g(the)h(Bac)m -(k-Co)m(v)m(er)390 4194 y(T)-8 b(exts)33 b(as)g(in)f(\(a\))h(b)s(elo)m -(w.)47 b(A)33 b(cop)m(y)g(of)f(the)h(license)g(is)g(included)e(in)h -(the)h(section)g(en)m(titled)390 4304 y(\\GNU)e(F)-8 -b(ree)32 b(Do)s(cumen)m(tation)g(License.")390 4438 y(\(a\))39 -b(The)f(FSF's)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)39 b(is:)56 -b(\\Y)-8 b(ou)39 b(ha)m(v)m(e)g(freedom)f(to)h(cop)m(y)f(and)g(mo)s -(dify)390 4548 y(this)32 b(GNU)i(Man)m(ual,)g(lik)m(e)g(GNU)f(soft)m(w) -m(are.)49 b(Copies)32 b(published)f(b)m(y)h(the)h(F)-8 -b(ree)34 b(Soft)m(w)m(are)390 4658 y(F)-8 b(oundation)31 -b(raise)g(funds)d(for)j(GNU)g(dev)m(elopmen)m(t.")150 -4902 y(Published)e(b)m(y)h(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation)150 5011 y(59)31 b(T)-8 b(emple)31 b(Place,)h(Suite)e(330,) -150 5121 y(Boston,)i(MA)e(02111-1307)150 5230 y(USA)p -eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Ft(i)150 299 y Fp(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(1)135 b(Command)45 -b(Line)g(Editing)40 b Fo(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)84 b Fr(1)449 778 -y Ft(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)25 -b Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 -b Ft(1)449 888 y(1.2)92 b(Readline)31 b(In)m(teraction)16 -b Fn(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)46 b Ft(1)748 997 y(1.2.1)93 b(Readline)31 -b(Bare)g(Essen)m(tials)c Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 -b Ft(1)748 1107 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)h -(Commands)14 b Fn(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)44 b Ft(2)748 1216 y(1.2.3)93 b(Readline)31 -b(Killing)g(Commands)22 b Fn(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)51 b Ft(2)748 -1326 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)25 b Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(3)748 -1435 y(1.2.5)93 b(Searc)m(hing)30 b(for)h(Commands)e(in)h(the)g -(History)d Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 -b Ft(3)449 1545 y(1.3)92 b(Readline)31 b(Init)f(File)g -Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)58 b Ft(4)748 1655 y(1.3.1)93 b(Readline)31 -b(Init)f(File)h(Syn)m(tax)13 b Fn(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 -b Ft(4)748 1764 y(1.3.2)93 b(Conditional)30 b(Init)h(Constructs)9 -b Fn(.)14 b(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)39 b Ft(9)748 1874 y(1.3.3)93 -b(Sample)30 b(Init)g(File)21 b Fn(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)51 b Ft(10)449 1983 y(1.4)92 b(Bindable)31 -b(Readline)g(Commands)12 b Fn(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 -b Ft(13)748 2093 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 -b(Mo)m(ving)d Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Ft(13)748 -2203 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f -(History)18 b Fn(.)e(.)f(.)g(.)g(.)g(.)g(.)47 b Ft(13)748 -2312 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 -b(ext)30 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)58 b Ft(14)748 2422 y(1.4.4)93 b(Killing)31 -b(And)e(Y)-8 b(anking)17 b Fn(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)46 -b Ft(16)748 2531 y(1.4.5)93 b(Sp)s(ecifying)29 b(Numeric)i(Argumen)m -(ts)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)54 b Ft(17)748 2641 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)19 -b Fn(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -49 b Ft(17)748 2751 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 -b Fn(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 -b Ft(17)748 2860 y(1.4.8)93 b(Some)30 b(Miscellaneous)i(Commands)13 -b Fn(.)h(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -42 b Ft(18)449 2970 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)d -Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)56 b Ft(19)150 3212 y Fr(2)135 b(Programming)46 -b(with)f(GNU)g(Readline)25 b Fo(.)c(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)69 -b Fr(21)449 3349 y Ft(2.1)92 b(Basic)32 b(Beha)m(vior)15 -b Fn(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)h(.)f(.)44 b Ft(21)449 3459 y(2.2)92 -b(Custom)30 b(F)-8 b(unctions)15 b Fn(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b -Ft(22)748 3568 y(2.2.1)93 b(Readline)31 b(T)m(yp)s(edefs)19 -b Fn(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 -b Ft(22)748 3678 y(2.2.2)93 b(W)-8 b(riting)31 b(a)g(New)f(F)-8 -b(unction)11 b Fn(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(23)449 -3787 y(2.3)92 b(Readline)31 b(V)-8 b(ariables)30 b Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)58 b Ft(24)449 3897 y(2.4)92 b(Readline)31 b(Con)m(v)m(enience)h(F) --8 b(unctions)15 b Fn(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 -b Ft(28)748 4007 y(2.4.1)93 b(Naming)30 b(a)h(F)-8 b(unction)25 -b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(28)748 -4116 y(2.4.2)93 b(Selecting)31 b(a)g(Keymap)12 b Fn(.)j(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)41 b Ft(28)748 4226 y(2.4.3)93 b(Binding)30 -b(Keys)10 b Fn(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)39 b Ft(29)748 4335 y(2.4.4)93 b(Asso)s(ciating)31 -b(F)-8 b(unction)31 b(Names)g(and)f(Bindings)16 b Fn(.)f(.)g(.)g(.)g(.) -g(.)g(.)45 b Ft(31)748 4445 y(2.4.5)93 b(Allo)m(wing)31 -b(Undoing)e Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 -b Ft(31)748 4555 y(2.4.6)93 b(Redispla)m(y)21 b Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)50 b Ft(32)748 4664 y(2.4.7)93 b(Mo)s(difying)30 -b(T)-8 b(ext)13 b Fn(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)g(.)42 b Ft(34)748 4774 y(2.4.8)93 b(Character)30 -b(Input)20 b Fn(.)14 b(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -50 b Ft(34)748 4883 y(2.4.9)93 b(T)-8 b(erminal)30 b(Managemen)m(t)c -Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(35)748 4993 -y(2.4.10)93 b(Utilit)m(y)32 b(F)-8 b(unctions)26 b Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Ft(35)748 -5103 y(2.4.11)93 b(Miscellaneous)32 b(F)-8 b(unctions)12 -b Fn(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)41 b Ft(36)748 5212 y(2.4.12)93 -b(Alternate)32 b(In)m(terface)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)59 b Ft(37)748 5322 y(2.4.13)93 b(A)30 b(Readline)h(Example)17 -b Fn(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)46 b Ft(38)p eop -end -%%Page: -2 4 -TeXDict begin -2 3 bop 150 -116 a Ft(ii)2640 b(GNU)31 -b(Readline)g(Library)449 83 y(2.5)92 b(Readline)31 b(Signal)g(Handling) -23 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Ft(39)449 193 y(2.6)92 b(Custom)30 b(Completers)25 -b Fn(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)55 b Ft(41)748 302 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8 -b(orks)19 b Fn(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Ft(41)748 -412 y(2.6.2)93 b(Completion)30 b(F)-8 b(unctions)12 b -Fn(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Ft(42)748 -521 y(2.6.3)93 b(Completion)30 b(V)-8 b(ariables)23 b -Fn(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)52 b Ft(43)748 -631 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)9 -b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)38 b Ft(47)150 873 y Fr(App)t(endix)44 b(A)99 -b(Cop)l(ying)46 b(This)e(Man)l(ual)29 b Fo(.)20 b(.)g(.)f(.)h(.)f(.)g -(.)h(.)f(.)h(.)f(.)74 b Fr(57)449 1010 y Ft(A.1)92 b(GNU)31 -b(F)-8 b(ree)31 b(Do)s(cumen)m(tation)h(License)c Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)56 b Ft(57)748 1120 y(A.1.1)92 b(ADDENDUM:)33 -b(Ho)m(w)e(to)g(use)f(this)g(License)h(for)g(y)m(our)930 -1230 y(do)s(cumen)m(ts)c Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(63)150 -1472 y Fr(Concept)45 b(Index)21 b Fo(.)e(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)65 b Fr(65)150 1742 y(F)-11 b(unction)44 -b(and)h(V)-11 b(ariable)45 b(Index)17 b Fo(.)j(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)62 b Fr(67)p -eop end -%%Page: 1 5 -TeXDict begin 1 4 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(1)150 299 y Fp(1)80 -b(Command)54 b(Line)f(Editing)275 511 y Ft(This)29 b(c)m(hapter)i -(describ)s(es)f(the)g(basic)h(features)g(of)f(the)h Fm(gnu)f -Ft(command)g(line)h(editing)g(in)m(terface.)150 755 y -Fr(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)275 -995 y Ft(The)29 b(follo)m(wing)j(paragraphs)e(describ)s(e)g(the)g -(notation)i(used)d(to)j(represen)m(t)e(k)m(eystrok)m(es.)275 -1125 y(The)i(text)j Fl(C-k)d Ft(is)i(read)f(as)h(`Con)m(trol-K')g(and)f -(describ)s(es)g(the)g(c)m(haracter)i(pro)s(duced)d(when)g(the)3663 -1122 y Fk(h)p 3687 1069 38 4 v 3687 1125 a Fj(k)p 3687 -1140 V 3720 1122 a Fk(i)150 1235 y Ft(k)m(ey)f(is)g(pressed)e(while)h -(the)h(Con)m(trol)g(k)m(ey)g(is)g(depressed.)275 1365 -y(The)g(text)i Fl(M-k)e Ft(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s -(es)f(the)h(c)m(haracter)h(pro)s(duced)e(when)f(the)i(Meta)150 -1474 y(k)m(ey)d(\(if)g(y)m(ou)g(ha)m(v)m(e)g(one\))g(is)g(depressed,)f -(and)f(the)1859 1471 y Fk(h)p 1883 1418 V 1883 1474 a -Fj(k)p 1883 1490 V 1916 1471 a Fk(i)1974 1474 y Ft(k)m(ey)j(is)e -(pressed.)39 b(The)28 b(Meta)i(k)m(ey)f(is)g(lab)s(eled)3558 -1471 y Fk(h)p 3582 1418 143 4 v 3582 1474 a Fj(AL)-6 -b(T)p 3582 1490 V 3720 1471 a Fk(i)150 1584 y Ft(on)26 -b(man)m(y)g(k)m(eyb)s(oards.)39 b(On)26 b(k)m(eyb)s(oards)g(with)g(t)m -(w)m(o)h(k)m(eys)g(lab)s(eled)2425 1581 y Fk(h)p 2450 -1528 V 2450 1584 a Fj(AL)-6 b(T)p 2450 1599 V 2587 1581 -a Fk(i)2643 1584 y Ft(\(usually)27 b(to)g(either)f(side)g(of)h(the)150 -1693 y(space)32 b(bar\),)g(the)775 1690 y Fk(h)p 799 -1637 V 799 1693 a Fj(AL)-6 b(T)p 799 1709 V 937 1690 -a Fk(i)998 1693 y Ft(on)32 b(the)f(left)h(side)g(is)f(generally)i(set)e -(to)i(w)m(ork)e(as)h(a)f(Meta)i(k)m(ey)-8 b(.)45 b(The)3393 -1690 y Fk(h)p 3417 1637 V 3417 1693 a Fj(AL)-6 b(T)p -3417 1709 V 3555 1690 a Fk(i)3616 1693 y Ft(k)m(ey)150 -1803 y(on)33 b(the)h(righ)m(t)g(ma)m(y)g(also)g(b)s(e)f(con\014gured)f -(to)i(w)m(ork)g(as)g(a)f(Meta)i(k)m(ey)f(or)g(ma)m(y)g(b)s(e)e -(con\014gured)h(as)h(some)150 1913 y(other)d(mo)s(di\014er,)e(suc)m(h)h -(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)h(accen)m(ted)h(c)m -(haracters.)275 2043 y(If)21 b(y)m(ou)h(do)g(not)g(ha)m(v)m(e)h(a)f -(Meta)h(or)1388 2040 y Fk(h)p 1412 1987 V 1412 2043 a -Fj(AL)-6 b(T)p 1412 2058 V 1550 2040 a Fk(i)1601 2043 -y Ft(k)m(ey)e(,)25 b(or)d(another)g(k)m(ey)h(w)m(orking)f(as)g(a)g -(Meta)h(k)m(ey)-8 b(,)25 b(the)d(iden)m(tical)150 2152 -y(k)m(eystrok)m(e)i(can)f(b)s(e)f(generated)i(b)m(y)e(t)m(yping)1619 -2149 y Fk(h)p 1643 2096 139 4 v 1643 2152 a Fj(ESC)p -1643 2168 V 1777 2149 a Fk(i)1829 2152 y Fn(\014rst)p -Ft(,)j(and)d(then)g(t)m(yping)2678 2149 y Fk(h)p 2703 -2096 38 4 v 2703 2152 a Fj(k)p 2703 2168 V 2736 2149 -a Fk(i)2765 2152 y Ft(.)38 b(Either)23 b(pro)s(cess)f(is)g(kno)m(wn)150 -2262 y(as)31 b Fi(metafying)39 b Ft(the)850 2259 y Fk(h)p -874 2206 V 874 2262 a Fj(k)p 874 2277 V 907 2259 a Fk(i)968 -2262 y Ft(k)m(ey)-8 b(.)275 2392 y(The)39 b(text)j Fl(M-C-k)d -Ft(is)h(read)g(as)h(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g -(c)m(haracter)i(pro)s(duced)d(b)m(y)150 2501 y Fi(metafying)g -Fl(C-k)p Ft(.)275 2632 y(In)d(addition,)j(sev)m(eral)f(k)m(eys)f(ha)m -(v)m(e)h(their)f(o)m(wn)g(names.)60 b(Sp)s(eci\014cally)-8 -b(,)2768 2629 y Fk(h)p 2792 2576 146 4 v 2792 2632 a -Fj(DEL)p 2792 2647 V 2934 2629 a Fk(i)2964 2632 y Ft(,)3028 -2629 y Fk(h)p 3052 2576 139 4 v 3052 2632 a Fj(ESC)p -3052 2647 V 3186 2629 a Fk(i)3216 2632 y Ft(,)3279 2629 -y Fk(h)p 3303 2576 144 4 v 3303 2632 a Fj(LFD)p 3303 -2647 V 3443 2629 a Fk(i)3473 2632 y Ft(,)3537 2629 y -Fk(h)p 3561 2576 139 4 v 3561 2632 a Fj(SPC)p 3561 2647 -V 3695 2629 a Fk(i)3725 2632 y Ft(,)150 2738 y Fk(h)p -174 2685 151 4 v 174 2741 a Fj(RET)p 174 2757 V 321 2738 -a Fk(i)351 2741 y Ft(,)47 b(and)612 2738 y Fk(h)p 637 -2685 148 4 v 637 2741 a Fj(T)-6 b(AB)p 637 2757 V 780 -2738 a Fk(i)853 2741 y Ft(all)45 b(stand)e(for)g(themselv)m(es)i(when)d -(seen)i(in)f(this)g(text,)48 b(or)43 b(in)g(an)h(init)f(\014le)h(\(see) -150 2851 y(Section)c(1.3)f([Readline)h(Init)e(File],)43 -b(page)c(4\).)67 b(If)38 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)2888 -2848 y Fk(h)p 2912 2795 144 4 v 2912 2851 a Fj(LFD)p -2912 2866 V 3052 2848 a Fk(i)3121 2851 y Ft(k)m(ey)-8 -b(,)42 b(t)m(yping)3604 2848 y Fk(h)p 3628 2795 97 4 -v 3628 2851 a Fj(C-j)p 3628 2866 V 3720 2848 a Fk(i)150 -2960 y Ft(will)30 b(pro)s(duce)e(the)i(desired)f(c)m(haracter.)42 -b(The)1748 2957 y Fk(h)p 1772 2904 151 4 v 1772 2960 -a Fj(RET)p 1772 2976 V 1919 2957 a Fk(i)1978 2960 y Ft(k)m(ey)30 -b(ma)m(y)g(b)s(e)f(lab)s(eled)2770 2957 y Fk(h)p 2794 -2904 217 4 v 2794 2960 a Fj(Return)p 2794 2976 V 3007 -2957 a Fk(i)3066 2960 y Ft(or)3176 2957 y Fk(h)p 3201 -2904 172 4 v 3201 2960 a Fj(En)n(ter)p 3201 2976 V 3368 -2957 a Fk(i)3427 2960 y Ft(on)h(some)150 3070 y(k)m(eyb)s(oards.)150 -3314 y Fr(1.2)68 b(Readline)47 b(In)l(teraction)275 3554 -y Ft(Often)24 b(during)g(an)h(in)m(teractiv)m(e)j(session)e(y)m(ou)f(t) -m(yp)s(e)h(in)f(a)g(long)h(line)f(of)h(text,)h(only)f(to)f(notice)i -(that)f(the)150 3663 y(\014rst)32 b(w)m(ord)g(on)g(the)g(line)h(is)g -(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g -(a)g(set)g(of)f(commands)g(for)150 3773 y(manipulating)e(the)g(text)h -(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h -(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 -3883 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 -b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m -(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3992 y(to)35 b(the)f(place)i(that)e -(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g -(the)f(corrections.)54 b(Then,)150 4102 y(when)30 b(y)m(ou)i(are)f -(satis\014ed)g(with)g(the)g(line,)h(y)m(ou)g(simply)e(press)2320 -4099 y Fk(h)p 2344 4046 151 4 v 2344 4102 a Fj(RET)p -2344 4117 V 2491 4099 a Fk(i)2520 4102 y Ft(.)43 b(Y)-8 -b(ou)32 b(do)f(not)g(ha)m(v)m(e)i(to)e(b)s(e)g(at)h(the)150 -4211 y(end)j(of)h(the)g(line)g(to)h(press)1126 4208 y -Fk(h)p 1150 4155 V 1150 4211 a Fj(RET)p 1150 4227 V 1297 -4208 a Fk(i)1327 4211 y Ft(;)h(the)e(en)m(tire)h(line)f(is)g(accepted)h -(regardless)f(of)g(the)g(lo)s(cation)i(of)e(the)150 4321 -y(cursor)30 b(within)g(the)g(line.)150 4532 y Fh(1.2.1)63 -b(Readline)40 b(Bare)h(Essen)m(tials)275 4772 y Ft(In)22 -b(order)g(to)i(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)h -(simply)d(t)m(yp)s(e)i(them.)38 b(The)22 b(t)m(yp)s(ed)h(c)m(haracter)i -(app)s(ears)150 4881 y(where)32 b(the)h(cursor)e(w)m(as,)j(and)e(then)g -(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 -b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4991 y(c)m(haracter,)f(y)m(ou) -f(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and) -f(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 5121 -y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g -(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) -m(yp)s(ed)150 5230 y(sev)m(eral)e(other)f(c)m(haracters.)42 -b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h -Fl(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 -5340 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 -b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g -(with)f Fl(C-f)p Ft(.)p eop end -%%Page: 2 6 -TeXDict begin 2 5 bop 150 -116 a Ft(2)2645 b(GNU)31 b(Readline)g -(Library)275 299 y(When)h(y)m(ou)h(add)f(text)h(in)f(the)h(middle)f(of) -h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m(haracters)h(to)g(the) -e(righ)m(t)150 408 y(of)d(the)g(cursor)f(are)h(`pushed)e(o)m(v)m(er')j -(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h(that)f(y)m(ou)g(ha)m(v)m -(e)h(inserted.)40 b(Lik)m(ewise,)150 518 y(when)d(y)m(ou)g(delete)i -(text)g(b)s(ehind)c(the)j(cursor,)h(c)m(haracters)g(to)f(the)g(righ)m -(t)g(of)g(the)g(cursor)e(are)i(`pulled)150 628 y(bac)m(k')24 -b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g -(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g -(bare)f(essen)m(tials)150 737 y(for)30 b(editing)h(the)g(text)g(of)g -(an)f(input)f(line)i(follo)m(ws.)150 892 y Fl(C-b)336 -b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150 -1048 y Fl(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m -(haracter.)150 1200 y Fk(h)p 174 1147 146 4 v 174 1203 -a Fj(DEL)p 174 1218 V 316 1200 a Fk(i)376 1203 y Ft(or)487 -1200 y Fk(h)p 512 1147 317 4 v 512 1203 a Fj(Bac)n(kspace)p -512 1218 V 824 1200 a Fk(i)630 1312 y Ft(Delete)i(the)d(c)m(haracter)i -(to)f(the)g(left)g(of)f(the)h(cursor.)150 1467 y Fl(C-d)336 -b Ft(Delete)33 b(the)d(c)m(haracter)i(underneath)d(the)i(cursor.)150 -1622 y(Prin)m(ting)g(c)m(haracters)630 1732 y(Insert)f(the)g(c)m -(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g(cursor.)150 -1887 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630 1997 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 2106 y(line.)150 -2262 y(\(Dep)s(ending)g(on)g(y)m(our)g(con\014guration,)h(the)1726 -2259 y Fk(h)p 1750 2205 V 1750 2262 a Fj(Bac)n(kspace)p -1750 2277 V 2063 2259 a Fk(i)2127 2262 y Ft(k)m(ey)g(b)s(e)e(set)h(to)h -(delete)g(the)f(c)m(haracter)i(to)f(the)150 2371 y(left)f(of)f(the)g -(cursor)f(and)h(the)1192 2368 y Fk(h)p 1216 2315 146 -4 v 1216 2371 a Fj(DEL)p 1216 2386 V 1358 2368 a Fk(i)1421 -2371 y Ft(k)m(ey)g(set)h(to)g(delete)g(the)f(c)m(haracter)i(underneath) -c(the)i(cursor,)h(lik)m(e)150 2481 y Fl(C-d)p Ft(,)c(rather)g(than)g -(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g(the)f(cursor.\))150 -2698 y Fh(1.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)275 -2940 y Ft(The)25 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)f(the)g(most)h -(basic)f(k)m(eystrok)m(es)i(that)f(y)m(ou)f(need)g(in)g(order)f(to)i -(do)f(editing)150 3050 y(of)g(the)f(input)g(line.)39 -b(F)-8 b(or)27 b(y)m(our)e(con)m(v)m(enience,)k(man)m(y)c(other)h -(commands)f(ha)m(v)m(e)i(b)s(een)e(added)g(in)g(addition)150 -3160 y(to)33 b Fl(C-b)p Ft(,)e Fl(C-f)p Ft(,)h Fl(C-d)p -Ft(,)g(and)1043 3157 y Fk(h)p 1067 3104 V 1067 3160 a -Fj(DEL)p 1067 3175 V 1209 3157 a Fk(i)1239 3160 y Ft(.)45 -b(Here)33 b(are)f(some)g(commands)g(for)g(mo)m(ving)h(more)f(rapidly)f -(ab)s(out)h(the)150 3269 y(line.)150 3424 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 -3579 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 3735 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 3890 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 4045 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 -4200 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 4310 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 -4419 y(w)m(ords.)150 4637 y Fh(1.2.3)63 b(Readline)40 -b(Killing)i(Commands)275 4879 y Fi(Killing)j Ft(text)39 -b(means)e(to)h(delete)g(the)g(text)g(from)f(the)g(line,)j(but)d(to)h -(sa)m(v)m(e)h(it)e(a)m(w)m(a)m(y)j(for)d(later)h(use,)150 -4988 y(usually)c(b)m(y)g Fi(y)m(anking)42 b Ft(\(re-inserting\))35 -b(it)g(bac)m(k)g(in)m(to)g(the)f(line.)52 b(\(`Cut')35 -b(and)e(`paste')i(are)g(more)f(recen)m(t)150 5098 y(jargon)d(for)f -(`kill')h(and)f(`y)m(ank'.\))275 5230 y(If)f(the)i(description)f(for)g -(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m(ou)g -(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 5340 y(can)g(get)g(the)g(text)g -(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h(place)h -(later.)p eop end -%%Page: 3 7 -TeXDict begin 3 6 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(When)23 -b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i -(in)e(a)g Fi(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h -(consecutiv)m(e)150 408 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g -(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f -(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 518 -y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g -(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f -(is)h(a)m(v)-5 b(ailable)150 628 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m -(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)275 -760 y(Here)f(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.) -150 916 y Fl(C-k)336 b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m -(t)g(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 -1072 y Fl(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g -(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 1182 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 1337 y Fl(M-)246 1334 y Fk(h)p -270 1281 146 4 v 270 1337 a Fj(DEL)p 270 1353 V 411 1334 -a Fk(i)630 1337 y Ft(Kill)h(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 1447 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 1557 y Fl(M-b)p Ft(.)150 1712 y Fl(C-w)336 -b Ft(Kill)32 b(from)e(the)i(cursor)e(to)i(the)g(previous)e(whitespace.) -44 b(This)31 b(is)g(di\013eren)m(t)h(than)f Fl(M-)3555 -1709 y Fk(h)p 3578 1656 V 3578 1712 a Fj(DEL)p 3578 1728 -V 3720 1709 a Fk(i)630 1822 y Ft(b)s(ecause)f(the)h(w)m(ord)f(b)s -(oundaries)f(di\013er.)275 1978 y(Here)42 b(is)f(ho)m(w)h(to)g -Fi(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 b(means)e(to)h(cop)m(y)h(the)e(most-)150 -2087 y(recen)m(tly-killed)33 b(text)e(from)f(the)g(kill)i(bu\013er.)150 -2243 y Fl(C-y)336 b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h -(killed)f(text)g(bac)m(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f -(cursor.)150 2399 y Fl(M-y)336 b 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 2509 y(command)30 b(is)h -Fl(C-y)e Ft(or)h Fl(M-y)p Ft(.)150 2727 y Fh(1.2.4)63 -b(Readline)40 b(Argumen)m(ts)275 2970 y Ft(Y)-8 b(ou)29 -b(can)h(pass)f(n)m(umeric)g(argumen)m(ts)g(to)h(Readline)g(commands.)40 -b(Sometimes)30 b(the)f(argumen)m(t)h(acts)150 3079 y(as)40 -b(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g -Fn(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m -(t.)71 b(If)40 b(y)m(ou)150 3189 y(pass)33 b(a)h(negativ)m(e)i(argumen) -m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m -(ard)f(direction,)i(that)150 3298 y(command)g(will)h(act)g(in)f(a)h -(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g -(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 3408 y(the)31 -b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p -Ft('.)275 3541 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g -(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i -(digits)e(b)s(efore)150 3650 y(the)j(command.)42 b(If)30 -b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h -(\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 -3760 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m -(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h -(started,)i(y)m(ou)150 3869 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f -(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 -b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fl(C-d)150 -3979 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f -(t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h -(delete)h(the)e(next)h(ten)150 4089 y(c)m(haracters)32 -b(on)e(the)h(input)e(line.)150 4307 y Fh(1.2.5)63 b(Searc)m(hing)40 -b(for)i(Commands)g(in)f(the)g(History)275 4550 y Ft(Readline)32 -b(pro)m(vides)h(commands)f(for)g(searc)m(hing)h(through)e(the)i -(command)f(history)g(for)g(lines)g(con-)150 4659 y(taining)f(a)g(sp)s -(eci\014ed)f(string.)40 b(There)30 b(are)h(t)m(w)m(o)h(searc)m(h)f(mo)s -(des:)40 b Fi(incremen)m(tal)35 b Ft(and)30 b Fi(non-incremen)m(tal)p -Ft(.)275 4792 y(Incremen)m(tal)c(searc)m(hes)h(b)s(egin)e(b)s(efore)g -(the)h(user)f(has)h(\014nished)e(t)m(yping)i(the)g(searc)m(h)g(string.) -39 b(As)26 b(eac)m(h)150 4902 y(c)m(haracter)37 b(of)e(the)h(searc)m(h) -g(string)f(is)h(t)m(yp)s(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h -(en)m(try)g(from)e(the)i(history)150 5011 y(matc)m(hing)25 -b(the)f(string)g(t)m(yp)s(ed)g(so)g(far.)39 b(An)23 b(incremen)m(tal)j -(searc)m(h)e(requires)g(only)g(as)g(man)m(y)g(c)m(haracters)i(as)150 -5121 y(needed)i(to)i(\014nd)d(the)i(desired)f(history)h(en)m(try)-8 -b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history) -g(for)f(a)i(particular)150 5230 y(string,)g(t)m(yp)s(e)f -Fl(C-r)p Ft(.)40 b(T)m(yping)29 b Fl(C-s)g Ft(searc)m(hes)h(forw)m(ard) -f(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m -(t)150 5340 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g -Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i -(terminate)g(an)f(incremen)m(tal)p eop end -%%Page: 4 8 -TeXDict begin 4 7 bop 150 -116 a Ft(4)2645 b(GNU)31 b(Readline)g -(Library)150 299 y(searc)m(h.)63 b(If)38 b(that)g(v)-5 -b(ariable)38 b(has)g(not)g(b)s(een)f(assigned)h(a)g(v)-5 -b(alue,)40 b(the)2578 296 y Fk(h)p 2602 243 139 4 v 2602 -299 a Fj(ESC)p 2602 314 V 2736 296 a Fk(i)2804 299 y -Ft(and)d Fl(C-J)f Ft(c)m(haracters)k(will)150 408 y(terminate)j(an)g -(incremen)m(tal)g(searc)m(h.)78 b Fl(C-g)41 b Ft(will)i(ab)s(ort)f(an)g -(incremen)m(tal)i(searc)m(h)f(and)f(restore)h(the)150 -518 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f -(terminated,)h(the)f(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m -(h)h(string)150 628 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 -769 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e -(the)h(history)g(list,)h(t)m(yp)s(e)g Fl(C-r)e Ft(or)h -Fl(C-s)f Ft(as)h(appropriate.)43 b(This)150 878 y(will)26 -b(searc)m(h)h(bac)m(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f -(for)g(the)g(next)g(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string) -150 988 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i -(sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h -(the)150 1098 y(searc)m(h)22 b(and)e(execute)j(that)e(command.)38 -b(F)-8 b(or)22 b(instance,)h(a)2127 1095 y Fk(h)p 2151 -1042 151 4 v 2151 1098 a Fj(RET)p 2151 1113 V 2298 1095 -a Fk(i)2349 1098 y Ft(will)e(terminate)h(the)f(searc)m(h)h(and)e -(accept)150 1207 y(the)30 b(line,)g(thereb)m(y)f(executing)i(the)e -(command)g(from)g(the)h(history)f(list.)41 b(A)29 b(mo)m(v)m(emen)m(t)j -(command)d(will)150 1317 y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h -(the)e(last)h(line)g(found)e(the)i(curren)m(t)f(line,)h(and)f(b)s(egin) -g(editing.)275 1458 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h -(incremen)m(tal)g(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j -Fl(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 1567 -y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f -(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g -(is)150 1677 y(used.)275 1818 y(Non-incremen)m(tal)48 -b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s -(efore)f(starting)h(to)h(searc)m(h)f(for)150 1928 y(matc)m(hing)d -(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f -(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 -2037 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 -2311 y Fr(1.3)68 b(Readline)47 b(Init)e(File)275 2562 -y Ft(Although)g(the)g(Readline)h(library)e(comes)i(with)f(a)h(set)f(of) -g(Emacs-lik)m(e)i(k)m(eybindings)e(installed)150 2672 -y(b)m(y)d(default,)i(it)f(is)e(p)s(ossible)g(to)i(use)e(a)h(di\013eren) -m(t)g(set)g(of)g(k)m(eybindings.)74 b(An)m(y)42 b(user)f(can)h -(customize)150 2781 y(programs)32 b(that)h(use)f(Readline)h(b)m(y)g -(putting)f(commands)g(in)g(an)g Fi(inputrc)37 b Ft(\014le,)d(con)m(v)m -(en)m(tionally)h(in)d(his)150 2891 y(home)h(directory)-8 -b(.)50 b(The)33 b(name)g(of)g(this)g(\014le)h(is)f(tak)m(en)h(from)f -(the)g(v)-5 b(alue)34 b(of)f(the)g(en)m(vironmen)m(t)h(v)-5 -b(ariable)150 3000 y Fs(INPUTRC)p Ft(.)39 b(If)30 b(that)h(v)-5 -b(ariable)31 b(is)f(unset,)g(the)h(default)g(is)f(`)p -Fs(~/.inputrc)p Ft('.)275 3142 y(When)f(a)h(program)f(whic)m(h)h(uses)f -(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h -(read,)g(and)f(the)150 3251 y(k)m(ey)i(bindings)e(are)i(set.)275 -3392 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g -(this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m -(hanges)150 3502 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g -(it.)150 3739 y Fh(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)275 -3990 y Ft(There)33 b(are)h(only)g(a)g(few)f(basic)h(constructs)g(allo)m -(w)m(ed)h(in)f(the)g(Readline)g(init)g(\014le.)51 b(Blank)34 -b(lines)g(are)150 4100 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 -4209 y(conditional)29 b(constructs)f(\(see)g(Section)h(1.3.2)g -([Conditional)g(Init)e(Constructs],)i(page)f(9\).)41 -b(Other)27 b(lines)150 4319 y(denote)k(v)-5 b(ariable)31 -b(settings)g(and)f(k)m(ey)h(bindings.)150 4488 y(V)-8 -b(ariable)32 b(Settings)630 4598 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e -(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h -(the)g(v)-5 b(alues)41 b(of)630 4707 y(v)-5 b(ariables)34 -b(in)f(Readline)i(using)e(the)g Fs(set)g Ft(command)g(within)g(the)h -(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4817 y(is)d(simple:)870 -4955 y Fs(set)47 b Fl(variable)56 b(value)630 5093 y -Ft(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f -(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 -5202 y(use)k Fs(vi)g Ft(line)h(editing)g(commands:)870 -5340 y Fs(set)47 b(editing-mode)d(vi)p 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(V)-8 -b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 b(where)f(appropriate,)h -(are)g(recognized)g(without)f(regard)630 408 y(to)c(case.)42 -b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 -536 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f -(set)i(to)g(on)f(or)g(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the) -g(v)-5 b(alue)26 b(is)630 646 y(n)m(ull)e(or)g(empt)m(y)-8 -b(,)27 b Fi(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24 -b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) --5 b(ariable)630 756 y(b)s(eing)30 b(set)h(to)g(o\013.)630 -883 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m -(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630 -1029 y Fs(bell-style)1110 1139 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 -1249 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 1358 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 1468 y(`)p Fs(audible)p -Ft(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g -(terminal's)1110 1577 y(b)s(ell.)630 1724 y Fs(bind-tty-special-chars) -1110 1833 y Ft(If)45 b(set)h(to)f(`)p Fs(on)p Ft(',)50 -b(Readline)45 b(attempts)i(to)f(bind)d(the)j(con)m(trol)g(c)m -(haracters)1110 1943 y(treated)36 b(sp)s(ecially)h(b)m(y)e(the)h(k)m -(ernel's)g(terminal)g(driv)m(er)f(to)h(their)f(Readline)1110 -2052 y(equiv)-5 b(alen)m(ts.)630 2198 y Fs(comment-begin)1110 -2308 y Ft(The)29 b(string)g(to)h(insert)f(at)h(the)f(b)s(eginning)g(of) -g(the)h(line)f(when)f(the)i Fs(insert-)1110 2418 y(comment)e -Ft(command)j(is)f(executed.)42 b(The)29 b(default)i(v)-5 -b(alue)31 b(is)f Fs("#")p Ft(.)630 2564 y Fs(completion-ignore-case) -1110 2673 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 -2783 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 -2929 y Fs(completion-query-items)1110 3039 y Ft(The)26 -b(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 3148 y(is)i(ask)m(ed)h(whether)f(the)h(list)g -(of)f(p)s(ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41 -b(If)29 b(the)1110 3258 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f -(completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28 -b(Readline)1110 3367 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h -(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 3477 -y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25 -b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 -b(alue)1110 3587 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 -b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 -3696 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g -Fs(100)p Ft(.)630 3842 y Fs(convert-meta)1110 3952 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 -4061 y(to)g(an)f Fm(asci)r(i)g Ft(k)m(ey)h(sequence)g(b)m(y)f -(stripping)f(the)i(eigh)m(th)g(bit)f(and)g(pre\014xing)f(an)1110 -4168 y Fk(h)p 1134 4115 139 4 v 1134 4171 a Fj(ESC)p -1134 4186 V 1268 4168 a Fk(i)1332 4171 y Ft(c)m(haracter,)36 -b(con)m(v)m(erting)g(them)e(to)g(a)h(meta-pre\014xed)f(k)m(ey)g -(sequence.)1110 4281 y(The)c(default)g(v)-5 b(alue)31 -b(is)g(`)p Fs(on)p Ft('.)630 4427 y Fs(disable-completion)1110 -4536 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 -4646 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 -4755 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)630 4902 y Fs(editing-mode)1110 5011 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 5121 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 5230 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 5340 y(b)s(e)g(set)h(to)g(either)g(`)p -Fs(emacs)p Ft(')e(or)h(`)p Fs(vi)p Ft('.)p eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Ft(6)2645 b(GNU)31 b(Readline)g -(Library)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 -819 y Fs(expand-tilde)1110 929 y Ft(If)c(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 1039 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1230 -y Fs(history-preserve-point)1110 1340 y Ft(If)e(set)i(to)f(`)p -Fs(on)p Ft(',)g(the)g(history)g(co)s(de)g(attempts)g(to)h(place)f(p)s -(oin)m(t)g(at)h(the)f(same)1110 1450 y(lo)s(cation)35 -b(on)e(eac)m(h)i(history)e(line)h(retriev)m(ed)g(with)f -Fs(previous-history)c Ft(or)1110 1559 y Fs(next-history)p -Ft(.)37 b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 -1751 y Fs(horizontal-scroll-mode)1110 1861 y Ft(This)35 -b(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 1970 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 2080 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 2189 -y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g -(line.)39 b(By)27 b(default,)g(this)1110 2299 y(v)-5 -b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630 -2491 y Fs(input-meta)1110 2600 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 2710 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 -2819 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68 -b(The)39 b(default)h(v)-5 b(alue)40 b(is)g(`)p Fs(off)p -Ft('.)69 b(The)1110 2929 y(name)30 b Fs(meta-flag)e Ft(is)j(a)f(synon)m -(ym)g(for)g(this)h(v)-5 b(ariable.)630 3121 y Fs(isearch-terminators) -1110 3230 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 3340 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 3450 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 -3559 y(b)s(een)31 b(giv)m(en)h(a)g(v)-5 b(alue,)32 b(the)g(c)m -(haracters)2494 3556 y Fk(h)p 2518 3503 139 4 v 2518 -3559 a Fj(ESC)p 2518 3575 V 2652 3556 a Fk(i)2713 3559 -y Ft(and)f Fl(C-J)g Ft(will)h(terminate)g(an)1110 3669 -y(incremen)m(tal)g(searc)m(h.)630 3861 y Fs(keymap)192 -b Ft(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h -(for)g(k)m(ey)g(binding)f(com-)1110 3970 y(mands.)81 -b(Acceptable)47 b Fs(keymap)42 b Ft(names)i(are)h Fs(emacs)p -Ft(,)i Fs(emacs-standard)p Ft(,)1110 4080 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 4189 y Fs(vi-insert)p -Ft(.)64 b Fs(vi)38 b Ft(is)h(equiv)-5 b(alen)m(t)41 b(to)e -Fs(vi-command)p Ft(;)i Fs(emacs)c Ft(is)i(equiv)-5 b(alen)m(t)1110 -4299 y(to)33 b Fs(emacs-standard)p Ft(.)41 b(The)31 b(default)h(v)-5 -b(alue)32 b(is)g Fs(emacs)p Ft(.)44 b(The)31 b(v)-5 b(alue)33 -b(of)f(the)1110 4408 y Fs(editing-mode)27 b Ft(v)-5 b(ariable)31 -b(also)h(a\013ects)f(the)g(default)f(k)m(eymap.)630 4600 -y Fs(mark-directories)1110 4710 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 4819 y(The)30 b(default)g(is)h(`)p -Fs(on)p Ft('.)630 5011 y Fs(mark-modified-lines)1110 -5121 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 -5230 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 -5340 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g -(default.)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 -(mark-symlinked-directori)o(es)1110 408 y Ft(If)44 b(set)h(to)h(`)p -Fs(on)p Ft(',)i(completed)e(names)f(whic)m(h)f(are)h(sym)m(b)s(olic)g -(links)g(to)g(di-)1110 518 y(rectories)j(ha)m(v)m(e)f(a)g(slash)f(app)s -(ended)e(\(sub)5 b(ject)47 b(to)g(the)f(v)-5 b(alue)47 -b(of)f Fs(mark-)1110 628 y(directories)p Ft(\).)38 b(The)30 -b(default)g(is)h(`)p Fs(off)p Ft('.)630 789 y Fs(match-hidden-files) -1110 898 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 1008 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 -1118 y(completion,)j(unless)41 b(the)g(leading)h(`)p -Fs(.)p Ft(')g(is)g(supplied)e(b)m(y)h(the)h(user)f(in)g(the)1110 -1227 y(\014lename)31 b(to)g(b)s(e)e(completed.)42 b(This)30 -b(v)-5 b(ariable)31 b(is)f(`)p Fs(on)p Ft(')h(b)m(y)f(default.)630 -1388 y Fs(output-meta)1110 1498 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 1608 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)1110 -1717 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1878 -y Fs(page-completions)1110 1988 y Ft(If)j(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 -2097 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 -2207 y(b)m(y)e(default.)630 2368 y Fs(print-completions-horizo)o(ntal)o -(ly)1110 2478 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g -(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -2587 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c -(than)g(do)m(wn)g(the)h(screen.)1110 2697 y(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)630 2858 y Fs(show-all-if-ambiguous)1110 -2968 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 3077 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)1110 3187 y(the)39 -b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i(instead)e(of)g -(ringing)g(the)g(b)s(ell.)1110 3296 y(The)30 b(default)g(v)-5 -b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630 3458 y Fs -(show-all-if-unmodified)1110 3567 y Ft(This)38 b(alters)h(the)g -(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h(functions)e(in)h(a) -1110 3677 y(fashion)25 b(similar)h(to)g Fi(sho)m(w-all-if-am)m(biguous) -p Ft(.)41 b(If)25 b(set)h(to)h(`)p Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h) -1110 3786 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e -(completion)i(without)f(an)m(y)g(p)s(ossible)f(par-)1110 -3896 y(tial)43 b(completion)h(\(the)f(p)s(ossible)f(completions)h -(don't)f(share)g(a)h(common)1110 4006 y(pre\014x\))30 -b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g(immediately)i -(instead)e(of)h(ring-)1110 4115 y(ing)g(the)f(b)s(ell.)41 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p -Ft('.)630 4276 y Fs(visible-stats)1110 4386 y Ft(If)h(set)i(to)f(`)p -Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 4495 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)150 4657 y(Key)f(Bindings)630 4766 y(The)41 -b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g -(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 -4876 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i -(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 -4985 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j -(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630 -5095 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 5230 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g -(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630 -5340 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h -(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)p -eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Ft(8)2645 b(GNU)31 -b(Readline)g(Library)630 299 y(the)h(name)g(of)g(the)g(command.)46 -b(The)31 b(name)h(of)g(the)g(k)m(ey)h(can)f(b)s(e)f(expressed)h(in)f -(di\013eren)m(t)630 408 y(w)m(a)m(ys,)g(dep)s(ending)e(on)i(what)f(y)m -(ou)h(\014nd)d(most)j(comfortable.)630 545 y(In)k(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 655 y(that)31 b(is)f(inserted)h(when)e(the) -i(k)m(ey)g(is)f(pressed)g(\(a)h Fi(macro)5 b Ft(\).)630 -819 y Fi(k)m(eyname)g Ft(:)42 b Fi(function-name)35 b -Ft(or)c Fi(macro)1110 929 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 1066 y Fs(Control-u:)45 b(universal-argument) -1350 1176 y(Meta-Rubout:)f(backward-kill-word)1350 1285 -y(Control-o:)h(">)i(output")1110 1422 y Ft(In)38 b(the)h(ab)s(o)m(v)m -(e)h(example,)h Fl(C-u)d Ft(is)h(b)s(ound)d(to)k(the)e(function)h -Fs(universal-)1110 1532 y(argument)p Ft(,)f Fl(M-DEL)e -Ft(is)i(b)s(ound)e(to)i(the)g(function)g Fs(backward-kill-word)p -Ft(,)1110 1641 y(and)g Fl(C-o)g Ft(is)h(b)s(ound)e(to)j(run)d(the)j -(macro)f(expressed)g(on)f(the)i(righ)m(t)f(hand)1110 -1751 y(side)30 b(\(that)i(is,)e(to)h(insert)g(the)f(text)i(`)p -Fs(>)e(output)p Ft(')f(in)m(to)i(the)g(line\).)1110 1888 -y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i(names)e -(are)g(recognized)h(while)f(pro-)1110 1998 y(cessing)24 -b(this)g(k)m(ey)g(binding)f(syn)m(tax:)37 b Fi(DEL)p -Ft(,)24 b Fi(ESC)p Ft(,)f Fi(ESCAPE)p Ft(,)g Fi(LFD)p -Ft(,)h Fi(NEW-)1110 2107 y(LINE)p Ft(,)30 b Fi(RET)p -Ft(,)g Fi(RETURN)p Ft(,)h Fi(R)m(UBOUT)p Ft(,)g Fi(SP)-8 -b(A)m(CE)p Ft(,)30 b Fi(SPC)p Ft(,)g(and)f Fi(T)-8 b(AB)p -Ft(.)630 2271 y Fs(")p Fi(k)m(eyseq)r Fs(")p Ft(:)41 -b Fi(function-name)36 b Ft(or)30 b Fi(macro)1110 2381 -y(k)m(eyseq)k Ft(di\013ers)d(from)f Fi(k)m(eyname)37 -b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 -2491 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m -(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 2600 -y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Ft(Emacs)f(st)m(yle)i(k)m -(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2710 -y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m -(haracter)g(names)f(are)g(not)1110 2819 y(recognized.)1350 -2956 y Fs("\\C-u":)46 b(universal-argument)1350 3066 -y("\\C-x\\C-r":)f(re-read-init-file)1350 3176 y("\\e[11~":)g("Function) -h(Key)g(1")1110 3313 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 -b Fl(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -3422 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fl(C-x)1110 3532 -y(C-r)p Ft(')41 b(is)g(b)s(ound)e(to)j(the)f(function)g -Fs(re-read-init-file)p Ft(,)e(and)i(`)3462 3529 y Fk(h)p -3486 3476 139 4 v 3486 3532 a Fj(ESC)p 3486 3547 V 3620 -3529 a Fk(i)31 b(h)p 3705 3476 20 4 v 3705 3532 a Fj([)p -3705 3548 V 3720 3529 a Fk(i)1110 3638 y(h)p 1134 3585 -36 4 v 1134 3641 a Fj(1)p 1134 3657 V 1165 3638 a Fk(i)f(h)p -1250 3585 V 1250 3641 a Fj(1)p 1250 3657 V 1281 3638 -a Fk(i)g(h)p 1365 3585 48 4 v 1365 3641 a Fs(~)p 1365 -3657 V 1409 3638 a Fk(i)1438 3641 y Ft(')h(is)f(b)s(ound)f(to)i(insert) -f(the)h(text)g(`)p Fs(Function)d(Key)i(1)p Ft('.)630 -3806 y(The)f(follo)m(wing)i Fm(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f -(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 -3915 y(k)m(ey)i(sequences:)630 4080 y Fl(\\C-)336 b Ft(con)m(trol)32 -b(pre\014x)630 4244 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 -4408 y Fl(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630 -4573 y Fl(\\\\)384 b Ft(bac)m(kslash)630 4737 y Fl(\\)p -Fs(")1110 4734 y Fk(h)p 1134 4681 V 1134 4737 a Fs(")p -1134 4753 V 1178 4734 a Fk(i)1208 4737 y Ft(,)30 b(a)h(double)f -(quotation)h(mark)630 4902 y Fl(\\')1110 4899 y Fk(h)p -1134 4846 20 4 v 1134 4902 a Fj(')p 1134 4917 V 1150 -4899 a Fk(i)1179 4902 y Ft(,)g(a)g(single)g(quote)g(or)f(ap)s(ostrophe) -630 5066 y(In)d(addition)h(to)g(the)g Fm(gnu)f Ft(Emacs)h(st)m(yle)h -(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630 -5176 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 5340 -y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))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)630 299 y Fs(\\b)384 -b Ft(bac)m(kspace)630 455 y Fs(\\d)g Ft(delete)630 612 -y Fs(\\f)g Ft(form)30 b(feed)630 768 y Fs(\\n)384 b Ft(newline)630 -925 y Fs(\\r)g Ft(carriage)32 b(return)630 1081 y Fs(\\t)384 -b Ft(horizon)m(tal)32 b(tab)630 1238 y Fs(\\v)384 b Ft(v)m(ertical)32 -b(tab)630 1394 y Fs(\\)p Fl(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m -(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 -b(alue)35 b Fi(nnn)e Ft(\(one)i(to)1110 1504 y(three)c(digits\))630 -1661 y Fs(\\x)p Fl(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g -(whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 -b(alue)40 b Fi(HH)1110 1770 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 1927 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 2036 y(indicate)23 b(a)e(macro)h(de\014nition.)38 -b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f -(name.)38 b(In)630 2146 y(the)22 b(macro)f(b)s(o)s(dy)-8 -b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m -(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2255 y(will)j(quote)h(an)m -(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 -b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8 -b(or)630 2365 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i -(mak)m(e)h(`)p Fl(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p -Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 2498 y Fs("\\C-x\\\\":)45 -b("\\\\")150 2718 y Fh(1.3.2)63 b(Conditional)41 b(Init)g(Constructs) -275 2961 y Ft(Readline)36 b(implemen)m(ts)f(a)h(facilit)m(y)i(similar)d -(in)g(spirit)g(to)h(the)g(conditional)h(compilation)g(features)150 -3070 y(of)e(the)f(C)g(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)f -(bindings)e(and)h(v)-5 b(ariable)35 b(settings)h(to)f(b)s(e)f(p)s -(erformed)f(as)150 3180 y(the)e(result)f(of)g(tests.)42 -b(There)30 b(are)h(four)e(parser)h(directiv)m(es)i(used.)150 -3336 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h -(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 3446 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g -(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 3555 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 -3712 y Fs(mode)288 b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g -Fs($if)f Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline) -1110 3821 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 -b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 -3931 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f -(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 4041 y(standard)23 -b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f -(starting)h(out)1110 4150 y(in)k Fs(emacs)f Ft(mo)s(de.)630 -4307 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e -(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 -4416 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f -(output)g(b)m(y)g(the)g(terminal's)1110 4526 y(function)24 -b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g -(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 4636 -y(b)s(oth)k(the)h(full)g(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s -(ortion)e(of)h(the)g(terminal)1110 4745 y(name)k(b)s(efore)f(the)g -(\014rst)g(`)p Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i -Fs(sun)e Ft(to)h(matc)m(h)g(b)s(oth)f Fs(sun)g Ft(and)1110 -4855 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 5011 y -Fs(application)1110 5121 y Ft(The)21 b Fi(application)j -Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 5230 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fi(application)1110 -5340 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)p -eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Ft(10)2600 b(GNU)31 -b(Readline)g(Library)1110 299 y(bind)h(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)1110 408 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 518 -y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 -653 y Fs($if)47 b(Bash)1350 762 y(#)g(Quote)g(the)g(current)f(or)h -(previous)e(word)1350 872 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 -981 y($endif)150 1141 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen) -h(in)f(the)g(previous)g(example,)h(terminates)g(an)g -Fs($if)e Ft(command.)150 1300 y Fs($else)240 b Ft(Commands)29 -b(in)h(this)h(branc)m(h)e(of)i(the)f Fs($if)g Ft(directiv)m(e)i(are)f -(executed)g(if)f(the)h(test)g(fails.)150 1460 y Fs($include)96 -b Ft(This)43 b(directiv)m(e)i(tak)m(es)g(a)e(single)i(\014lename)e(as)h -(an)f(argumen)m(t)h(and)f(reads)g(commands)630 1569 y(and)38 -b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 -b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e(from)630 -1679 y(`)p Fs(/etc/inputrc)p Ft(':)870 1813 y Fs($include)46 -b(/etc/inputrc)150 2037 y Fh(1.3.3)63 b(Sample)41 b(Init)g(File)275 -2281 y Ft(Here)31 b(is)f(an)g(example)i(of)e(an)g Fi(inputrc)35 -b Ft(\014le.)42 b(This)29 b(illustrates)j(k)m(ey)f(binding,)f(v)-5 -b(ariable)31 b(assignmen)m(t,)150 2391 y(and)f(conditional)h(syn)m -(tax.)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)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) -g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g -(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 -956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 -1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(systemwide)e(bindings) -h(and)h(variable)390 1285 y(#)g(assignments)e(from)i(/etc/Inputrc)390 -1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724 -y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)390 -1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 -2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) -h(function)f(name)g(is)h(ignored)p 3971 2401 42 76 v -390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 -2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390 -3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g -(previous-history)390 3258 y(#"\\M-OB":)g(next-history)390 -3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 -3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390 -3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g -(previous-history)390 4025 y("\\M-[B":)g(next-history)390 -4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode) -390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 -4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g -(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390 -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: 12 16 -TeXDict begin 12 15 bop 150 -116 a Ft(12)2600 b(GNU)31 -b(Readline)g(Library)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) -g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f -(are)h(convenient)e(for)i(shell)f(interaction)390 1504 -y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 -y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 -1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 -1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 -2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 -2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g -(backslash)e(\(testing)h(backslash)f(escapes)390 2381 -y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") -390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 -2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e -(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 -2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f -(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f -("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 -y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h -(available)390 3587 y(set)f(bell-style)e(visible)390 -3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) -390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e -(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g -(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j -(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g -(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h -(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 -5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f -(completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g -(he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f -(completion-query-items)42 b(150)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)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 1098 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands) -275 1340 y Ft(This)30 b(section)j(describ)s(es)d(Readline)i(commands)f -(that)h(ma)m(y)g(b)s(e)f(b)s(ound)e(to)j(k)m(ey)g(sequences.)44 -b(Com-)150 1449 y(mand)30 b(names)g(without)g(an)g(accompan)m(ying)i(k) -m(ey)g(sequence)e(are)h(un)m(b)s(ound)d(b)m(y)i(default.)275 -1582 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fi(p)s(oin)m(t)h -Ft(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f -Fi(mark)31 b Ft(refers)150 1691 y(to)40 b(a)f(cursor)f(p)s(osition)h -(sa)m(v)m(ed)h(b)m(y)f(the)g Fs(set-mark)d Ft(command.)66 -b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150 -1801 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fi(region)p -Ft(.)150 2018 y Fh(1.4.1)63 b(Commands)42 b(F)-10 b(or)41 -b(Mo)m(ving)150 2260 y Fs(beginning-of-line)26 b(\(C-a\))630 -2370 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g -(line.)150 2525 y Fs(end-of-line)d(\(C-e\))630 2635 y -Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2790 y Fs(forward-char)c(\(C-f\))630 2899 y Ft(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3054 y Fs(backward-char)c(\(C-b\)) -630 3164 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3319 y Fs(forward-word)d(\(M-f\))630 3429 y Ft(Mo)m(v)m(e)32 -b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 -b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 -3538 y(digits.)150 3693 y Fs(backward-word)27 b(\(M-b\))630 -3803 y Ft(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g -(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 -b(are)g(comp)s(osed)630 3913 y(of)d(letters)g(and)f(digits.)150 -4068 y Fs(clear-screen)d(\(C-l\))630 4177 y Ft(Clear)g(the)g(screen)f -(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f -(curren)m(t)g(line)g(at)g(the)g(top)630 4287 y(of)k(the)f(screen.)150 -4442 y Fs(redraw-current-line)25 b(\(\))630 4552 y Ft(Refresh)30 -b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s -(ound.)150 4769 y Fh(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 -b(Manipulating)h(The)f(History)150 5011 y Fs(accept-line)27 -b(\(Newline)h(or)i(Return\))630 5121 y Ft(Accept)36 b(the)g(line)f -(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34 -b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630 -5230 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e -(future)g(recall)j(with)d Fs(add_history\(\))p Ft(.)42 -b(If)31 b(this)630 5340 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h -(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g -(state.)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Ft(14)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fs(previous-history)26 -b(\(C-p\))630 408 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g -(history)h(list,)g(fetc)m(hing)g(the)g(previous)f(command.)150 -556 y Fs(next-history)d(\(C-n\))630 666 y Ft(Mo)m(v)m(e)32 -b(`forw)m(ard')f(through)e(the)i(history)f(list,)i(fetc)m(hing)f(the)g -(next)f(command.)150 814 y Fs(beginning-of-history)25 -b(\(M-<\))630 923 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h -(the)f(history)-8 b(.)150 1071 y Fs(end-of-history)26 -b(\(M->\))630 1181 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h -(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s -(eing)f(en)m(tered.)150 1329 y Fs(reverse-search-history)24 -b(\(C-r\))630 1438 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g -(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 1548 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 -b(is)i(an)f(incremen)m(tal)i(searc)m(h.)150 1696 y Fs -(forward-search-history)24 b(\(C-s\))630 1805 y Ft(Searc)m(h)30 -b(forw)m(ard)f(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m -(ving)h(`do)m(wn')f(through)g(the)h(the)630 1915 y(history)g(as)h -(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g(searc)m(h.) -150 2063 y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 2172 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g -(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 2282 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m -(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -2391 y(user.)150 2539 y Fs(non-incremental-forward-)o(sear)o(ch-h)o -(ist)o(ory)24 b(\(M-n\))630 2649 y Ft(Searc)m(h)30 b(forw)m(ard)f -(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn') -f(through)g(the)h(the)630 2758 y(history)d(as)f(necessary)i(using)e(a)h -(non-incremen)m(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i -(the)630 2868 y(user.)150 3016 y Fs(history-search-forward)d(\(\))630 -3125 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 -3235 y(start)36 b(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m -(t.)55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56 -b(By)630 3345 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150 -3492 y Fs(history-search-backward)24 b(\(\))630 3602 -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 -3712 y(start)g(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m(t.) -55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56 -b(By)630 3821 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150 -3969 y Fs(yank-nth-arg)c(\(M-C-y\))630 4079 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 4188 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 Fi(n)p Ft(,)g(insert)g(the)g Fi(n)p -Ft(th)f(w)m(ord)g(from)630 4298 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 -4407 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f -Fi(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -4517 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fi(n)e -Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -4627 y(the)e(`)p Fs(!)p Fl(n)11 b Ft(')29 b(history)i(expansion)f(had)g -(b)s(een)f(sp)s(eci\014ed.)150 4774 y Fs(yank-last-arg)e(\(M-.)i(or)h -(M-_\))630 4884 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 -4994 y(history)c(en)m(try\).)41 b(With)31 b(an)g(argumen)m(t,)g(b)s -(eha)m(v)m(e)g(exactly)i(lik)m(e)f Fs(yank-nth-arg)p -Ft(.)38 b(Succes-)630 5103 y(siv)m(e)d(calls)h(to)f Fs(yank-last-arg)c -Ft(mo)m(v)m(e)36 b(bac)m(k)g(through)d(the)i(history)g(list,)h -(inserting)f(the)630 5213 y(last)d(argumen)m(t)f(of)g(eac)m(h)h(line)f -(in)f(turn.)41 b(The)30 b(history)h(expansion)f(facilities)j(are)e -(used)f(to)630 5322 y(extract)i(the)e(last)i(argumen)m(t,)f(as)f(if)h -(the)f(`)p Fs(!$)p Ft(')g(history)h(expansion)f(had)g(b)s(een)f(sp)s -(eci\014ed.)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)150 299 y Fh(1.4.3)63 -b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150 -547 y Fs(delete-char)27 b(\(C-d\))630 656 y Ft(Delete)41 -b(the)e(c)m(haracter)i(at)e(p)s(oin)m(t.)66 b(If)39 b(p)s(oin)m(t)f(is) -h(at)h(the)f(b)s(eginning)f(of)h(the)g(line,)j(there)630 -766 y(are)37 b(no)g(c)m(haracters)i(in)d(the)i(line,)h(and)d(the)h -(last)h(c)m(haracter)h(t)m(yp)s(ed)e(w)m(as)g(not)g(b)s(ound)e(to)630 -875 y Fs(delete-char)p Ft(,)28 b(then)i(return)f Fm(eof)p -Ft(.)150 1042 y Fs(backward-delete-char)c(\(Rubout\))630 -1152 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 -1261 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -1428 y Fs(forward-backward-delete-)o(char)24 b(\(\))630 -1538 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 -1647 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 -1757 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -1924 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2033 -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 -2143 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150 -2310 y Fs(tab-insert)e(\(M-)802 2307 y Fk(h)p 825 2254 -148 4 v 825 2310 a Fj(T)-6 b(AB)p 825 2325 V 969 2307 -a Fk(i)998 2310 y Fs(\))630 2419 y Ft(Insert)30 b(a)h(tab)f(c)m -(haracter.)150 2586 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o -(\))630 2696 y Ft(Insert)g(y)m(ourself.)150 2862 y Fs(transpose-chars)c -(\(C-t\))630 2972 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 3081 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 3191 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 3301 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 3467 y Fs(transpose-words)c(\(M-t\))630 -3577 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 3687 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 3796 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)150 3963 y Fs(upcase-word)c(\(M-u\))630 -4073 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 -4182 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 4349 y Fs(downcase-word)d(\(M-l\))630 -4458 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 4568 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 4735 y Fs(capitalize-word)26 -b(\(M-c\))630 4844 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 4954 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(overwrite-mode)26 -b(\(\))630 5230 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 5340 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)p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Ft(16)2600 b(GNU)31 -b(Readline)g(Library)630 299 y(insert)f(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 408 -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 -539 y(In)e(o)m(v)m(erwrite)j(mo)s(de,)e(c)m(haracters)i(b)s(ound)c(to)j -Fs(self-insert)c Ft(replace)k(the)g(text)g(at)g(p)s(oin)m(t)630 -648 y(rather)41 b(than)h(pushing)e(the)i(text)g(to)g(the)g(righ)m(t.)75 -b(Characters)42 b(b)s(ound)d(to)j Fs(backward-)630 758 -y(delete-char)27 b Ft(replace)32 b(the)e(c)m(haracter)i(b)s(efore)e(p)s -(oin)m(t)h(with)f(a)g(space.)630 888 y(By)h(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 1099 y Fh(1.4.4)63 b(Killing)42 -b(And)e(Y)-10 b(anking)150 1339 y Fs(kill-line)28 b(\(C-k\))630 -1449 y Ft(Kill)j(the)f(text)i(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of) -i(the)f(line.)150 1599 y Fs(backward-kill-line)25 b(\(C-x)30 -b(Rubout\))630 1709 y Ft(Kill)h(bac)m(kw)m(ard)g(to)g(the)f(b)s -(eginning)g(of)g(the)h(line.)150 1860 y Fs(unix-line-discard)26 -b(\(C-u\))630 1969 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 -2120 y Fs(kill-whole-line)c(\(\))630 2230 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 -2339 y(this)30 b(is)h(un)m(b)s(ound.)150 2490 y Fs(kill-word)d(\(M-d\)) -630 2600 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 2709 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 2860 y Fs(backward-kill-word)25 b(\(M-)1183 -2857 y Fk(h)p 1207 2804 146 4 v 1207 2860 a Fj(DEL)p -1207 2875 V 1348 2857 a Fk(i)1378 2860 y Fs(\))630 2970 -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 3120 y Fs(unix-word-rubout)d(\(C-w\))630 -3230 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 3339 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f -(kill-ring.)150 3490 y Fs(unix-filename-rubout)25 b(\(\))630 -3600 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 -3709 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 3860 y Fs -(delete-horizontal-space)24 b(\(\))630 3970 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.)150 4121 -y Fs(kill-region)d(\(\))630 4230 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 4381 y Fs(copy-region-as-kill)25 b(\(\))630 -4490 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 4600 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 4751 y Fs(copy-backward-word)25 -b(\(\))630 4860 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 4970 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 -5121 y Fs(copy-forward-word)26 b(\(\))630 5230 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 -5340 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.)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(yank)29 -b(\(C-y\))630 408 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 -552 y Fs(yank-pop)d(\(M-y\))630 661 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 771 y(command)30 b(is)h -Fs(yank)e Ft(or)h Fs(yank-pop)p Ft(.)150 971 y Fh(1.4.5)63 -b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 1207 -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 1317 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 1427 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 1570 y Fs(universal-argument)25 b(\(\))630 -1680 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 1789 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 -1899 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 -2008 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 -2118 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 -2228 y(or)28 b(min)m(us)f(sign,)i(the)f(argumen)m(t)g(coun)m(t)h(for)e -(the)i(next)f(command)f(is)h(m)m(ultiplied)h(b)m(y)e(four.)630 -2337 y(The)37 b(argumen)m(t)h(coun)m(t)f(is)h(initially)h(one,)g(so)f -(executing)g(this)f(function)g(the)h(\014rst)e(time)630 -2447 y(mak)m(es)d(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)i(second)e -(time)i(mak)m(es)f(the)g(argumen)m(t)g(coun)m(t)h(six-)630 -2556 y(teen,)e(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h -(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 2757 y Fh(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 2993 y Fs(complete)28 b(\()610 2990 -y Fk(h)p 634 2937 148 4 v 634 2993 a Fj(T)-6 b(AB)p 634 -3008 V 778 2990 a Fk(i)808 2993 y Fs(\))630 3102 y Ft(A)m(ttempt)24 -b(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 3212 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 3355 y Fs(possible-completions)25 -b(\(M-?\))630 3465 y Ft(List)31 b(the)f(p)s(ossible)g(completions)i(of) -e(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)150 3608 y Fs -(insert-completions)25 b(\(M-*\))630 3718 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 3827 -y(b)m(y)g Fs(possible-completions)p Ft(.)150 3971 y Fs(menu-complete)d -(\(\))630 4080 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 4190 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 -4300 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 -4409 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 -4519 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 Fi(n)f Ft(mo)m(v)m(es)i -Fi(n)630 4628 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 4738 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 4845 y Fk(h)p 654 4792 V 654 4848 a Fj(T)-6 -b(AB)p 654 4863 V 798 4845 a Fk(i)828 4848 y Ft(,)30 -b(but)g(is)g(un)m(b)s(ound)e(b)m(y)i(default.)150 4991 -y Fs(delete-char-or-list)25 b(\(\))630 5101 y Ft(Deletes)k(the)e(c)m -(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)g(b)s(eginning)g -(or)f(end)h(of)g(the)g(line)630 5210 y(\(lik)m(e)k Fs(delete-char)p -Ft(\).)37 b(If)29 b(at)h(the)f(end)f(of)i(the)f(line,)h(b)s(eha)m(v)m -(es)g(iden)m(tically)h(to)e Fs(possible-)630 5320 y(completions)p -Ft(.)38 b(This)29 b(command)h(is)h(un)m(b)s(ound)d(b)m(y)i(default.)p -eop end -%%Page: 18 22 -TeXDict begin 18 21 bop 150 -116 a Ft(18)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fh(1.4.7)63 b(Keyb)s(oard)41 -b(Macros)150 545 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630 -655 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 -818 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 927 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 1037 -y(de\014nition.)150 1200 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630 -1310 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 -1419 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 1651 y Fh(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 -1898 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 2007 -y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fi(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 2117 y(assignmen)m(ts)31 b(found)e(there.)150 -2280 y Fs(abort)g(\(C-g\))630 2390 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 2499 y(setting)j(of)g Fs(bell-style)p -Ft(\).)150 2663 y Fs(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fl(x)p Fs(,)g(...)o(\))630 2772 y Ft(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fi(x)34 b Ft(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g -(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2882 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 3045 y Fs(prefix-meta)d(\()753 -3042 y Fk(h)p 777 2989 139 4 v 777 3045 a Fj(ESC)p 777 -3060 V 911 3042 a Fk(i)941 3045 y Fs(\))630 3155 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 3264 y(T)m(yping)30 b(`)968 3261 y Fk(h)p 993 -3208 V 993 3264 a Fj(ESC)p 993 3280 V 1127 3261 a Fk(i)1187 -3264 y Fs(f)p Ft(')g(is)g(equiv)-5 b(alen)m(t)32 b(to)f(t)m(yping)g -Fl(M-f)p Ft(.)150 3428 y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 -3537 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for) -g(eac)m(h)i(line.)150 3700 y Fs(revert-line)27 b(\(M-r\))630 -3810 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 3920 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f -(b)s(eginning.)150 4083 y Fs(tilde-expand)d(\(M-~\))630 -4192 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m -(ord.)150 4356 y Fs(set-mark)d(\(C-@\))630 4465 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 -4575 y(to)f(that)g(p)s(osition.)150 4738 y Fs(exchange-point-and-mark) -24 b(\(C-x)29 b(C-x\))630 4848 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 4957 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 -5121 y Fs(character-search)26 b(\(C-]\))630 5230 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 5340 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)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 -(character-search-backwar)o(d)24 b(\(M-C-]\))630 408 -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 -518 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 677 y Fs(insert-comment)d -(\(M-#\))630 787 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 897 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 1006 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 1116 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 1225 -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 1335 -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 1494 y Fs(dump-functions)d -(\(\))630 1604 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 -1714 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 -1823 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fi(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 1983 y Fs(dump-variables)26 b(\(\))630 -2092 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 2202 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 2311 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h -Fi(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 2471 y Fs(dump-macros)c(\(\))630 -2580 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 -2690 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 -2800 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 -Fi(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 2909 y(default.)150 3068 y Fs(emacs-editing-mode)e(\(C-e\)) -630 3178 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 -3337 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 3447 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 3704 y Fr(1.5)68 b(Readline)47 -b(vi)e(Mo)t(de)275 3949 y Ft(While)24 b(the)g(Readline)g(library)f(do)s -(es)h(not)g(ha)m(v)m(e)g(a)h(full)e(set)h(of)g Fs(vi)f -Ft(editing)h(functions,)h(it)f(do)s(es)g(con)m(tain)150 -4058 y(enough)34 b(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 4168 y(the)e Fm(posix)e Ft(1003.2)k(standard.) -275 4302 y(In)28 b(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 4412 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 4521 y Ft(mo)s(de\).)k(The)30 -b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275 -4656 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 4765 y(had)c(t)m(yp)s(ed)g(an)g(`)p -Fs(i)p Ft('.)39 b(Pressing)1215 4762 y Fk(h)p 1239 4709 -139 4 v 1239 4765 a Fj(ESC)p 1239 4781 V 1373 4762 a -Fk(i)1429 4765 y Ft(switc)m(hes)27 b(y)m(ou)g(in)m(to)g(`command')f(mo) -s(de,)h(where)f(y)m(ou)h(can)f(edit)h(the)150 4875 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 -4985 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: 20 24 -TeXDict begin 20 23 bop 150 -116 a Ft(20)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(21)150 -299 y Fp(2)80 b(Programming)54 b(with)f(GNU)h(Readline)275 -527 y Ft(This)33 b(c)m(hapter)h(describ)s(es)f(the)h(in)m(terface)i(b)s -(et)m(w)m(een)e(the)g Fm(gnu)g Ft(Readline)h(Library)e(and)g(other)h -(pro-)150 637 y(grams.)k(If)22 b(y)m(ou)h(are)g(a)g(programmer,)h(and)d -(y)m(ou)i(wish)f(to)h(include)f(the)h(features)g(found)e(in)h -Fm(gnu)g Ft(Readline)150 746 y(suc)m(h)g(as)h(completion,)j(line)d -(editing,)i(and)d(in)m(teractiv)m(e)j(history)e(manipulation)g(in)f(y)m -(our)g(o)m(wn)h(programs,)150 856 y(this)30 b(section)i(is)e(for)g(y)m -(ou.)150 1110 y Fr(2.1)68 b(Basic)45 b(Beha)l(vior)275 -1353 y Ft(Man)m(y)31 b(programs)f(pro)m(vide)h(a)g(command)f(line)h(in) -m(terface,)h(suc)m(h)f(as)f Fs(mail)p Ft(,)g Fs(ftp)p -Ft(,)g(and)g Fs(sh)p Ft(.)41 b(F)-8 b(or)31 b(suc)m(h)150 -1462 y(programs,)e(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g -(is)g(su\016cien)m(t.)40 b(This)28 b(section)i(describ)s(es)d(ho)m(w)i -(to)g(use)150 1572 y(Readline)35 b(in)f(the)h(simplest)f(w)m(a)m(y)h(p) -s(ossible,)h(p)s(erhaps)c(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s -(de)f(to)h Fs(gets\(\))e Ft(or)150 1682 y Fs(fgets\(\))p -Ft(.)275 1815 y(The)f(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)g -(prompt)g Fi(prompt)i Ft(and)e(then)g(reads)g(and)g(returns)f(a)i -(single)150 1924 y(line)g(of)g(text)h(from)e(the)h(user.)47 -b(If)32 b Fi(prompt)i Ft(is)e Fs(NULL)g Ft(or)h(the)f(empt)m(y)i -(string,)f(no)g(prompt)e(is)i(displa)m(y)m(ed.)150 2034 -y(The)k(line)g Fs(readline)e Ft(returns)h(is)h(allo)s(cated)i(with)e -Fs(malloc\(\))p Ft(;)h(the)f(caller)i(should)d Fs(free\(\))f -Ft(the)j(line)150 2144 y(when)29 b(it)i(has)f(\014nished)f(with)h(it.) -42 b(The)29 b(declaration)j(for)f Fs(readline)d Ft(in)i(ANSI)g(C)g(is) -390 2277 y Fs(char)47 b(*readline)e(\(const)h(char)h(*)p -Fl(prompt)11 b Fs(\);)150 2410 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y) -390 2544 y Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g -("\);)150 2677 y Ft(in)23 b(order)f(to)h(read)g(a)g(line)h(of)f(text)h -(from)e(the)h(user.)38 b(The)22 b(line)h(returned)f(has)g(the)h -(\014nal)g(newline)g(remo)m(v)m(ed,)150 2787 y(so)31 -b(only)f(the)h(text)g(remains.)275 2920 y(If)40 b Fs(readline)e -Ft(encoun)m(ters)j(an)f Fs(EOF)f Ft(while)i(reading)f(the)h(line,)j -(and)39 b(the)i(line)g(is)f(empt)m(y)h(at)g(that)150 -3029 y(p)s(oin)m(t,)30 b(then)f Fs(\(char)g(*\)NULL)e -Ft(is)j(returned.)39 b(Otherwise,)30 b(the)f(line)h(is)f(ended)g(just)g -(as)g(if)h(a)f(newline)h(had)150 3139 y(b)s(een)g(t)m(yp)s(ed.)275 -3272 y(If)25 b(y)m(ou)h(w)m(an)m(t)h(the)f(user)f(to)i(b)s(e)e(able)h -(to)h(get)g(at)g(the)f(line)g(later,)i(\(with)2651 3269 -y Fk(h)p 2675 3216 114 4 v 2675 3272 a Fj(C-p)p 2675 -3288 V 2784 3269 a Fk(i)2840 3272 y Ft(for)e(example\),)i(y)m(ou)e(m)m -(ust)150 3382 y(call)32 b Fs(add_history\(\))26 b Ft(to)32 -b(sa)m(v)m(e)f(the)g(line)g(a)m(w)m(a)m(y)h(in)e(a)h -Fi(history)38 b Ft(list)31 b(of)g(suc)m(h)f(lines.)390 -3515 y Fs(add_history)45 b(\(line\);)150 3649 y Ft(F)-8 -b(or)31 b(full)f(details)i(on)e(the)g(GNU)h(History)g(Library)-8 -b(,)31 b(see)g(the)f(asso)s(ciated)i(man)m(ual.)275 3782 -y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h(empt)m(y)e -(lines)h(on)f(the)h(history)f(list,)h(since)g(users)e(rarely)i(ha)m(v)m -(e)h(a)150 3892 y(burning)28 b(need)h(to)i(reuse)e(a)h(blank)g(line.)40 -b(Here)31 b(is)e(a)h(function)g(whic)m(h)f(usefully)g(replaces)i(the)f -(standard)150 4001 y Fs(gets\(\))f Ft(library)h(function,)g(and)g(has)g -(the)g(adv)-5 b(an)m(tage)33 b(of)d(no)g(static)i(bu\013er)e(to)h(o)m -(v)m(er\015o)m(w:)390 4134 y Fs(/*)47 b(A)h(static)e(variable)f(for)i -(holding)f(the)h(line.)f(*/)390 4244 y(static)g(char)h(*line_read)e(=)i -(\(char)g(*\)NULL;)390 4463 y(/*)g(Read)g(a)g(string,)f(and)h(return)f -(a)i(pointer)d(to)j(it.)533 4573 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 -4682 y(char)h(*)390 4792 y(rl_gets)f(\(\))390 4902 y({)485 -5011 y(/*)i(If)f(the)g(buffer)f(has)h(already)f(been)g(allocated,)629 -5121 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h(*/)485 -5230 y(if)h(\(line_read\))581 5340 y({)p eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Ft(22)2600 b(GNU)31 -b(Readline)g(Library)676 299 y Fs(free)47 b(\(line_read\);)676 -408 y(line_read)f(=)h(\(char)f(*\)NULL;)581 518 y(})485 -737 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)485 -847 y(line_read)f(=)h(readline)f(\(""\);)485 1066 y(/*)i(If)f(the)g -(line)f(has)h(any)g(text)g(in)g(it,)629 1176 y(save)f(it)h(on)h(the)f -(history.)e(*/)485 1285 y(if)j(\(line_read)d(&&)i(*line_read\))581 -1395 y(add_history)e(\(line_read\);)485 1614 y(return)i(\(line_read\);) -390 1724 y(})275 1854 y Ft(This)22 b(function)i(giv)m(es)h(the)f(user)f -(the)h(default)g(b)s(eha)m(viour)f(of)2338 1851 y Fk(h)p -2362 1798 148 4 v 2362 1854 a Fj(T)-6 b(AB)p 2362 1870 -V 2506 1851 a Fk(i)2560 1854 y Ft(completion:)38 b(completion)25 -b(on)f(\014le)150 1964 y(names.)41 b(If)31 b(y)m(ou)g(do)f(not)h(w)m -(an)m(t)g(Readline)h(to)f(complete)h(on)f(\014lenames,)g(y)m(ou)g(can)f -(c)m(hange)i(the)f(binding)150 2074 y(of)g(the)410 2071 -y Fk(h)p 434 2018 V 434 2074 a Fj(T)-6 b(AB)p 434 2089 -V 578 2071 a Fk(i)638 2074 y Ft(k)m(ey)31 b(with)f Fs(rl_bind_key\(\))p -Ft(.)390 2205 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p -Fs(,)h(rl_command_func_t)c(*)p Fl(function)11 b Fs(\);)275 -2335 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:) -47 b Fi(k)m(ey)c Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m -(an)m(t)g(to)g(bind,)g(and)150 2445 y Fi(function)h Ft(is)h(the)g -(address)f(of)h(the)g(function)g(to)g(call)h(when)e Fi(k)m(ey)44 -b Ft(is)36 b(pressed.)56 b(Binding)3257 2442 y Fk(h)p -3281 2389 V 3281 2445 a Fj(T)-6 b(AB)p 3281 2460 V 3425 -2442 a Fk(i)3490 2445 y Ft(to)37 b Fs(rl_)150 2555 y(insert\(\))c -Ft(mak)m(es)845 2552 y Fk(h)p 869 2499 V 869 2555 a Fj(T)-6 -b(AB)p 869 2570 V 1013 2552 a Fk(i)1077 2555 y Ft(insert)35 -b(itself.)56 b Fs(rl_bind_key\(\))32 b Ft(returns)h(non-zero)j(if)f -Fi(k)m(ey)44 b Ft(is)35 b(not)g(a)h(v)-5 b(alid)150 2664 -y(ASCI)s(I)29 b(c)m(haracter)j(co)s(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e -(255\).)275 2795 y(Th)m(us,)g(to)i(disable)g(the)f(default)1407 -2792 y Fk(h)p 1431 2739 V 1431 2795 a Fj(T)-6 b(AB)p -1431 2810 V 1575 2792 a Fk(i)1635 2795 y Ft(b)s(eha)m(vior,)31 -b(the)f(follo)m(wing)i(su\016ces:)390 2926 y Fs(rl_bind_key)45 -b(\('\\t',)h(rl_insert\);)275 3057 y Ft(This)25 b(co)s(de)i(should)e(b) -s(e)h(executed)h(once)g(at)g(the)g(start)g(of)f(y)m(our)h(program;)g(y) -m(ou)g(migh)m(t)g(write)g(a)g(func-)150 3166 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 -3276 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(41\).)150 -3523 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)275 3763 -y Ft(Readline)25 b(pro)m(vides)f(man)m(y)h(functions)f(for)g -(manipulating)g(the)h(text)g(of)g(the)g(line,)h(but)e(it)h(isn't)f(p)s -(ossi-)150 3873 y(ble)i(to)h(an)m(ticipate)i(the)e(needs)f(of)g(all)h -(programs.)39 b(This)26 b(section)h(describ)s(es)f(the)g(v)-5 -b(arious)27 b(functions)f(and)150 3982 y(v)-5 b(ariables)27 -b(de\014ned)e(within)g(the)h(Readline)h(library)f(whic)m(h)g(allo)m(w)h -(a)g(user)e(program)h(to)h(add)e(customized)150 4092 -y(functionalit)m(y)32 b(to)f(Readline.)275 4223 y(Before)37 -b(declaring)g(an)m(y)g(functions)f(that)h(customize)h(Readline's)f(b)s -(eha)m(vior,)h(or)f(using)f(an)m(y)h(func-)150 4332 y(tionalit)m(y)48 -b(Readline)e(pro)m(vides)f(in)g(other)h(co)s(de,)k(an)45 -b(application)i(writer)e(should)g(include)g(the)h(\014le)150 -4442 y Fs(<readline/readline.h>)28 b Ft(in)33 b(an)m(y)h(\014le)f(that) -h(uses)f(Readline's)h(features.)51 b(Since)33 b(some)h(of)g(the)f -(de\014-)150 4552 y(nitions)e(in)g Fs(readline.h)d Ft(use)j(the)h -Fs(stdio)d Ft(library)-8 b(,)32 b(the)f(\014le)h Fs(<stdio.h>)c -Ft(should)i(b)s(e)h(included)f(b)s(efore)150 4661 y Fs(readline.h)p -Ft(.)275 4792 y Fs(readline.h)d Ft(de\014nes)j(a)h(C)f(prepro)s(cessor) -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 4902 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)150 5011 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 5121 y(minor)f(v)m(ersion)g(n)m(um)m(b)s(ers)f(of)h -(the)h(library)-8 b(,)35 b(of)f(the)h(form)e(0x)p Fi(MMmm)p -Ft(.)53 b Fi(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5 -b(jor)150 5230 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fi(mm)f -Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.) -38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150 -5340 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25 -b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(23)150 -299 y Fh(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)275 -540 y Ft(F)-8 b(or)31 b(readabilt)m(y)-8 b(,)32 b(w)m(e)f(declare)g(a)g -(n)m(um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)32 b(t)m(yp)s(es,)e(all)h(p)s -(oin)m(ters)g(to)g(functions.)275 672 y(The)k(reason)h(for)f(declaring) -h(these)h(new)e(t)m(yp)s(es)g(is)h(to)h(mak)m(e)f(it)g(easier)h(to)f -(write)g(co)s(de)g(describing)150 782 y(p)s(oin)m(ters)30 -b(to)h(C)f(functions)g(with)g(appropriately)h(protot)m(yp)s(ed)f -(argumen)m(ts)h(and)f(return)f(v)-5 b(alues.)275 913 -y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m(t)h(to)g(declare)f -(a)h(v)-5 b(ariable)37 b Fi(func)42 b Ft(as)37 b(a)g(p)s(oin)m(ter)g -(to)g(a)h(function)e(whic)m(h)150 1023 y(tak)m(es)27 -b(t)m(w)m(o)g Fs(int)e Ft(argumen)m(ts)h(and)f(returns)f(an)i -Fs(int)f Ft(\(this)h(is)f(the)h(t)m(yp)s(e)g(of)g(all)h(of)e(the)h -(Readline)h(bindable)150 1132 y(functions\).)41 b(Instead)30 -b(of)g(the)h(classic)h(C)e(declaration)275 1264 y Fs(int)f -(\(*func\)\(\);)150 1396 y Ft(or)h(the)h(ANSI-C)f(st)m(yle)i -(declaration)275 1528 y Fs(int)d(\(*func\)\(int,)e(int\);)150 -1659 y Ft(w)m(e)k(ma)m(y)g(write)275 1791 y Fs(rl_command_func_t)25 -b(*func;)275 1923 y Ft(The)k(full)h(list)i(of)e(function)g(p)s(oin)m -(ter)g(t)m(yp)s(es)h(a)m(v)-5 b(ailable)33 b(is)150 2077 -y Fs(typedef)28 b(int)i(rl_command_func_t)c(\(int,)i(int\);)150 -2186 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29 -b(char)g(*,)h(int\);)150 2296 y(typedef)e(char)i -(**rl_completion_func_t)24 b(\(const)29 b(char)g(*,)h(int,)f(int\);)150 -2405 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h -(*\);)150 2515 y(typedef)e(char)i(*rl_dequote_func_t)25 -b(\(char)k(*,)h(int\);)150 2625 y(typedef)e(int)i(rl_compignore_func_t) -25 b(\(char)k(**\);)150 2734 y(typedef)f(void)i(rl_compdisp_func_t)25 -b(\(char)k(**,)g(int,)h(int\);)150 2844 y(typedef)e(int)i -(rl_hook_func_t)c(\(void\);)150 2953 y(typedef)i(int)i(rl_getc_func_t)c -(\(FILE)j(*\);)150 3063 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i -(*,)i(int\);)150 3173 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150 -3282 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150 -3392 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150 -3501 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150 -3611 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150 -3720 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150 -3830 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150 -3940 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150 -4133 y Fh(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10 -b(unction)275 4375 y Ft(In)31 b(order)h(to)g(write)h(new)e(functions)h -(for)g(Readline,)i(y)m(ou)e(need)g(to)h(kno)m(w)f(the)g(calling)i(con)m -(v)m(en)m(tions)150 4484 y(for)j(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)h -(functions,)g(and)e(the)h(names)g(of)g(the)g(v)-5 b(ariables)38 -b(that)f(describ)s(e)f(the)h(curren)m(t)150 4594 y(state)32 -b(of)e(the)h(line)g(read)f(so)g(far.)275 4726 y(The)f(calling)j -(sequence)f(for)f(a)h(command)f Fs(foo)g Ft(lo)s(oks)g(lik)m(e)390 -4857 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))150 -4989 y Ft(where)35 b Fi(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 Fi(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 -5099 y(this)30 b(function.)275 5230 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 5340 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)p eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Ft(24)2600 b(GNU)31 -b(Readline)g(Library)150 299 y(b)s(eha)m(vior)43 b(\(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 408 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 518 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 -628 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 759 y(A)27 b(command)h(function)f(should)g(return)g(0)h(if)g -(its)g(action)h(completes)g(successfully)-8 b(,)29 b(and)e(a)h -(non-zero)150 869 y(v)-5 b(alue)40 b(if)f(some)g(error)g(o)s(ccurs.)67 -b(This)38 b(is)h(the)g(con)m(v)m(en)m(tion)j(ob)s(ey)m(ed)d(b)m(y)g -(all)h(of)f(the)h(builtin)e(Readline)150 978 y(bindable)30 -b(command)g(functions.)150 1226 y Fr(2.3)68 b(Readline)47 -b(V)-11 b(ariables)275 1467 y Ft(These)30 b(v)-5 b(ariables)31 -b(are)f(a)m(v)-5 b(ailable)33 b(to)e(function)f(writers.)3371 -1641 y([V)-8 b(ariable])-3598 b Fg(char)39 b(*)g Ff(rl)p -575 1641 35 5 v 50 w(line)p 806 1641 V 50 w(bu\013er)390 -1751 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 1861 y(but)k(see)h(Section)g(2.4.5)h([Allo)m -(wing)h(Undoing],)f(page)f(32.)57 b(The)35 b(function)g -Fs(rl_extend_line_)390 1970 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 2145 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 2145 V 51 w(p)s(oin)m(t)390 -2254 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 Fn(p)-5 -b(oint)9 b Ft(\).)3371 2429 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 2429 V 51 w(end)390 2539 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 2648 y(of)j(the)f(line,)h -Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371 -2823 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -2823 V 51 w(mark)390 2932 y Ft(The)d Fi(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 -3042 y Fn(r)-5 b(e)g(gion)p Ft(.)3371 3217 y([V)d(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 3217 V 51 w(done)390 3326 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 3501 y([V)g(ariable])-3598 b -Fg(int)39 b Ff(rl)p 432 3501 V 51 w(n)m(um)p 703 3501 -V 50 w(c)m(hars)p 1013 3501 V 49 w(to)p 1164 3501 V 51 -w(read)390 3611 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 3720 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 3830 y(to)31 b Fs(accept-line)p Ft(.)3371 -4004 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -4004 V 51 w(p)s(ending)p 884 4004 V 48 w(input)390 4114 -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 4224 y(c)m(haracter)32 -b(in)m(to)f(the)g(input)e(stream.)3371 4398 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 4398 V 51 w(dispatc)m(hing)390 -4508 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 4617 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 4727 y(b)m(y)30 -b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)3371 4902 -y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 4902 -V 51 w(erase)p 737 4902 V 49 w(empt)m(y)p 1100 4902 V -50 w(line)390 5011 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 5121 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 5230 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 5340 y(line.)p eop end -%%Page: 25 29 -TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(Programming)30 b(with)g(GNU)h(Readline)1683 b(25)3371 -299 y([V)-8 b(ariable])-3598 b Fg(char)39 b(*)g Ff(rl)p -575 299 35 5 v 50 w(prompt)390 408 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 518 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 628 -y(pla)m(y],)i(page)h(32\))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 825 y([V)-8 b(ariable])-3598 b Fg(int)39 b -Ff(rl)p 432 825 V 51 w(already)p 851 825 V 49 w(prompted)390 -934 y Ft(If)d(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 -1044 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 1154 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 1263 -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 1373 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 1570 y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g -Ff(rl)p 875 1570 V 50 w(library)p 1263 1570 V 50 w(v)m(ersion)390 -1680 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 1877 y([V)g(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 1877 V 51 w(readline)p 884 -1877 V 48 w(v)m(ersion)390 1987 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 -2096 y(0x)p Fi(MMmm)p Ft(,)39 b(where)d Fi(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 Fi(mm)g Ft(is)h(the)f(t)m(w)m(o-)390 2206 -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 -2315 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)-5 b(alue)31 -b(0x0402.)3371 2513 y([V)-8 b(ariable])-3598 b Fg(int)39 -b Ff(rl)p 432 2513 V 51 w(gn)m(u)p 665 2513 V 49 w(readline)p -1115 2513 V 49 w(p)390 2622 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 2819 y([V)-8 b(ariable])-3598 -b Fg(const)40 b(char)f(*)g Ff(rl)p 875 2819 V 50 w(terminal)p -1349 2819 V 49 w(name)390 2929 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 3039 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 -3236 y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g -Ff(rl)p 875 3236 V 50 w(readline)p 1326 3236 V 48 w(name)390 -3345 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 3455 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 3565 y(structs],)j(page)g(9\).)3371 -3762 y([V)-8 b(ariable])-3598 b Fg(FILE)39 b(*)g Ff(rl)p -575 3762 V 50 w(instream)390 3871 y Ft(The)h(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 3981 y Fi(stdin)p -Ft(.)3371 4178 y([V)-8 b(ariable])-3598 b Fg(FILE)39 -b(*)g Ff(rl)p 575 4178 V 50 w(outstream)390 4288 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 -4398 y Fi(stdout)p Ft(.)3371 4595 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 4595 V 51 w(prefer)p 782 4595 -V 49 w(en)m(v)p 1005 4595 V 50 w(winsize)390 4704 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 4814 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 4924 y(screen)30 b(dimensions.)3371 5121 y([V)-8 -b(ariable])-3598 b Fg(rl_command_func_t)43 b(*)c Ff(rl)p -1255 5121 V 50 w(last)p 1483 5121 V 50 w(func)390 5230 -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 -5340 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.)p eop -end -%%Page: 26 30 -TeXDict begin 26 29 bop 150 -116 a Ft(26)2600 b(GNU)31 -b(Readline)g(Library)3371 299 y([V)-8 b(ariable])-3598 -b Fg(rl_hook_func_t)42 b(*)d Ff(rl)p 1098 299 35 5 v -50 w(startup)p 1514 299 V 49 w(ho)s(ok)390 408 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 -518 y(\014rst)c(prompt.)3371 704 y([V)-8 b(ariable])-3598 -b Fg(rl_hook_func_t)42 b(*)d Ff(rl)p 1098 704 V 50 w(pre)p -1312 704 V 50 w(input)p 1631 704 V 49 w(ho)s(ok)390 814 -y Ft(If)c(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 -924 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 1110 -y([V)-8 b(ariable])-3598 b Fg(rl_hook_func_t)42 b(*)d -Ff(rl)p 1098 1110 V 50 w(ev)m(en)m(t)p 1417 1110 V 49 -w(ho)s(ok)390 1219 y Ft(If)h(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 1329 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 1439 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f -(input.)3371 1625 y([V)-8 b(ariable])-3598 b Fg(rl_getc_func_t)42 -b(*)d Ff(rl)p 1098 1625 V 50 w(getc)p 1354 1625 V 50 -w(function)390 1734 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 1844 y(the)39 b(input)e(stream.)65 -b(By)39 b(default,)i(it)e(is)f(set)h(to)g Fs(rl_getc)p -Ft(,)g(the)g(default)f(Readline)h(c)m(haracter)390 1954 -y(input)29 b(function)h(\(see)i(Section)f(2.4.8)h([Character)f(Input],) -f(page)h(34\).)3371 2140 y([V)-8 b(ariable])-3598 b Fg(rl_voidfunc_t)42 -b(*)d Ff(rl)p 1046 2140 V 50 w(redispla)m(y)p 1546 2140 -V 49 w(function)390 2250 y Ft(If)d(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 2359 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 2469 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(32\).)3371 2655 y([V)-8 b(ariable])-3598 b Fg(rl_vintfunc_t)42 -b(*)d Ff(rl)p 1046 2655 V 50 w(prep)p 1324 2655 V 49 -w(term)p 1613 2655 V 51 w(function)390 2765 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 2874 -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 -2984 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 -3093 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(35\).)3371 -3280 y([V)-8 b(ariable])-3598 b Fg(rl_voidfunc_t)42 b(*)d -Ff(rl)p 1046 3280 V 50 w(deprep)p 1441 3280 V 49 w(term)p -1730 3280 V 50 w(function)390 3389 y Ft(If)d(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 3499 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 3608 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(35\).)3371 3795 -y([V)-8 b(ariable])-3598 b Fg(Keymap)40 b Ff(rl)p 589 -3795 V 50 w(executing)p 1118 3795 V 49 w(k)m(eymap)390 -3904 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(28\))i(in)d -(whic)m(h)390 4014 y(the)c(curren)m(tly)f(executing)i(readline)e -(function)g(w)m(as)h(found.)3371 4200 y([V)-8 b(ariable])-3598 -b Fg(Keymap)40 b Ff(rl)p 589 4200 V 50 w(binding)p 1016 -4200 V 49 w(k)m(eymap)390 4310 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(28\))i(in)d(whic)m(h)390 4419 y(the)c(last)g(k)m -(ey)g(binding)e(o)s(ccurred.)3371 4606 y([V)-8 b(ariable])-3598 -b Fg(char)39 b(*)g Ff(rl)p 575 4606 V 50 w(executing)p -1104 4606 V 49 w(macro)390 4715 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 4902 y([V)-8 b(ariable])-3598 b Fg(int)39 -b Ff(rl)p 432 4902 V 51 w(readline)p 884 4902 V 48 w(state)390 -5011 y Ft(A)c(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 5121 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 5230 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 5340 y(include:)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)390 -299 y Fs(RL_STATE_NONE)870 408 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(in)m(tialize.)390 -555 y Fs(RL_STATE_INITIALIZING)870 664 y Ft(Readline)g(is)f -(initializing)j(its)e(in)m(ternal)g(data)g(structures.)390 -810 y Fs(RL_STATE_INITIALIZED)870 920 y Ft(Readline)g(has)f(completed)h -(its)g(initialization.)390 1066 y Fs(RL_STATE_TERMPREPPED)870 -1176 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 1285 -y(pla)m(y)-8 b(.)390 1431 y Fs(RL_STATE_READCMD)870 1541 -y Ft(Readline)31 b(is)f(reading)h(a)g(command)f(from)g(the)g(k)m(eyb)s -(oard.)390 1687 y Fs(RL_STATE_METANEXT)870 1797 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 1943 y Fs(RL_STATE_DISPATCHING)870 2052 -y Ft(Readline)h(is)f(dispatc)m(hing)h(to)g(a)g(command.)390 -2198 y Fs(RL_STATE_MOREINPUT)870 2308 y Ft(Readline)g(is)f(reading)h -(more)f(input)g(while)g(executing)i(an)e(editing)h(command.)390 -2454 y Fs(RL_STATE_ISEARCH)870 2564 y Ft(Readline)g(is)f(p)s(erforming) -g(an)g(incremen)m(tal)i(history)e(searc)m(h.)390 2710 -y Fs(RL_STATE_NSEARCH)870 2819 y Ft(Readline)h(is)f(p)s(erforming)g(a)g -(non-incremen)m(tal)i(history)e(searc)m(h.)390 2966 y -Fs(RL_STATE_SEARCH)870 3075 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 3221 y Fs(RL_STATE_NUMERICARG)870 3331 y -Ft(Readline)31 b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 -3477 y Fs(RL_STATE_MACROINPUT)870 3587 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 3696 y(macro.)390 -3842 y Fs(RL_STATE_MACRODEF)870 3952 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 4098 y Fs(RL_STATE_OVERWRITE)870 -4208 y Ft(Readline)g(is)f(in)g(o)m(v)m(erwrite)i(mo)s(de.)390 -4354 y Fs(RL_STATE_COMPLETING)870 4463 y Ft(Readline)f(is)f(p)s -(erforming)g(w)m(ord)g(completion.)390 4609 y Fs(RL_STATE_SIGHANDLER) -870 4719 y Ft(Readline)h(is)f(curren)m(tly)h(executing)g(the)g -(readline)g(signal)g(handler.)390 4865 y Fs(RL_STATE_UNDOING)870 -4975 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(undo.)390 -5121 y Fs(RL_STATE_DONE)870 5230 y Ft(Readline)e(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 5340 y(return)i(the)i(line)g(to)g(the)f(caller.)p -eop end -%%Page: 28 32 -TeXDict begin 28 31 bop 150 -116 a Ft(28)2600 b(GNU)31 -b(Readline)g(Library)3371 299 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 299 35 5 v 51 w(explicit)p -852 299 V 49 w(arg)390 408 y Ft(Set)g(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 518 y(Only)30 -b(v)-5 b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371 -708 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -708 V 51 w(n)m(umeric)p 886 708 V 49 w(arg)390 817 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 927 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 1117 y([V)-8 b(ariable])-3598 b Fg(int)39 -b Ff(rl)p 432 1117 V 51 w(editing)p 830 1117 V 48 w(mo)s(de)390 -1226 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 Fi(1)32 b Ft(means)25 b(Readline)390 1336 y(is)30 -b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f Fi(0)38 b Ft(means)31 -b(that)f(vi)h(mo)s(de)f(is)g(activ)m(e.)150 1600 y Fr(2.4)68 -b(Readline)47 b(Con)l(v)l(enience)f(F)-11 b(unctions)150 -1939 y Fh(2.4.1)63 b(Naming)41 b(a)g(F)-10 b(unction)275 -2186 y Ft(The)39 b(user)g(can)h(dynamically)g(c)m(hange)h(the)f -(bindings)e(of)i(k)m(eys)h(while)e(using)h(Readline.)69 -b(This)39 b(is)150 2296 y(done)e(b)m(y)f(represen)m(ting)h(the)g -(function)g(with)f(a)i(descriptiv)m(e)f(name.)61 b(The)36 -b(user)g(is)h(able)g(to)h(t)m(yp)s(e)f(the)150 2405 y(descriptiv)m(e)31 -b(name)g(when)e(referring)h(to)h(the)g(function.)40 b(Th)m(us,)30 -b(in)g(an)g(init)h(\014le,)f(one)h(migh)m(t)g(\014nd)390 -2543 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 2680 -y Ft(This)39 b(binds)f(the)i(k)m(eystrok)m(e)1322 2677 -y Fk(h)p 1346 2624 417 4 v 1346 2680 a Fj(Meta-Rub)r(out)p -1346 2695 V 1759 2677 a Fk(i)1828 2680 y Ft(to)h(the)f(function)g -Fn(descriptively)49 b Ft(named)39 b Fs(backward-)150 -2789 y(kill-word)p Ft(.)59 b(Y)-8 b(ou,)39 b(as)f(the)f(programmer,)i -(should)d(bind)g(the)h(functions)g(y)m(ou)h(write)f(to)h(descriptiv)m -(e)150 2899 y(names)30 b(as)h(w)m(ell.)42 b(Readline)31 -b(pro)m(vides)f(a)h(function)f(for)g(doing)g(that:)3350 -3089 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -3089 35 5 v 51 w(add)p 667 3089 V 49 w(defun)44 b Fe(\()p -Fs(const)29 b(char)g(*name,)g(rl_command_func_t)d(*function,)565 -3198 y(int)k(key)p Fe(\))390 3308 y Ft(Add)k Fi(name)41 -b Ft(to)36 b(the)f(list)h(of)g(named)e(functions.)55 -b(Mak)m(e)37 b Fi(function)e Ft(b)s(e)g(the)g(function)g(that)h(gets) -390 3418 y(called.)42 b(If)30 b Fi(k)m(ey)39 b Ft(is)30 -b(not)h(-1,)g(then)f(bind)f(it)i(to)g Fi(function)f Ft(using)g -Fs(rl_bind_key\(\))p Ft(.)275 3607 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 3717 -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 3826 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 3936 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150 -4166 y Fh(2.4.2)63 b(Selecting)41 b(a)f(Keymap)275 4412 -y Ft(Key)30 b(bindings)g(tak)m(e)j(place)e(on)g(a)g Fi(k)m(eymap)p -Ft(.)43 b(The)31 b(k)m(eymap)g(is)g(the)g(asso)s(ciation)i(b)s(et)m(w)m -(een)e(the)g(k)m(eys)150 4522 y(that)e(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 -4632 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 4821 y([F)-8 b(unction])-3599 -b Fg(Keymap)40 b Ff(rl)p 589 4821 V 50 w(mak)m(e)p 900 -4821 V 51 w(bare)p 1171 4821 V 49 w(k)m(eymap)46 b Fe(\()p -Fs(void)p Fe(\))390 4931 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 5041 y(the)31 -b(caller)g(should)f(free)g(it)h(b)m(y)f(calling)i Fs -(rl_discard_keymap\(\))25 b Ft(when)30 b(done.)3350 5230 -y([F)-8 b(unction])-3599 b Fg(Keymap)40 b Ff(rl)p 589 -5230 V 50 w(cop)m(y)p 868 5230 V 51 w(k)m(eymap)46 b -Fe(\()p Fs(Keymap)29 b(map)p Fe(\))390 5340 y Ft(Return)h(a)g(new)g(k)m -(eymap)h(whic)m(h)f(is)h(a)f(cop)m(y)h(of)g Fi(map)p -Ft(.)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)3350 -299 y([F)-8 b(unction])-3599 b Fg(Keymap)40 b Ff(rl)p -589 299 35 5 v 50 w(mak)m(e)p 900 299 V 51 w(k)m(eymap)45 -b Fe(\()p Fs(void)p Fe(\))390 408 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 408 28 4 v 40 w(insert,)g(the)g(lo)m(w)m(ercase)390 -518 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 628 y(n)m(umeric)30 b(argumen)m(ts.)3350 803 -y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p 484 803 -35 5 v 51 w(discard)p 894 803 V 49 w(k)m(eymap)46 b Fe(\()p -Fs(Keymap)29 b(keymap)p Fe(\))390 913 y Ft(F)-8 b(ree)31 -b(the)g(storage)h(asso)s(ciated)g(with)e Fi(k)m(eymap)p -Ft(.)275 1089 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 1198 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 -1374 y([F)-8 b(unction])-3599 b Fg(Keymap)40 b Ff(rl)p -589 1374 V 50 w(get)p 794 1374 V 50 w(k)m(eymap)46 b -Fe(\()p Fs(void)p Fe(\))390 1484 y Ft(Returns)29 b(the)i(curren)m(tly)f -(activ)m(e)j(k)m(eymap.)3350 1659 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 1659 V 51 w(set)p 678 1659 -V 49 w(k)m(eymap)46 b Fe(\()p Fs(Keymap)29 b(keymap)p -Fe(\))390 1769 y Ft(Mak)m(es)j Fi(k)m(eymap)h Ft(the)e(curren)m(tly)f -(activ)m(e)j(k)m(eymap.)3350 1945 y([F)-8 b(unction])-3599 -b Fg(Keymap)40 b Ff(rl)p 589 1945 V 50 w(get)p 794 1945 -V 50 w(k)m(eymap)p 1229 1945 V 51 w(b)m(y)p 1401 1945 -V 50 w(name)45 b Fe(\()p Fs(const)29 b(char)g(*name)p -Fe(\))390 2054 y Ft(Return)j(the)i(k)m(eymap)f(matc)m(hing)i -Fi(name)p Ft(.)49 b Fi(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 2164 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 2339 y([F)-8 b(unction])-3599 -b Fg(char)39 b(*)g Ff(rl)p 575 2339 V 50 w(get)p 780 -2339 V 50 w(k)m(eymap)p 1215 2339 V 51 w(name)44 b Fe(\()p -Fs(Keymap)29 b(keymap)p Fe(\))390 2449 y Ft(Return)j(the)i(name)f(matc) -m(hing)h Fi(k)m(eymap)p Ft(.)50 b Fi(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 2559 -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\).)150 2774 y Fh(2.4.3)63 b(Binding)42 -b(Keys)275 3015 y Ft(Key)23 b(sequences)i(are)f(asso)s(ciate)i(with)e -(functions)f(through)g(the)h(k)m(eymap.)39 b(Readline)25 -b(has)f(sev)m(eral)h(in-)150 3125 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 3235 -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 -3344 y(and)30 b(the)g(examples)h(in)f(this)h(man)m(ual)f(assume)g -(that.)275 3476 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 3585 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 3695 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 -3805 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 3914 y(page)31 b(24\).)275 4046 y(These)f(functions)g -(manage)h(k)m(ey)g(bindings.)3350 4221 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 4221 V 51 w(bind)p 707 4221 -V 49 w(k)m(ey)45 b Fe(\()p Fs(int)30 b(key,)f(rl_command_func_t)d -(*function)p Fe(\))390 4331 y Ft(Binds)32 b Fi(k)m(ey)42 -b Ft(to)34 b Fi(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 -4441 y(of)e(an)f(in)m(v)-5 b(alid)31 b Fi(k)m(ey)p Ft(.)3350 -4616 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -4616 V 51 w(bind)p 707 4616 V 49 w(k)m(ey)p 926 4616 -V 50 w(in)p 1072 4616 V 50 w(map)46 b Fe(\()p Fs(int)29 -b(key,)h(rl_command_func_t)25 b(*function,)565 4726 y(Keymap)k(map)p -Fe(\))390 4836 y Ft(Bind)h Fi(k)m(ey)39 b Ft(to)31 b -Fi(function)f Ft(in)g Fi(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 Fi(k)m(ey)p -Ft(.)3350 5011 y([F)-8 b(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 5011 V 51 w(bind)p 707 5011 V 49 w(k)m(ey)p -926 5011 V 50 w(if)p 1043 5011 V 51 w(un)m(b)s(ound)k -Fe(\()p Fs(int)30 b(key,)f(rl_command_func_t)565 5121 -y(*function)p Fe(\))390 5230 y Ft(Binds)43 b Fi(k)m(ey)53 -b Ft(to)45 b Fi(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 -5340 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 Fi(k)m(ey)39 b Ft(or)30 b(if)h Fi(k)m(ey)39 -b Ft(is)30 b(already)h(b)s(ound.)p eop end -%%Page: 30 34 -TeXDict begin 30 33 bop 150 -116 a Ft(30)2600 b(GNU)31 -b(Readline)g(Library)3350 299 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 299 35 5 v 51 w(bind)p 707 -299 V 49 w(k)m(ey)p 926 299 V 50 w(if)p 1043 299 V 51 -w(un)m(b)s(ound)p 1535 299 V 48 w(in)p 1679 299 V 50 -w(map)45 b Fe(\()p Fs(int)30 b(key,)565 408 y(rl_command_func_t)c -(*function,)h(Keymap)i(map)p Fe(\))390 518 y Ft(Binds)e -Fi(k)m(ey)36 b Ft(to)28 b Fi(function)f Ft(if)g(it)h(is)f(not)h -(already)g(b)s(ound)d(in)i Fi(map)p Ft(.)39 b(Returns)27 -b(non-zero)g(in)g(the)h(case)390 628 y(of)j(an)f(in)m(v)-5 -b(alid)31 b Fi(k)m(ey)39 b Ft(or)30 b(if)g Fi(k)m(ey)39 -b Ft(is)31 b(already)g(b)s(ound.)3350 792 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 792 V 51 w(un)m(bind)p 832 -792 V 48 w(k)m(ey)46 b Fe(\()p Fs(int)29 b(key)p Fe(\))390 -902 y Ft(Bind)36 b Fi(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 1011 y(case)31 b(of)g(error.)3350 -1176 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -1176 V 51 w(un)m(bind)p 832 1176 V 48 w(k)m(ey)p 1050 -1176 V 51 w(in)p 1197 1176 V 49 w(map)46 b Fe(\()p Fs(int)29 -b(key,)h(Keymap)e(map)p Fe(\))390 1285 y Ft(Bind)i Fi(k)m(ey)39 -b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g Fi(map)p -Ft(.)40 b(Returns)30 b(non-zero)h(in)f(case)h(of)g(error.)3350 -1450 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -1450 V 51 w(un)m(bind)p 832 1450 V 48 w(function)p 1292 -1450 V 49 w(in)p 1437 1450 V 50 w(map)45 b Fe(\()p Fs -(rl_command_func_t)26 b(*function,)565 1559 y(Keymap)j(map)p -Fe(\))390 1669 y Ft(Un)m(bind)g(all)i(k)m(eys)g(that)g(execute)h -Fi(function)e Ft(in)g Fi(map)p Ft(.)3350 1833 y([F)-8 -b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 1833 V 51 -w(un)m(bind)p 832 1833 V 48 w(command)p 1362 1833 V 50 -w(in)p 1508 1833 V 50 w(map)46 b Fe(\()p Fs(const)29 -b(char)g(*command,)f(Keymap)565 1943 y(map)p Fe(\))390 -2052 y Ft(Un)m(bind)h(all)i(k)m(eys)g(that)g(are)g(b)s(ound)e(to)i -Fi(command)i Ft(in)d Fi(map)p Ft(.)3350 2217 y([F)-8 -b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 2217 V 51 -w(bind)p 707 2217 V 49 w(k)m(eyseq)46 b Fe(\()p Fs(const)29 -b(char)g(*keyseq,)f(rl_command_func_t)565 2326 y(*function)p -Fe(\))390 2436 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 Fi(k)m(eyseq)j Ft(to)e(the)f(function)g -Fi(function)p Ft(,)390 2545 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 2655 y(v)-5 -b(alue)31 b(is)f(non-zero)h(if)g Fi(k)m(eyseq)i Ft(is)d(in)m(v)-5 -b(alid.)3350 2819 y([F)d(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 2819 V 51 w(bind)p 707 2819 V 49 w(k)m(eyseq)p -1084 2819 V 51 w(in)p 1231 2819 V 49 w(map)46 b Fe(\()p -Fs(const)29 b(char)g(*keyseq,)565 2929 y(rl_command_func_t)d -(*function,)h(Keymap)i(map)p Fe(\))390 3039 y Ft(Bind)c(the)g(k)m(ey)h -(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fi(k)m(eyseq)j -Ft(to)e(the)f(function)g Fi(function)p Ft(.)39 b(This)390 -3148 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 -Fi(map)p Ft(.)40 b(The)29 b(return)390 3258 y(v)-5 b(alue)31 -b(is)f(non-zero)h(if)g Fi(k)m(eyseq)i Ft(is)d(in)m(v)-5 -b(alid.)3350 3422 y([F)d(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 3422 V 51 w(set)p 626 3422 V 49 w(k)m(ey)46 -b Fe(\()p Fs(const)29 b(char)g(*keyseq,)g(rl_command_func_t)c -(*function,)565 3532 y(Keymap)k(map)p Fe(\))390 3641 -y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs(rl_bind_keyseq_in_map)p -Ft(.)3350 3806 y([F)-8 b(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 3806 V 51 w(bind)p 707 3806 V 49 w(k)m(eyseq)p -1084 3806 V 51 w(if)p 1202 3806 V 50 w(un)m(b)s(ound)k -Fe(\()p Fs(const)30 b(char)f(*keyseq,)565 3915 y(rl_command_func_t)d -(*function)p Fe(\))390 4025 y Ft(Binds)35 b Fi(k)m(eyseq)k -Ft(to)d Fi(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 4134 -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 Fi(k)m(eyseq)j Ft(or)c(if)g Fi(k)m(eyseq)k -Ft(is)c(already)h(b)s(ound.)3350 4299 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 4299 V 51 w(bind)p 707 4299 -V 49 w(k)m(eyseq)p 1084 4299 V 51 w(if)p 1202 4299 V -50 w(un)m(b)s(ound)p 1693 4299 V 48 w(in)p 1837 4299 -V 50 w(map)46 b Fe(\()p Fs(const)29 b(char)g(*keyseq,)565 -4408 y(rl_command_func_t)d(*function,)h(Keymap)i(map)p -Fe(\))390 4518 y Ft(Binds)i Fi(k)m(eyseq)k Ft(to)e Fi(function)f -Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fi(map)p -Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 4628 y(case)f(of)g(an)f -(in)m(v)-5 b(alid)31 b Fi(k)m(eyseq)j Ft(or)c(if)g Fi(k)m(eyseq)k -Ft(is)c(already)h(b)s(ound.)3350 4792 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 4792 V 51 w(generic)p 840 4792 -V 49 w(bind)44 b Fe(\()p Fs(int)30 b(type,)f(const)g(char)g(*keyseq,)f -(char)h(*data,)565 4902 y(Keymap)g(map)p Fe(\))390 5011 -y Ft(Bind)e(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g -(string)g Fi(k)m(eyseq)j Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g -Fi(data)p Ft(.)390 5121 y Fi(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 -Fi(data)p Ft(;)h(this)e(can)h(b)s(e)f(a)g(function)g(\()p -Fs(ISFUNC)p Ft(\),)h(a)390 5230 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 5340 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h -(do)f(bindings)f(is)i Fi(map)p Ft(.)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)3350 -299 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -299 35 5 v 51 w(parse)p 748 299 V 49 w(and)p 981 299 -V 50 w(bind)44 b Fe(\()p Fs(char)29 b(*line)p Fe(\))390 -408 y Ft(P)m(arse)h Fi(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 518 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 709 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 709 V 51 w(read)p 703 709 V -49 w(init)p 925 709 V 49 w(\014le)45 b Fe(\()p Fs(const)29 -b(char)g(*filename)p Fe(\))390 818 y Ft(Read)j(k)m(eybindings)f(and)g -(v)-5 b(ariable)32 b(assignmen)m(ts)g(from)f Fi(\014lename)37 -b Ft(\(see)32 b(Section)g(1.3)h([Readline)390 928 y(Init)d(File],)i -(page)f(4\).)150 1158 y Fh(2.4.4)63 b(Asso)s(ciating)41 -b(F)-10 b(unction)42 b(Names)f(and)g(Bindings)275 1405 -y Ft(These)21 b(functions)f(allo)m(w)j(y)m(ou)f(to)g(\014nd)d(out)j -(what)f(k)m(eys)h(in)m(v)m(ok)m(e)h(named)e(functions)f(and)h(the)g -(functions)150 1515 y(in)m(v)m(ok)m(ed)29 b(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 1624 y(arbitrary)j(function.) -3350 1815 y([F)-8 b(unction])-3599 b Fg(rl_command_func_t)43 -b(*)c Ff(rl)p 1255 1815 V 50 w(named)p 1637 1815 V 50 -w(function)44 b Fe(\()p Fs(const)29 b(char)g(*name)p -Fe(\))390 1924 y Ft(Return)h(the)g(function)g(with)g(name)h -Fi(name)p Ft(.)3350 2115 y([F)-8 b(unction])-3599 b Fg -(rl_command_func_t)43 b(*)c Ff(rl)p 1255 2115 V 50 w(function)p -1717 2115 V 49 w(of)p 1858 2115 V 51 w(k)m(eyseq)46 b -Fe(\()p Fs(const)29 b(char)g(*keyseq,)565 2225 y(Keymap)g(map,)g(int)g -(*type)p Fe(\))390 2334 y Ft(Return)j(the)g(function)h(in)m(v)m(ok)m -(ed)h(b)m(y)e Fi(k)m(eyseq)k Ft(in)c(k)m(eymap)h Fi(map)p -Ft(.)47 b(If)32 b Fi(map)j Ft(is)d Fs(NULL)p Ft(,)g(the)h(curren)m(t) -390 2444 y(k)m(eymap)k(is)g(used.)60 b(If)37 b Fi(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 2553 -y Ft(v)-5 b(ariable)31 b(it)g(p)s(oin)m(ts)f(to)h(\(one)g(of)g -Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)h Fs(ISMACR)p -Ft(\).)3350 2744 y([F)-8 b(unction])-3599 b Fg(char)39 -b(**)g Ff(rl)p 627 2744 V 51 w(in)m(v)m(oking)p 1098 -2744 V 50 w(k)m(eyseqs)46 b Fe(\()p Fs(rl_command_func_t)26 -b(*function)p Fe(\))390 2853 y Ft(Return)k(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 Fi(function)e Ft(in)390 2963 y(the)g(curren)m(t)f(k)m -(eymap.)3350 3153 y([F)-8 b(unction])-3599 b Fg(char)39 -b(**)g Ff(rl)p 627 3153 V 51 w(in)m(v)m(oking)p 1098 -3153 V 50 w(k)m(eyseqs)p 1521 3153 V 51 w(in)p 1668 3153 -V 50 w(map)45 b Fe(\()p Fs(rl_command_func_t)565 3263 -y(*function,)28 b(Keymap)g(map)p Fe(\))390 3373 y Ft(Return)i(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 Fi(function)e Ft(in)390 -3482 y(the)g(k)m(eymap)f Fi(map)p Ft(.)3350 3673 y([F)-8 -b(unction])-3599 b Fg(void)39 b Ff(rl)p 484 3673 V 51 -w(function)p 947 3673 V 49 w(dump)s(er)45 b Fe(\()p Fs(int)29 -b(readable)p Fe(\))390 3782 y Ft(Prin)m(t)g(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 3892 y Fs(rl_outstream)p Ft(.)36 b(If)27 -b Fi(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 4001 -y(b)s(e)i(made)g(part)g(of)h(an)f Fs(inputrc)f Ft(\014le)h(and)g -(re-read.)3350 4192 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 4192 V 51 w(list)p 689 4192 V 50 w(funmap)p -1117 4192 V 49 w(names)45 b Fe(\()p Fs(void)p Fe(\))390 -4301 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 4492 y([F)-8 -b(unction])-3599 b Fg(const)40 b(char)f(**)g Ff(rl)p -927 4492 V 50 w(funmap)p 1355 4492 V 50 w(names)45 b -Fe(\()p Fs(void)p Fe(\))390 4602 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 4711 -y(arra)m(y)26 b(itself)g(is)f(allo)s(cated,)k(but)24 -b(not)i(the)f(strings)g(inside.)39 b(Y)-8 b(ou)26 b(should)e -Fs(free\(\))g Ft(the)h(arra)m(y)h(when)390 4821 y(y)m(ou)31 -b(are)f(done,)h(but)f(not)g(the)h(p)s(oin)m(ters.)3350 -5011 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -5011 V 51 w(add)p 667 5011 V 49 w(funmap)p 1094 5011 -V 49 w(en)m(try)45 b Fe(\()p Fs(const)29 b(char)h(*name,)e -(rl_command_func_t)565 5121 y(*function)p Fe(\))390 5230 -y Ft(Add)k Fi(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 Fi(function)f -Ft(the)390 5340 y(function)d(to)h(b)s(e)f(called)h(when)f -Fi(name)35 b Ft(is)c(in)m(v)m(ok)m(ed.)p eop end -%%Page: 32 36 -TeXDict begin 32 35 bop 150 -116 a Ft(32)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fh(2.4.5)63 b(Allo)m(wing)41 -b(Undoing)275 539 y Ft(Supp)s(orting)24 b(the)i(undo)f(command)h(is)h -(a)f(painless)h(thing,)g(and)e(mak)m(es)j(y)m(our)e(functions)f(m)m(uc) -m(h)i(more)150 648 y(useful.)40 b(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 779 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 -888 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(.)275 1018 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 1128 -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 -1238 y(group\(\))28 b Ft(and)i Fs(rl_end_undo_group\(\))p -Ft(.)275 1368 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 1476 y Fd(enum)40 b(undo_code)h({)f -(UNDO_DELETE,)i(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)f(};)275 -1606 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 -1715 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 1825 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 1997 -y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 1997 -35 5 v 51 w(b)s(egin)p 756 1997 V 49 w(undo)p 1054 1997 -V 50 w(group)45 b Fe(\()p Fs(void)p Fe(\))390 2106 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 -2216 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 -2325 y(result)30 b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p -Ft(.)3350 2497 y([F)-8 b(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 2497 V 51 w(end)p 664 2497 V 49 w(undo)p -962 2497 V 49 w(group)46 b Fe(\()p Fs(void)p Fe(\))390 -2606 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 2716 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 2888 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 2888 V 51 w(add)p 719 2888 V 49 w(undo)45 -b Fe(\()p Fs(enum)29 b(undo_code)f(what,)h(int)h(start,)e(int)i(end,)f -(char)565 2997 y(*text)p Fe(\))390 3107 y Ft(Remem)m(b)s(er)34 -b(ho)m(w)g(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g -Fi(what)r Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390 -3216 y Fi(start)h Ft(to)e Fi(end)p Ft(,)f(and)g(encompasses)h -Fi(text)p Ft(.)3350 3388 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 3388 V 51 w(free)p 723 3388 V 49 w(undo)p -1021 3388 V 50 w(list)45 b Fe(\()p Fs(void)p Fe(\))390 -3497 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350 -3669 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -3669 V 51 w(do)p 604 3669 V 50 w(undo)45 b Fe(\()p Fs(void)p -Fe(\))390 3779 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 3888 y(if)30 b(something)h(w)m(as)g(undone.)275 -4060 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 4169 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 4279 -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 4450 y([F)g(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 4450 V 51 w(mo)s(difying)46 -b Fe(\()p Fs(int)29 b(start,)g(int)h(end)p Fe(\))390 -4560 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 Fi(start)i Ft(and)c Fi(end)k Ft(as)e(a)f(single)h(undo) -e(unit.)70 b(It)40 b(is)390 4670 y(assumed)30 b(that)h(y)m(ou)f(will)h -(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 4881 -y Fh(2.4.6)63 b(Redispla)m(y)3350 5121 y Ft([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 5121 V 51 w(redispla)m(y)44 -b Fe(\()p Fs(void)p Fe(\))390 5230 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 5340 y(buffer)p Ft(.)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)3350 -299 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -299 35 5 v 51 w(forced)p 790 299 V 49 w(up)s(date)p 1188 -299 V 49 w(displa)m(y)44 b Fe(\()p Fs(void)p Fe(\))390 -408 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 -518 y(screen)30 b(displa)m(y)h(is)f(correct.)3350 725 -y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 725 -V 51 w(on)p 604 725 V 50 w(new)p 854 725 V 49 w(line)44 -b Fe(\()p Fs(void)p Fe(\))390 835 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 -944 y(ouputting)h(a)h(newline.)3350 1151 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 1151 V 51 w(on)p 604 1151 V -50 w(new)p 854 1151 V 49 w(line)p 1084 1151 V 49 w(with)p -1357 1151 V 50 w(prompt)45 b Fe(\()p Fs(void)p Fe(\))390 -1261 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 -Fi(rl)p 3106 1261 28 4 v 40 w(prompt)i Ft(already)390 -1370 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 1480 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 1590 y(should)29 b(b)s(e)h(used)g(after)h(setting)g -Fi(rl)p 1590 1590 V 40 w(already)p 1920 1590 V 41 w(prompted)p -Ft(.)3350 1797 y([F)-8 b(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 1797 35 5 v 51 w(reset)p 726 1797 V 49 w(line)p -956 1797 V 49 w(state)44 b Fe(\()p Fs(void)p Fe(\))390 -1906 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 -2016 y(new)30 b(line.)3350 2223 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 2223 V 51 w(crlf)45 b Fe(\()p -Fs(void)p Fe(\))390 2332 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 2539 y([F)-8 -b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 2539 V 51 -w(sho)m(w)p 729 2539 V 50 w(c)m(har)44 b Fe(\()p Fs(int)30 -b(c)p Fe(\))390 2649 y Ft(Displa)m(y)k(c)m(haracter)g -Fi(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 2759 -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 2868 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 3075 y([F)g(unction])-3599 b Fg(int)39 b Ff(rl)p -432 3075 V 51 w(message)45 b Fe(\()p Fs(const)29 b(char)g(*,)h(...)o -Fe(\))390 3185 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 3294 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 -3404 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 -Fi(ec)m(ho)390 3513 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 3623 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 3733 y(function.)3350 -3940 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -3940 V 51 w(clear)p 722 3940 V 49 w(message)45 b Fe(\()p -Fs(void)p Fe(\))390 4049 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 4159 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 -4268 y(this)30 b(function.)3350 4475 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 4475 V 51 w(sa)m(v)m(e)p 743 -4475 V 50 w(prompt)45 b Fe(\()p Fs(void)p Fe(\))390 4585 -y Ft(Sa)m(v)m(e)f(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 -4695 y(message)31 b(in)g(the)f(message)i(area)f(with)f -Fs(rl_message\(\))p Ft(.)3350 4902 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 4902 V 51 w(restore)p 882 -4902 V 50 w(prompt)45 b Fe(\()p Fs(void)p Fe(\))390 5011 -y Ft(Restore)f(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 -5121 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 5230 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 5340 y(clear_message)p Ft(.)p eop end -%%Page: 34 38 -TeXDict begin 34 37 bop 150 -116 a Ft(34)2600 b(GNU)31 -b(Readline)g(Library)3350 299 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 299 35 5 v 51 w(expand)p 844 -299 V 49 w(prompt)45 b Fe(\()p Fs(char)29 b(*prompt)p -Fe(\))390 408 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m(haracter)h -(sequences)f(in)g Fi(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s(cal)h -(Readline)390 518 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 628 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 -737 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 847 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)390 956 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 1066 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 1176 y(START_IGNORE)27 -b Ft(and)k Fs(RL_PROMPT_END_IGNORE)25 b Ft(\(declared)31 -b(in)g(`)p Fs(readline.h)p Ft('.)39 b(This)30 b(ma)m(y)i(b)s(e)390 -1285 y(used)e(to)h(em)m(b)s(ed)f(terminal-sp)s(eci\014c)h(escap)s(e)f -(sequences)h(in)f(prompts.)3350 1461 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 1461 V 51 w(set)p 626 1461 -V 49 w(prompt)45 b Fe(\()p Fs(const)30 b(char)f(*prompt)p -Fe(\))390 1571 y Ft(Mak)m(e)f(Readline)g(use)f Fi(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 1681 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 -1897 y Fh(2.4.7)63 b(Mo)s(difying)43 b(T)-10 b(ext)3350 -2138 y Ft([F)i(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -2138 V 51 w(insert)p 769 2138 V 49 w(text)44 b Fe(\()p -Fs(const)30 b(char)f(*text)p Fe(\))390 2248 y Ft(Insert)i -Fi(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 -2357 y(acters)g(inserted.)3350 2534 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 2534 V 51 w(delete)p 783 2534 -V 47 w(text)45 b Fe(\()p Fs(int)30 b(start,)f(int)g(end)p -Fe(\))390 2643 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f -Fi(start)i Ft(and)d Fi(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 2753 y(c)m(haracters)32 -b(deleted.)3350 2929 y([F)-8 b(unction])-3599 b Fg(char)39 -b(*)g Ff(rl)p 575 2929 V 50 w(cop)m(y)p 854 2929 V 51 -w(text)44 b Fe(\()p Fs(int)30 b(start,)f(int)g(end)p -Fe(\))390 3039 y Ft(Return)h(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m -(w)m(een)g Fi(start)i Ft(and)d Fi(end)j Ft(in)d(the)h(curren)m(t)f -(line.)3350 3215 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(rl)p 432 3215 V 51 w(kill)p 639 3215 V 50 w(text)44 -b Fe(\()p Fs(int)30 b(start,)f(int)g(end)p Fe(\))390 -3324 y Ft(Cop)m(y)34 b(the)g(text)i(b)s(et)m(w)m(een)e -Fi(start)j Ft(and)d Fi(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 3434 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 3544 y(deleted.)51 -b(If)33 b Fi(start)j Ft(is)e(less)g(than)f Fi(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 3653 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 3829 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 3829 V 51 w(push)p 720 3829 -V 49 w(macro)p 1075 3829 V 51 w(input)44 b Fe(\()p Fs(char)29 -b(*macro)p Fe(\))390 3939 y Ft(Cause)f Fi(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 -4049 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 4265 y Fh(2.4.8)63 -b(Character)39 b(Input)3350 4506 y Ft([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 4506 V 51 w(read)p 703 4506 -V 49 w(k)m(ey)46 b Fe(\()p Fs(void)p Fe(\))390 4616 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 4725 y(dles)e(input)g(inserted)g(in)m(to)i(the)e -(input)g(stream)h(via)g Fi(rl)p 2226 4725 28 4 v 40 w(p)s(ending)p -2583 4725 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390 -4835 y(line)40 b(V)-8 b(ariables],)43 b(page)d(24\))g(and)f -Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f -(from)390 4945 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 5054 y(to)d(the)g Fs(rl_event_hook)26 -b Ft(v)-5 b(ariable.)3350 5230 y([F)d(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 5230 35 5 v 51 w(getc)44 b -Fe(\()p Fs(FILE)30 b(*stream)p Fe(\))390 5340 y Ft(Return)20 -b(the)i(next)f(c)m(haracter)i(a)m(v)-5 b(ailable)24 b(from)c -Fi(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.)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)3350 -299 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -299 35 5 v 51 w(stu\013)p 704 299 V 49 w(c)m(har)45 b -Fe(\()p Fs(int)30 b(c)p Fe(\))390 408 y Ft(Insert)i Fi(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 518 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 628 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 737 -y(0)g(otherwise.)3350 985 y([F)-8 b(unction])-3599 b -Fg(int)39 b Ff(rl)p 432 985 V 51 w(execute)p 862 985 -V 48 w(next)45 b Fe(\()p Fs(int)30 b(c)p Fe(\))390 1095 -y Ft(Mak)m(e)37 b Fi(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 1205 y(sets)31 b Fi(rl)p 635 1205 28 4 v 40 -w(p)s(ending)p 992 1205 V 38 w(input)p Ft(.)3350 1453 -y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 1453 -35 5 v 51 w(clear)p 722 1453 V 49 w(p)s(ending)p 1172 -1453 V 49 w(input)44 b Fe(\()p Fs(void)p Fe(\))390 1562 -y Ft(Unset)e Fi(rl)p 729 1562 28 4 v 40 w(p)s(ending)p -1086 1562 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 -1672 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 -1782 y(with)30 b Fs(rl_read_key\(\))p Ft(.)3350 2030 -y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 2030 -35 5 v 51 w(set)p 626 2030 V 49 w(k)m(eyb)s(oard)p 1136 -2030 V 51 w(input)p 1456 2030 V 48 w(timeout)45 b Fe(\()p -Fs(int)29 b(u)p Fe(\))390 2139 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 Fi(u)g Ft(mi-)390 2249 y(croseconds)h(for)g(input)f -(b)s(efore)g(calling)j(an)m(y)e(function)f(assigned)h(to)h -Fs(rl_event_hook)p Ft(.)68 b(The)390 2359 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 -2647 y Fh(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350 -2923 y Ft([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p -484 2923 V 51 w(prep)p 763 2923 V 49 w(terminal)44 b -Fe(\()p Fs(int)30 b(meta_flag)p Fe(\))390 3032 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 3142 -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 Fi(meta)p 2376 3142 28 4 v 41 w(\015ag)39 -b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 3251 -y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350 -3500 y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p -484 3500 35 5 v 51 w(deprep)p 880 3500 V 48 w(terminal)45 -b Fe(\()p Fs(void)p Fe(\))390 3609 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 3719 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 3967 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 3967 V 51 w(tt)m(y)p 682 3967 V 50 w(set)p -875 3967 V 49 w(default)p 1273 3967 V 49 w(bindings)44 -b Fe(\()p Fs(Keymap)29 b(kmap)p Fe(\))390 4076 y Ft(Read)37 -b(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 -4186 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 -Fi(kmap)p Ft(.)3350 4434 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 4434 V 51 w(tt)m(y)p 682 4434 V 50 w(unset)p -1003 4434 V 49 w(default)p 1401 4434 V 48 w(bindings)44 -b Fe(\()p Fs(Keymap)29 b(kmap)p Fe(\))390 4544 y Ft(Reset)k(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 4653 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 -4763 y Fi(kmap)p Ft(.)3350 5011 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 5011 V 51 w(reset)p 726 5011 -V 49 w(terminal)44 b Fe(\()p Fs(const)29 b(char)h(*terminal_name)p -Fe(\))390 5121 y Ft(Reinitialize)c(Readline's)f(idea)f(of)g(the)g -(terminal)h(settings)f(using)g Fi(terminal)p 2977 5121 -28 4 v 40 w(name)29 b Ft(as)24 b(the)g(termi-)390 5230 -y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i Fs(vt100)p Ft(\).)44 -b(If)31 b Fi(terminal)p 1753 5230 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 5340 y(v)-5 b(ariable)31 -b(is)g(used.)p eop end -%%Page: 36 40 -TeXDict begin 36 39 bop 150 -116 a Ft(36)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fh(2.4.10)63 b(Utilit)m(y)40 -b(F)-10 b(unctions)3350 545 y Ft([F)i(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 545 35 5 v 51 w(replace)p -891 545 V 49 w(line)44 b Fe(\()p Fs(const)29 b(char)g(*text,)g(int)g -(clear_undo)p Fe(\))390 654 y Ft(Replace)41 b(the)e(con)m(ten)m(ts)i -(of)f Fs(rl_line_buffer)35 b Ft(with)k Fi(text)p Ft(.)69 -b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h(pre-)390 -764 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 b(If)25 b -Fi(clear)p 1422 764 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 874 -y(line)31 b(is)f(cleared.)3350 1062 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 1062 35 5 v 51 w(extend)p 822 -1062 V 48 w(line)p 1051 1062 V 50 w(bu\013er)44 b Fe(\()p -Fs(int)30 b(len)p Fe(\))390 1171 y Ft(Ensure)f(that)h -Fs(rl_line_buffer)d Ft(has)j(enough)f(space)i(to)g(hold)f -Fi(len)g Ft(c)m(haracters,)i(p)s(ossibly)d(real-)390 -1281 y(lo)s(cating)j(it)f(if)f(necessary)-8 b(.)3350 -1469 y([F)g(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -1469 V 51 w(initialize)j Fe(\()p Fs(void)p Fe(\))390 -1579 y Ft(Initialize)d(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 -1688 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 1876 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 1876 V 51 w(ding)44 b Fe(\()p -Fs(void)p Fe(\))390 1986 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 -2174 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -2174 V 51 w(alphab)s(etic)j Fe(\()p Fs(int)30 b(c)p Fe(\))390 -2283 y Ft(Return)g(1)g(if)h Fi(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g -(c)m(haracter.)3350 2472 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 2472 V 51 w(displa)m(y)p 885 2472 V 49 -w(matc)m(h)p 1242 2472 V 50 w(list)45 b Fe(\()p Fs(char)29 -b(**matches,)f(int)h(len,)h(int)f(max)p Fe(\))390 2581 -y Ft(A)35 b(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 -2691 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 2800 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 -2910 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 3019 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 3129 y(Init)30 b(File)i(Syn)m(tax],)f(page)g -(4\).)275 3317 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 3427 y(refrain)d(from)g(using)g(them.)3350 -3615 y([F)-8 b(unction])-3599 b Fg(int)p 353 3615 V 90 -w Ff(rl)p 483 3615 V 50 w(upp)s(ercase)p 1033 3615 V -48 w(p)46 b Fe(\()p Fs(int)29 b(c)p Fe(\))390 3724 y -Ft(Return)h(1)g(if)h Fi(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s -(etic)i(c)m(haracter.)3350 3912 y([F)-8 b(unction])-3599 -b Fg(int)p 353 3912 V 90 w Ff(rl)p 483 3912 V 50 w(lo)m(w)m(ercase)p -1004 3912 V 49 w(p)45 b Fe(\()p Fs(int)30 b(c)p Fe(\))390 -4022 y Ft(Return)g(1)g(if)h Fi(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i -(alphab)s(etic)e(c)m(haracter.)3350 4210 y([F)-8 b(unction])-3599 -b Fg(int)p 353 4210 V 90 w Ff(rl)p 483 4210 V 50 w(digit)p -763 4210 V 49 w(p)46 b Fe(\()p Fs(int)29 b(c)p Fe(\))390 -4320 y Ft(Return)h(1)g(if)h Fi(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m -(haracter.)3350 4508 y([F)-8 b(unction])-3599 b Fg(int)p -353 4508 V 90 w Ff(rl)p 483 4508 V 50 w(to)p 635 4508 -V 50 w(upp)s(er)44 b Fe(\()p Fs(int)30 b(c)p Fe(\))390 -4617 y Ft(If)23 b Fi(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.)3350 4805 y([F)-8 b(unction])-3599 b -Fg(int)p 353 4805 V 90 w Ff(rl)p 483 4805 V 50 w(to)p -635 4805 V 50 w(lo)m(w)m(er)45 b Fe(\()p Fs(int)30 b(c)p -Fe(\))390 4915 y Ft(If)e Fi(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 5025 y(ter.)3350 5213 y([F)-8 -b(unction])-3599 b Fg(int)p 353 5213 V 90 w Ff(rl)p 483 -5213 V 50 w(digit)p 763 5213 V 49 w(v)-6 b(alue)45 b -Fe(\()p Fs(int)30 b(c)p Fe(\))390 5322 y Ft(If)g Fi(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: 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)150 -299 y Fh(2.4.11)63 b(Miscellaneous)42 b(F)-10 b(unctions)3350 -561 y Ft([F)i(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -561 35 5 v 51 w(macro)p 789 561 V 50 w(bind)45 b Fe(\()p -Fs(const)29 b(char)g(*keyseq,)f(const)h(char)g(*macro,)g(Keymap)565 -671 y(map)p Fe(\))390 780 y Ft(Bind)23 b(the)g(k)m(ey)h(sequence)g -Fi(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f -Fi(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390 -890 y Fi(map)p Ft(.)39 b(When)28 b Fi(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)m -(ed,)i(the)d Fi(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 999 y(is)k(deprecated;)i(use)e -Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1220 y([F)-8 -b(unction])-3599 b Fg(void)39 b Ff(rl)p 484 1220 V 51 -w(macro)p 841 1220 V 51 w(dump)s(er)45 b Fe(\()p Fs(int)29 -b(readable)p Fe(\))390 1329 y Ft(Prin)m(t)e(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 1439 y(to)32 -b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fi(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 1548 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 1769 y([F)-8 -b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 1769 V 51 -w(v)-6 b(ariable)p 877 1769 V 48 w(bind)45 b Fe(\()p -Fs(const)29 b(char)g(*variable,)f(const)h(char)g(*value)p -Fe(\))390 1878 y Ft(Mak)m(e)i(the)e(Readline)g(v)-5 b(ariable)30 -b Fi(v)-5 b(ariable)35 b Ft(ha)m(v)m(e)30 b Fi(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 1988 y(mand)f(`)p Fs(set)i Fl(variable)38 b(value)11 -b Ft(')28 b(had)g(b)s(een)g(executed)i(in)e(an)h Fs(inputrc)e -Ft(\014le)i(\(see)g(Section)h(1.3.1)390 2098 y([Readline)h(Init)f(File) -i(Syn)m(tax],)f(page)g(4\).)3350 2318 y([F)-8 b(unction])-3599 -b Fg(char)39 b(*)g Ff(rl)p 575 2318 V 50 w(v)-6 b(ariable)p -1019 2318 V 49 w(v)g(alue)44 b Fe(\()p Fs(const)30 b(char)f(*variable)p -Fe(\))390 2427 y Ft(Return)f(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 -Fi(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390 -2537 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 2757 y([F)-8 -b(unction])-3599 b Fg(void)39 b Ff(rl)p 484 2757 V 51 -w(v)-6 b(ariable)p 929 2757 V 49 w(dump)s(er)44 b Fe(\()p -Fs(int)30 b(readable)p Fe(\))390 2867 y Ft(Prin)m(t)f(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 -Fi(read-)390 2977 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 3086 y Fs(inputrc)28 b Ft(\014le)j(and)f -(re-read.)3350 3306 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(rl)p 432 3306 V 51 w(set)p 626 3306 V 49 w(paren)p -959 3306 V 49 w(blink)p 1260 3306 V 50 w(timeout)44 b -Fe(\()p Fs(int)30 b(u)p Fe(\))390 3416 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 3526 y(c)m(haracter)32 -b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350 -3746 y([F)-8 b(unction])-3599 b Fg(char)39 b(*)g Ff(rl)p -575 3746 V 50 w(get)p 780 3746 V 50 w(termcap)45 b Fe(\()p -Fs(const)29 b(char)g(*cap)p Fe(\))390 3856 y Ft(Retriev)m(e)g(the)e -(string)g(v)-5 b(alue)27 b(of)g(the)h(termcap)f(capabilit)m(y)i -Fi(cap)p Ft(.)40 b(Readline)27 b(fetc)m(hes)h(the)g(termcap)390 -3965 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 -4075 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 4184 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 4294 y(only)30 b(those)h(capabilities)i(Readline)e -(uses.)150 4554 y Fh(2.4.12)63 b(Alternate)40 b(In)m(terface)275 -4816 y Ft(An)k(alternate)i(in)m(terface)g(is)f(a)m(v)-5 -b(ailable)47 b(to)f(plain)e Fs(readline\(\))p Ft(.)81 -b(Some)45 b(applications)h(need)e(to)150 4926 y(in)m(terlea)m(v)m(e)32 -b(k)m(eyb)s(oard)d(I/O)g(with)f(\014le,)i(device,)h(or)e(windo)m(w)f -(system)h(I/O,)g(t)m(ypically)i(b)m(y)e(using)g(a)g(main)150 -5035 y(lo)s(op)f(to)g Fs(select\(\))e Ft(on)h(v)-5 b(arious)28 -b(\014le)g(descriptors.)39 b(T)-8 b(o)28 b(accomo)s(date)i(this)e -(need,)g(readline)g(can)g(also)h(b)s(e)150 5145 y(in)m(v)m(ok)m(ed)k -(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 5254 y(this)e(easy)-8 b(.)p eop end -%%Page: 38 42 -TeXDict begin 38 41 bop 150 -116 a Ft(38)2600 b(GNU)31 -b(Readline)g(Library)3350 299 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 299 35 5 v 51 w(callbac)m(k)p -934 299 V 49 w(handler)p 1363 299 V 49 w(install)44 b -Fe(\()p Fs(const)29 b(char)g(*prompt,)565 408 y(rl_vcpfunc_t)e -(*lhandler)p Fe(\))390 518 y Ft(Set)e(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 Fi(prompt)p Ft(.)390 628 y(Sa)m(v)m(e)33 -b(the)f(v)-5 b(alue)32 b(of)g Fi(lhandler)37 b Ft(to)c(use)e(as)h(a)g -(function)f(to)h(call)h(when)e(a)h(complete)h(line)f(of)g(input)390 -737 y(has)e(b)s(een)g(en)m(tered.)41 b(The)30 b(function)g(tak)m(es)i -(the)e(text)i(of)e(the)h(line)g(as)f(an)g(argumen)m(t.)3350 -925 y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p 484 -925 V 51 w(callbac)m(k)p 934 925 V 49 w(read)p 1203 925 -V 50 w(c)m(har)44 b Fe(\()p Fs(void)p Fe(\))390 1035 -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 -1144 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 1254 y(source.)77 b(If)41 b(that)i(c)m(haracter)h(completes) -g(the)e(line,)k Fs(rl_callback_read_char)36 b Ft(will)43 -b(in)m(v)m(ok)m(e)390 1364 y(the)36 b Fi(lhandler)41 -b Ft(function)35 b(sa)m(v)m(ed)h(b)m(y)g Fs(rl_callback_handler_ins)o -(tall)29 b Ft(to)36 b(pro)s(cess)f(the)g(line.)390 1473 -y(Before)28 b(calling)g(the)f Fi(lhandler)32 b Ft(function,)c(the)e -(terminal)i(settings)f(are)g(reset)h(to)f(the)g(v)-5 -b(alues)27 b(they)390 1583 y(had)i(b)s(efore)g(calling)j -Fs(rl_callback_handler_ins)o(tall)o Ft(.)j(If)29 b(the)h -Fi(lhandler)36 b Ft(function)29 b(returns,)390 1692 y(the)c(terminal)g -(settings)h(are)f(mo)s(di\014ed)e(for)i(Readline's)g(use)f(again.)40 -b Fs(EOF)24 b Ft(is)h(indicated)g(b)m(y)f(calling)390 -1802 y Fi(lhandler)36 b Ft(with)30 b(a)h Fs(NULL)e Ft(line.)3350 -1990 y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p -484 1990 V 51 w(callbac)m(k)p 934 1990 V 49 w(handler)p -1363 1990 V 49 w(remo)m(v)m(e)45 b Fe(\()p Fs(void)p -Fe(\))390 2100 y Ft(Restore)38 b(the)f(terminal)h(to)g(its)f(initial)i -(state)f(and)f(remo)m(v)m(e)h(the)g(line)f(handler.)60 -b(This)37 b(ma)m(y)h(b)s(e)390 2209 y(called)f(from)f(within)g(a)h -(callbac)m(k)h(as)f(w)m(ell)g(as)f(indep)s(enden)m(tly)-8 -b(.)58 b(If)36 b(the)h Fi(lhandler)42 b Ft(installed)37 -b(b)m(y)390 2319 y Fs(rl_callback_handler_inst)o(all)32 -b Ft(do)s(es)39 b(not)g(exit)g(the)g(program,)i(either)e(this)g -(function)f(or)390 2428 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 2538 y(b)s(efore)f(the)h(program)f -(exits)h(to)g(reset)g(the)f(terminal)h(settings.)150 -2766 y Fh(2.4.13)63 b(A)41 b(Readline)f(Example)275 3012 -y Ft(Here)f(is)g(a)g(function)g(whic)m(h)g(c)m(hanges)h(lo)m(w)m -(ercase)h(c)m(haracters)g(to)e(their)g(upp)s(ercase)f(equiv)-5 -b(alen)m(ts,)150 3121 y(and)38 b(upp)s(ercase)f(c)m(haracters)j(to)f -(lo)m(w)m(ercase.)68 b(If)37 b(this)i(function)f(w)m(as)h(b)s(ound)d -(to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)150 3231 -y(`)p Fs(M-c)p Ft(')26 b(w)m(ould)g(c)m(hange)h(the)g(case)g(of)g(the)f -(c)m(haracter)i(under)d(p)s(oin)m(t.)39 b(T)m(yping)26 -b(`)p Fs(M-1)k(0)g(M-c)p Ft(')c(w)m(ould)g(c)m(hange)150 -3341 y(the)31 b(case)g(of)g(the)f(follo)m(wing)i(10)f(c)m(haracters,)h -(lea)m(ving)g(the)f(cursor)f(on)g(the)g(last)i(c)m(haracter)g(c)m -(hanged.)390 3477 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f -(following)g(characters.)e(*/)390 3587 y(int)390 3696 -y(invert_case_line)f(\(count,)j(key\))629 3806 y(int)h(count,)f(key;) -390 3915 y({)485 4025 y(register)g(int)h(start,)f(end,)h(i;)485 -4244 y(start)g(=)g(rl_point;)485 4463 y(if)h(\(rl_point)d(>=)i -(rl_end\))581 4573 y(return)f(\(0\);)485 4792 y(if)i(\(count)e(<)h(0\)) -581 4902 y({)676 5011 y(direction)f(=)h(-1;)676 5121 -y(count)g(=)g(-count;)581 5230 y(})485 5340 y(else)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)581 -299 y Fs(direction)45 b(=)j(1;)485 518 y(/*)g(Find)e(the)h(end)g(of)g -(the)g(range)g(to)g(modify.)f(*/)485 628 y(end)h(=)h(start)e(+)i -(\(count)e(*)h(direction\);)485 847 y(/*)h(Force)e(it)h(to)g(be)h -(within)e(range.)g(*/)485 956 y(if)i(\(end)e(>)i(rl_end\))581 -1066 y(end)f(=)g(rl_end;)485 1176 y(else)g(if)g(\(end)g(<)g(0\))581 -1285 y(end)g(=)g(0;)485 1504 y(if)h(\(start)e(==)h(end\))581 -1614 y(return)f(\(0\);)485 1833 y(if)i(\(start)e(>)h(end\))581 -1943 y({)676 2052 y(int)g(temp)g(=)g(start;)676 2162 -y(start)g(=)g(end;)676 2271 y(end)g(=)h(temp;)581 2381 -y(})485 2600 y(/*)g(Tell)e(readline)g(that)g(we)i(are)f(modifying)e -(the)i(line,)629 2710 y(so)g(it)g(will)g(save)f(the)h(undo)g -(information.)d(*/)485 2819 y(rl_modifying)h(\(start,)h(end\);)485 -3039 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f(i++\))581 -3148 y({)676 3258 y(if)i(\(_rl_uppercase_p)43 b -(\(rl_line_buffer[i]\)\))772 3367 y(rl_line_buffer[i])g(=)k -(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 3477 y(else)i(if)g -(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 3587 -y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581 -3696 y(})485 3806 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g -(last)g(character)e(changed.)g(*/)485 3915 y(rl_point)h(=)h -(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485 -4025 y(return)f(\(0\);)390 4134 y(})150 4425 y Fr(2.5)68 -b(Readline)47 b(Signal)e(Handling)275 4682 y Ft(Signals)c(are)h(async)m -(hronous)g(ev)m(en)m(ts)h(sen)m(t)f(to)g(a)g(pro)s(cess)f(b)m(y)h(the)g -(Unix)f(k)m(ernel,)k(sometimes)e(on)150 4792 y(b)s(ehalf)c(of)h -(another)g(pro)s(cess.)68 b(They)39 b(are)h(in)m(tended)g(to)g -(indicate)h(exceptional)h(ev)m(en)m(ts,)i(lik)m(e)d(a)f(user)150 -4902 y(pressing)29 b(the)i(in)m(terrupt)e(k)m(ey)i(on)f(his)f -(terminal,)i(or)f(a)g(net)m(w)m(ork)h(connection)g(b)s(eing)f(brok)m -(en.)40 b(There)30 b(is)150 5011 y(a)d(class)g(of)f(signals)h(that)g -(can)g(b)s(e)f(sen)m(t)h(to)g(the)f(pro)s(cess)g(curren)m(tly)h -(reading)f(input)f(from)h(the)h(k)m(eyb)s(oard.)150 5121 -y(Since)g(Readline)g(c)m(hanges)h(the)e(terminal)i(attributes)f(when)f -(it)h(is)f(called,)j(it)e(needs)g(to)g(p)s(erform)e(sp)s(ecial)150 -5230 y(pro)s(cessing)i(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 5340 y(pro)m(vide)g(application)i(writers)e(with)g(functions)g -(to)h(do)g(so)f(man)m(ually)-8 b(.)p eop end -%%Page: 40 44 -TeXDict begin 40 43 bop 150 -116 a Ft(40)2600 b(GNU)31 -b(Readline)g(Library)275 299 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 408 y(\()p Fs(SIGINT)p Ft(,)k -Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)g Fs(SIGALRM)p -Ft(,)h Fs(SIGTSTP)p Ft(,)f Fs(SIGTTIN)p Ft(,)g(and)e -Fs(SIGTTOU)p Ft(\).)75 b(When)41 b(one)i(of)150 518 y(these)32 -b(signals)g(is)g(receiv)m(ed,)i(the)e(signal)g(handler)f(will)h(reset)g -(the)g(terminal)g(attributes)h(to)f(those)g(that)150 -628 y(w)m(ere)c(in)f(e\013ect)h(b)s(efore)f Fs(readline\(\))d -Ft(w)m(as)k(called,)h(reset)f(the)g(signal)f(handling)g(to)h(what)f(it) -h(w)m(as)f(b)s(efore)150 737 y Fs(readline\(\))42 b Ft(w)m(as)k -(called,)k(and)44 b(resend)h(the)g(signal)h(to)g(the)f(calling)i -(application.)86 b(If)44 b(and)h(when)150 847 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 956 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 1066 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 1176 y(description)30 b(of)h Fs -(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275 1323 -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 -1433 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 1542 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 1652 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 1762 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 1871 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 1981 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 Fn(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 2090 -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 2238 y(Readline)e(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 2348 -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 2457 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 2567 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 2777 y([V)-8 b(ariable])-3598 b Fg(int)39 -b Ff(rl)p 432 2777 35 5 v 51 w(catc)m(h)p 747 2777 V -48 w(signals)390 2887 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 2997 y Fs(SIGTERM)p -Ft(,)h Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p Ft(,)h Fs(SIGTTIN)p -Ft(,)g(and)g Fs(SIGTTOU)p Ft(.)390 3144 y(The)h(default)g(v)-5 -b(alue)31 b(of)g Fs(rl_catch_signals)26 b Ft(is)k(1.)3371 -3355 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -3355 V 51 w(catc)m(h)p 747 3355 V 48 w(sigwinc)m(h)390 -3465 y Ft(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(non-zero,)g(Readline) -g(will)g(install)g(a)g(signal)g(handler)e(for)h Fs(SIGWINCH)p -Ft(.)390 3612 y(The)g(default)g(v)-5 b(alue)31 b(of)g -Fs(rl_catch_sigwinch)25 b Ft(is)31 b(1.)275 3823 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 -3932 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 4042 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 4253 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 4253 V 51 w(clean)m(up)p 916 -4253 V 48 w(after)p 1200 4253 V 49 w(signal)45 b Fe(\()p -Fs(void)p Fe(\))390 4362 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 4472 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 4581 y(v)-5 b(alues)31 b(of)f -Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p -Ft(.)3350 4792 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 4792 V 51 w(free)p 723 4792 V 49 w(line)p -953 4792 V 50 w(state)44 b Fe(\()p Fs(void)p Fe(\))390 -4902 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 -5011 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 5121 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 5230 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 -5340 y(curren)m(t)30 b(input)g(line.)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 Fg(void)39 b Ff(rl)p 484 -299 35 5 v 51 w(reset)p 778 299 V 49 w(after)p 1063 299 -V 50 w(signal)44 b Fe(\()p Fs(void)p Fe(\))390 408 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 -518 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 703 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 -812 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 922 y(size)k(when)f(a)g Fs(SIGWINCH)e -Ft(is)j(receiv)m(ed.)3350 1106 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 1106 V 51 w(resize)p 816 1106 -V 49 w(terminal)45 b Fe(\()p Fs(void)p Fe(\))390 1216 -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 -1400 y([F)-8 b(unction])-3599 b Fg(void)39 b Ff(rl)p -484 1400 V 51 w(set)p 678 1400 V 49 w(screen)p 1040 1400 -V 50 w(size)45 b Fe(\()p Fs(int)30 b(rows,)f(int)g(cols)p -Fe(\))390 1510 y Ft(Set)f(Readline's)h(idea)g(of)f(the)g(terminal)h -(size)g(to)g Fi(ro)m(ws)j Ft(ro)m(ws)c(and)f Fi(cols)33 -b Ft(columns.)40 b(If)27 b(either)i Fi(ro)m(ws)390 1619 -y Ft(or)35 b Fi(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 -1729 y(unc)m(hanged.)275 1913 y(If)d(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 2023 y(the)d(screen)f(dimensions,)g -(Readline's)h(idea)g(of)g(the)f(screen)h(size)g(ma)m(y)g(b)s(e)f -(queried.)3350 2207 y([F)-8 b(unction])-3599 b Fg(void)39 -b Ff(rl)p 484 2207 V 51 w(get)p 690 2207 V 50 w(screen)p -1053 2207 V 49 w(size)45 b Fe(\()p Fs(int)30 b(*rows,)e(int)i(*cols)p -Fe(\))390 2317 y Ft(Return)f(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 2427 y(men)m(ts.)3350 2611 y([F)-8 b(unction])-3599 -b Fg(void)39 b Ff(rl)p 484 2611 V 51 w(reset)p 778 2611 -V 49 w(screen)p 1140 2611 V 50 w(size)44 b Fe(\()p Fs(void)p -Fe(\))390 2721 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 2905 -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 3090 y([F)-8 b(unction])-3599 -b Fg(int)39 b Ff(rl)p 432 3090 V 51 w(set)p 626 3090 -V 49 w(signals)45 b Fe(\()p Fs(void)p Fe(\))390 3199 -y Ft(Install)36 b(Readline's)f(signal)h(handler)e(for)h -Fs(SIGINT)p Ft(,)g Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p Ft(,)f -Fs(SIGALRM)p Ft(,)h Fs(SIGTSTP)p Ft(,)390 3309 y Fs(SIGTTIN)p -Ft(,)23 b Fs(SIGTTOU)p Ft(,)g(and)f Fs(SIGWINCH)p Ft(,)h(dep)s(ending)f -(on)h(the)g(v)-5 b(alues)23 b(of)h Fs(rl_catch_signals)19 -b Ft(and)390 3418 y Fs(rl_catch_sigwinch)p Ft(.)3350 -3603 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -3603 V 51 w(clear)p 722 3603 V 49 w(signals)45 b Fe(\()p -Fs(void)p Fe(\))390 3712 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 3970 y Fr(2.6)68 b(Custom)45 -b(Completers)275 4214 y Ft(T)m(ypically)-8 b(,)35 b(a)f(program)f(that) -h(reads)f(commands)f(from)h(the)g(user)g(has)g(a)g(w)m(a)m(y)i(of)e -(disam)m(biguating)150 4324 y(commands)i(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 4433 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 -4543 y(co)s(op)s(erate)j(to)h(pro)m(vide)e(this)g(service.)150 -4767 y Fh(2.6.1)63 b(Ho)m(w)40 b(Completing)i(W)-10 b(orks)275 -5011 y Ft(In)33 b(order)h(to)h(complete)h(some)e(text,)j(the)d(full)g -(list)h(of)f(p)s(ossible)g(completions)i(m)m(ust)e(b)s(e)f(a)m(v)-5 -b(ailable.)150 5121 y(That)34 b(is,)h(it)g(is)f(not)g(p)s(ossible)g(to) -g(accurately)i(expand)d(a)i(partial)g(w)m(ord)e(without)h(kno)m(wing)h -(all)g(of)f(the)150 5230 y(p)s(ossible)g(w)m(ords)h(whic)m(h)g(mak)m(e) -h(sense)e(in)h(that)h(con)m(text.)56 b(The)34 b(Readline)i(library)f -(pro)m(vides)f(the)i(user)150 5340 y(in)m(terface)f(to)f(completion,)h -(and)e(t)m(w)m(o)i(of)e(the)g(most)h(common)g(completion)g(functions:) -46 b(\014lename)34 b(and)p eop end -%%Page: 42 46 -TeXDict begin 42 45 bop 150 -116 a Ft(42)2600 b(GNU)31 -b(Readline)g(Library)150 299 y(username.)37 b(F)-8 b(or)23 -b(completing)g(other)e(t)m(yp)s(es)h(of)g(text,)j(y)m(ou)d(m)m(ust)f -(write)h(y)m(our)f(o)m(wn)h(completion)h(function.)150 -408 y(This)30 b(section)h(describ)s(es)f(exactly)i(what)e(suc)m(h)g -(functions)g(m)m(ust)g(do,)h(and)f(pro)m(vides)g(an)g(example.)275 -535 y(There)f(are)i(three)g(ma)5 b(jor)30 b(functions)g(used)g(to)h(p)s -(erform)e(completion:)199 662 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 771 y(argumen)m(ts)36 -b(as)g(other)g(bindable)f(Readline)h(functions:)51 b -Fi(coun)m(t)38 b Ft(and)d Fi(in)m(v)m(oking)p 3107 771 -28 4 v 41 w(k)m(ey)p Ft(.)57 b(It)36 b(isolates)330 881 -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 990 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 1100 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 1210 y(desired.)199 1336 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 Fi(gener-)330 -1446 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 -1555 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 -1665 y(completion_entry_functio)o(n)p Ft(.)199 1792 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 1901 -y(a)33 b(string)g(eac)m(h)h(time.)49 b(The)32 b(argumen)m(ts)h(to)h -(the)f(generator)h(function)e(are)h Fi(text)j Ft(and)c -Fi(state)p Ft(.)50 b Fi(text)330 2011 y Ft(is)32 b(the)g(partial)h(w)m -(ord)f(to)h(b)s(e)e(completed.)47 b Fi(state)38 b Ft(is)32 -b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330 -2120 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 2230 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 2339 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 2449 y(the)39 -b(generator)h(function)e(computes)h(the)g(list)g(of)g(p)s(ossible)f -(completions)i(when)e Fi(state)45 b Ft(is)39 b(zero,)330 -2559 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 -2668 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 2778 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 Fi(application-)330 2887 y(sp)s(eci\014c)d(completion)i(function)p -Ft(.)3350 3048 y([F)-8 b(unction])-3599 b Fg(int)39 b -Ff(rl)p 432 3048 35 5 v 51 w(complete)44 b Fe(\()p Fs(int)30 -b(ignore,)e(int)h(invoking_key)p Fe(\))390 3158 y Ft(Complete)i(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 3267 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 3377 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.) -3371 3537 y([V)-8 b(ariable])-3598 b Fg(rl_compentry_func_t)44 -b(*)38 b Ff(rl)p 1359 3537 V 51 w(completion)p 1960 3537 -V 49 w(en)m(try)p 2275 3537 V 50 w(function)390 3647 -y Ft(This)h(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 3757 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 3866 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 Fi(application-sp)s -(eci\014c)390 3976 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 -4085 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 -4286 y Fh(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)275 -4522 y Ft(Here)30 b(is)h(the)f(complete)i(list)f(of)g(callable)h -(completion)g(functions)e(presen)m(t)g(in)g(Readline.)3350 -4682 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -4682 V 51 w(complete)p 933 4682 V 49 w(in)m(ternal)k -Fe(\()p Fs(int)30 b(what_to_do)p Fe(\))390 4792 y Ft(Complete)37 -b(the)g(w)m(ord)f(at)i(or)e(b)s(efore)g(p)s(oin)m(t.)60 -b Fi(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 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)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 -(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 -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: 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 Fg(int)39 b Ff(rl)p 432 -299 35 5 v 51 w(complete)44 b Fe(\()p Fs(int)30 b(ignore,)e(int)h -(invoking_key)p Fe(\))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(algorithm)f(\(see)g -Fs(rl_completion_matches\(\))27 b Ft(and)390 628 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 -b Ft(with)30 b(an)g(argumen)m(t)h(dep)s(ending)e(on)h -Fi(in)m(v)m(oking)p 3314 737 28 4 v 41 w(k)m(ey)p Ft(.)3350 -913 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -913 35 5 v 51 w(p)s(ossible)p 878 913 V 49 w(completions)45 -b Fe(\()p Fs(int)30 b(count,)e(int)i(invoking_key)p Fe(\))390 -1023 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 1132 y(complete_internal\(\))25 -b Ft(with)30 b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 -1308 y([F)-8 b(unction])-3599 b Fg(int)39 b Ff(rl)p 432 -1308 V 51 w(insert)p 769 1308 V 49 w(completions)44 b -Fe(\()p Fs(int)30 b(count,)f(int)g(invoking_key)p Fe(\))390 -1418 y Ft(Insert)k(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 -1527 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 1637 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p -Ft('.)3350 1813 y([F)-8 b(unction])-3599 b Fg(int)39 -b Ff(rl)p 432 1813 V 51 w(completion)p 1033 1813 V 49 -w(mo)s(de)45 b Fe(\()p Fs(rl_command_func_t)26 b(*cfunc)p -Fe(\))390 1922 y Ft(Returns)50 b(the)g(apppriate)h(v)-5 -b(alue)50 b(to)i(pass)e(to)h Fs(rl_complete_internal\(\))44 -b Ft(dep)s(ending)49 b(on)390 2032 y(whether)40 b Fi(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 2142 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 2251 -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 -2427 y([F)-8 b(unction])-3599 b Fg(char)39 b(**)g Ff(rl)p -627 2427 V 51 w(completion)p 1228 2427 V 49 w(matc)m(hes)44 -b Fe(\()p Fs(const)30 b(char)f(*text,)565 2537 y(rl_compentry_func_t)c -(*entry_func)p Fe(\))390 2646 y Ft(Returns)37 b(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 -Fi(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 2756 -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 2865 y(for)26 b Fi(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 2975 y(with)k(a)h -Fs(NULL)e Ft(p)s(oin)m(ter.)390 3107 y Fi(en)m(try)p -603 3107 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 3216 y Fi(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 -3326 y(subsequen)m(t)33 b(calls.)52 b Fi(en)m(try)p 1320 -3326 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 3435 -y(more)d(matc)m(hes.)3350 3611 y([F)-8 b(unction])-3599 -b Fg(char)39 b(*)g Ff(rl)p 575 3611 35 5 v 50 w(\014lename)p -1042 3611 V 49 w(completion)p 1641 3611 V 49 w(function)44 -b Fe(\()p Fs(const)30 b(char)f(*text,)g(int)565 3721 -y(state)p Fe(\))390 3830 y Ft(A)d(generator)h(function)e(for)g -(\014lename)h(completion)h(in)e(the)h(general)h(case.)40 -b Fi(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 3940 -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 -4050 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i -(this)e(and)g(other)g(Readline)h(functions\).)3350 4225 -y([F)-8 b(unction])-3599 b Fg(char)39 b(*)g Ff(rl)p 575 -4225 V 50 w(username)p 1102 4225 V 50 w(completion)p -1702 4225 V 49 w(function)44 b Fe(\()p Fs(const)29 b(char)g(*text,)g -(int)565 4335 y(state)p Fe(\))390 4445 y Ft(A)g(completion)g(generator) -h(for)e(usernames.)40 b Fi(text)31 b Ft(con)m(tains)f(a)f(partial)g -(username)f(preceded)g(b)m(y)390 4554 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 Fi(state)37 b Ft(is)31 b(zero)g(on)390 -4664 y(the)g(\014rst)e(call)j(and)e(non-zero)h(for)f(subsequen)m(t)f -(calls.)150 4880 y Fh(2.6.3)63 b(Completion)41 b(V)-10 -b(ariables)3371 5121 y Ft([V)i(ariable])-3598 b Fg(rl_compentry_func_t) -44 b(*)38 b Ff(rl)p 1359 5121 V 51 w(completion)p 1960 -5121 V 49 w(en)m(try)p 2275 5121 V 50 w(function)390 -5230 y Ft(A)c(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: 44 48 -TeXDict begin 44 47 bop 150 -116 a Ft(44)2600 b(GNU)31 -b(Readline)g(Library)3371 299 y([V)-8 b(ariable])-3598 -b Fg(rl_completion_func_t)44 b(*)39 b Ff(rl)p 1412 299 -35 5 v 50 w(attempted)p 1982 299 V 48 w(completion)p -2580 299 V 49 w(function)390 408 y Ft(A)c(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 Fi(text)p -Ft(,)26 b Fi(start)p Ft(,)f(and)d Fi(end)p Ft(.)38 b -Fi(start)25 b Ft(and)e Fi(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 Fi(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 Fg(rl_quote_func_t)43 -b(*)38 b Ff(rl)p 1150 1351 V 51 w(\014lename)p 1618 1351 -V 48 w(quoting)p 2045 1351 V 51 w(function)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 -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 -Fi(text)p Ft(,)k Fi(matc)m(h)p 1438 1789 28 4 v 41 w(t)m(yp)s(e)p -Ft(,)f(and)d Fi(quote)p 2119 1789 V 41 w(p)s(oin)m(ter)p -Ft(.)60 b(The)36 b Fi(text)k Ft(is)d(the)g(\014lename)g(to)h(b)s(e)390 -1899 y(quoted.)76 b(The)42 b Fi(matc)m(h)p 1210 1899 -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 -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 Fi(quote)p 1751 2118 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 -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 Fg(rl_dequote_func_t)43 -b(*)c Ff(rl)p 1255 2403 35 5 v 50 w(\014lename)p 1722 -2403 V 49 w(dequoting)p 2267 2403 V 49 w(function)390 -2513 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(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(\014lesystem.)64 b(It)38 b(is)g(called)i(with)d -Fi(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 Fi(quote)p 2014 2841 28 4 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 -Fs(')p Ft(')f(or)g(`)p Fs(")p Ft('\).)46 b(If)32 b Fi(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 Fg(rl_linebuf_func_t)43 -b(*)c Ff(rl)p 1255 3236 35 5 v 50 w(c)m(har)p 1520 3236 -V 50 w(is)p 1647 3236 V 50 w(quoted)p 2040 3236 V 50 -w(p)390 3345 y Ft(A)e(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(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 b(The)24 -b(function)h(is)g(called)h(with)e(t)m(w)m(o)i(argumen)m(ts:)39 -b Fi(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 3674 -y(line,)31 b(and)g Fi(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 -(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 Fg -(rl_compignore_func_t)44 b(*)39 b Ff(rl)p 1412 4069 V -50 w(ignore)p 1772 4069 V 50 w(some)p 2072 4069 V 51 -w(completions)p 2718 4069 V 50 w(function)390 4178 y -Ft(This)e(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(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(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(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 b Fg(rl_icppfunc_t)42 b(*)d -Ff(rl)p 1046 4792 V 50 w(directory)p 1552 4792 V 50 w(completion)p -2152 4792 V 49 w(ho)s(ok)390 4902 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)37 -b(completes.)61 b(It)36 b(is)h(called)g(with)g(the)f(address)g(of)h(a)g -(string)f(\(the)h(curren)m(t)f(directory)390 5121 y(name\))i(as)f(an)g -(argumen)m(t,)i(and)e(ma)m(y)h(mo)s(dify)e(that)i(string.)60 -b(If)37 b(the)g(string)h(is)f(replaced)g(with)390 5230 -y(a)j(new)g(string,)i(the)e(old)g(v)-5 b(alue)41 b(should)e(b)s(e)g -(freed.)69 b(An)m(y)40 b(mo)s(di\014ed)f(directory)h(name)g(should)390 -5340 y(ha)m(v)m(e)30 b(a)g(trailing)g(slash.)40 b(The)29 -b(mo)s(di\014ed)f(v)-5 b(alue)30 b(will)f(b)s(e)g(displa)m(y)m(ed)g(as) -h(part)f(of)g(the)g(completion,)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)390 -299 y(replacing)29 b(the)f(directory)h(p)s(ortion)f(of)g(the)h -(pathname)f(the)g(user)g(t)m(yp)s(ed.)39 b(It)28 b(returns)f(an)i(in)m -(teger)390 408 y(that)34 b(should)e(b)s(e)g(non-zero)i(if)e(the)i -(function)e(mo)s(di\014es)h(its)g(directory)g(argumen)m(t.)49 -b(It)34 b(could)f(b)s(e)390 518 y(used)d(to)h(expand)e(sym)m(b)s(olic)i -(links)f(or)h(shell)f(v)-5 b(ariables)31 b(in)f(pathnames.)3371 -724 y([V)-8 b(ariable])-3598 b Fg(rl_compdisp_func_t)44 -b(*)38 b Ff(rl)p 1307 724 35 5 v 51 w(completion)p 1908 -724 V 49 w(displa)m(y)p 2307 724 V 49 w(matc)m(hes)p -2762 724 V 50 w(ho)s(ok)390 833 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 943 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 -1052 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 Fi(matc)m(hes)p -Ft(,)39 b Fs(int)d Fi(n)m(um)p 3370 1052 28 4 v 40 w(matc)m(hes)p -Ft(,)390 1162 y Fs(int)26 b Fi(max)p 735 1162 V 40 w(length)p -Ft(\))h(where)f Fi(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m -(hing)g(strings,)h Fi(n)m(um)p 3152 1162 V 39 w(matc)m(hes)j -Ft(is)c(the)390 1271 y(n)m(um)m(b)s(er)h(of)h(strings)g(in)g(that)g -(arra)m(y)-8 b(,)31 b(and)d Fi(max)p 2020 1271 V 40 w(length)i -Ft(is)f(the)g(length)h(of)f(the)g(longest)h(string)f(in)390 -1381 y(that)g(arra)m(y)-8 b(.)41 b(Readline)28 b(pro)m(vides)g(a)h(con) -m(v)m(enience)h(function,)e Fs(rl_display_match_list)p -Ft(,)23 b(that)390 1491 y(tak)m(es)36 b(care)g(of)f(doing)g(the)g -(displa)m(y)f(to)i(Readline's)f(output)g(stream.)54 b(That)35 -b(function)f(ma)m(y)i(b)s(e)390 1600 y(called)c(from)d(this)i(ho)s(ok.) -3371 1806 y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g -Ff(rl)p 875 1806 35 5 v 50 w(basic)p 1173 1806 V 50 w(w)m(ord)p -1471 1806 V 50 w(break)p 1801 1806 V 50 w(c)m(haracters)390 -1915 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 -2025 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 2134 y(completion)c(in)e(Bash:)41 -b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 2340 -y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g Ff(rl)p -875 2340 V 50 w(basic)p 1173 2340 V 50 w(quote)p 1502 -2340 V 50 w(c)m(haracters)390 2450 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 -2655 y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g -Ff(rl)p 875 2655 V 50 w(completer)p 1422 2655 V 49 w(w)m(ord)p -1719 2655 V 50 w(break)p 2049 2655 V 50 w(c)m(haracters)390 -2765 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 -2874 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 3080 y([V)-8 b(ariable])-3598 b Fg(rl_cpvfunc_t)42 -b(*)c Ff(rl)p 993 3080 V 51 w(completion)p 1594 3080 -V 49 w(w)m(ord)p 1891 3080 V 50 w(break)p 2221 3080 V -50 w(ho)s(ok)390 3189 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 3299 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 3408 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 3518 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 3628 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 3833 y([V)-8 b(ariable])-3598 -b Fg(const)40 b(char)f(*)g Ff(rl)p 875 3833 V 50 w(completer)p -1422 3833 V 49 w(quote)p 1750 3833 V 50 w(c)m(haracters)390 -3943 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 4052 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 4162 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 4271 y(list.)3371 -4477 y([V)-8 b(ariable])-3598 b Fg(const)40 b(char)f(*)g -Ff(rl)p 875 4477 V 50 w(\014lename)p 1342 4477 V 49 w(quote)p -1670 4477 V 50 w(c)m(haracters)390 4587 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 4696 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 4902 y([V)-8 b(ariable])-3598 b Fg(const)40 -b(char)f(*)g Ff(rl)p 875 4902 V 50 w(sp)s(ecial)p 1261 -4902 V 49 w(pre\014xes)390 5011 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 Fi(text)k Ft(when)390 5121 -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 -5230 y(kind)j(of)i(completing)g(to)g(do.)41 b(F)-8 b(or)30 -b(instance,)g(Bash)g(sets)f(this)g(v)-5 b(ariable)31 -b(to)f Fs(")p Ft($)p Fs(@")e Ft(so)i(that)g(it)g(can)390 -5340 y(complete)i(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)p -eop end -%%Page: 46 50 -TeXDict begin 46 49 bop 150 -116 a Ft(46)2600 b(GNU)31 -b(Readline)g(Library)3371 299 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 299 35 5 v 51 w(completion)p -1033 299 V 49 w(query)p 1366 299 V 51 w(items)390 408 -y Ft(Up)d(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 -518 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 628 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 819 y([V)-8 -b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 819 V 51 w(completion)p -1033 819 V 49 w(app)s(end)p 1450 819 V 48 w(c)m(haracter)390 -929 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 -1039 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 1148 y(\(`)31 b('\).)86 b(Setting)46 b(this)f(to)h(the)g -(n)m(ull)f(c)m(haracter)i(\(`)p Fs(\\0)p Ft('\))f(prev)m(en)m(ts)g(an)m -(ything)g(b)s(eing)f(app)s(ended)390 1258 y(automatically)-8 -b(.)66 b(This)37 b(can)h(b)s(e)f(c)m(hanged)h(in)g(application-sp)s -(eci\014c)h(completion)g(functions)e(to)390 1367 y(pro)m(vide)j(the)g -(\\most)g(sensible)g(w)m(ord)f(separator)i(c)m(haracter")h(according)e -(to)h(an)e(application-)390 1477 y(sp)s(eci\014c)30 b(command)g(line)h -(syn)m(tax)g(sp)s(eci\014cation.)3371 1669 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 1669 V 51 w(completion)p 1033 -1669 V 49 w(suppress)p 1509 1669 V 50 w(app)s(end)390 -1778 y Ft(If)33 b(non-zero,)i Fi(rl)p 949 1778 28 4 v -39 w(completion)p 1421 1778 V 42 w(app)s(end)p 1755 1778 -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 1888 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 1998 -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 -2189 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -2189 35 5 v 51 w(completion)p 1033 2189 V 49 w(quote)p -1361 2189 V 50 w(c)m(haracter)390 2299 y Ft(When)d(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 2408 y Fi(rl)p 457 2408 28 4 -v 40 w(completer)p 885 2408 V 41 w(quote)p 1145 2408 -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 -2518 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 -2710 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -2710 35 5 v 51 w(completion)p 1033 2710 V 49 w(suppress)p -1509 2710 V 50 w(quote)390 2819 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 2929 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 3039 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 3230 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p -432 3230 V 51 w(completion)p 1033 3230 V 49 w(found)p -1366 3230 V 50 w(quote)390 3340 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 -3450 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 -3559 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 -3751 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -3751 V 51 w(completion)p 1033 3751 V 49 w(mark)p 1340 -3751 V 51 w(symlink)p 1779 3751 V 51 w(dirs)390 3861 -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 -3970 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 Fi(mark-directories)k -Ft(v)-5 b(ariable.)390 4080 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 4189 y(user's)42 -b(global)h(preference)g(\(set)g(via)g(the)f Fi(mark-symlink)m -(ed-directories)48 b Ft(Readline)43 b(v)-5 b(ariable\))390 -4299 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 4408 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 4518 y(user's)d(preferences)g(are)h(honored.)3371 -4710 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -4710 V 51 w(ignore)p 793 4710 V 50 w(completion)p 1393 -4710 V 49 w(duplicates)390 4819 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 5011 y([V)-8 b(ariable])-3598 -b Fg(int)39 b Ff(rl)p 432 5011 V 51 w(\014lename)p 900 -5011 V 48 w(completion)p 1498 5011 V 50 w(desired)390 -5121 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 5230 y(is)40 b Fn(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 5340 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)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(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 -408 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 -518 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 -702 y([V)d(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 702 -35 5 v 51 w(\014lename)p 900 702 V 48 w(quoting)p 1327 -702 V 50 w(desired)390 812 y Ft(Non-zero)29 b(means)f(that)h(the)f -(results)g(of)g(the)g(matc)m(hes)i(are)e(to)h(b)s(e)e(quoted)h(using)g -(double)f(quotes)390 922 y(\(or)43 b(an)f(application-sp)s(eci\014c)i -(quoting)f(mec)m(hanism\))g(if)f(the)h(completed)g(\014lename)g(con)m -(tains)390 1031 y(an)m(y)28 b(c)m(haracters)h(in)e Fs -(rl_filename_quote_chars)p Ft(.)34 b(This)27 b(is)g Fn(always)37 -b Ft(non-zero)28 b(when)f(comple-)390 1141 y(tion)h(is)g(attempted,)h -(and)e(can)h(only)g(b)s(e)f(c)m(hanged)h(within)f(an)h(application-sp)s -(eci\014c)h(completion)390 1250 y(function.)37 b(The)21 -b(quoting)g(is)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 1360 y(quoting_function) -p Ft(.)3371 1544 y([V)-8 b(ariable])-3598 b Fg(int)39 -b Ff(rl)p 432 1544 V 51 w(attempted)p 1003 1544 V 47 -w(completion)p 1600 1544 V 49 w(o)m(v)m(er)390 1654 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 1763 y(completion_function)48 -b Ft(sets)53 b(this)g(v)-5 b(ariable)54 b(to)g(a)f(non-zero)h(v)-5 -b(alue,)60 b(Readline)53 b(will)h(not)390 1873 y(p)s(erform)28 -b(its)i(default)g(\014lename)g(completion)h(ev)m(en)f(if)g(the)f -(application's)i(completion)g(function)390 1983 y(returns)e(no)h(matc)m -(hes.)42 b(It)31 b(should)e(b)s(e)h(set)h(only)f(b)m(y)h(an)f -(application's)i(completion)f(function.)3371 2167 y([V)-8 -b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 2167 V 51 -w(completion)p 1033 2167 V 49 w(t)m(yp)s(e)390 2276 y -Ft(Set)c(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 -2386 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 2496 y(F)-8 b(unctions],)39 b(page)f(42\))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 2605 y(b)s(efore)31 b(an)m(y)h -(application-sp)s(eci\014c)h(completion)g(function)f(is)f(called,)j -(allo)m(wing)f(suc)m(h)e(functions)390 2715 y(to)g(presen)m(t)g(the)f -(same)h(in)m(terface)h(as)e Fs(rl_complete\(\))p Ft(.)3371 -2899 y([V)-8 b(ariable])-3598 b Fg(int)39 b Ff(rl)p 432 -2899 V 51 w(inhibit)p 816 2899 V 48 w(completion)390 -3009 y Ft(If)28 b(this)g(v)-5 b(ariable)29 b(is)f(non-zero,)i -(completion)f(is)f(inhibited.)40 b(The)28 b(completion)h(c)m(haracter)h -(will)f(b)s(e)390 3118 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e -(to)k Fs(self-insert)p Ft(.)150 3342 y Fh(2.6.4)63 b(A)40 -b(Short)i(Completion)g(Example)275 3587 y Ft(Here)20 -b(is)h(a)g(small)f(application)i(demonstrating)f(the)f(use)g(of)h(the)g -(GNU)f(Readline)h(library)-8 b(.)38 b(It)20 b(is)h(called)150 -3696 y Fs(fileman)p Ft(,)35 b(and)g(the)h(source)f(co)s(de)h(resides)f -(in)h(`)p Fs(examples/fileman.c)p Ft('.)51 b(This)35 -b(sample)h(application)150 3806 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: 48 52 -TeXDict begin 48 51 bop 150 -116 a Ft(48)2600 b(GNU)31 -b(Readline)g(Library)390 299 y Fd(/*)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)508 473 y(to)e(manipulate)j(files)e -(and)g(their)h(modes.)f(*/)390 648 y(#include)h(<stdio.h>)390 -735 y(#include)g(<sys/types.h>)390 822 y(#include)g(<sys/file.h>)390 -909 y(#include)g(<sys/stat.h>)390 996 y(#include)g(<sys/errno.h>)390 -1171 y(#include)g(<readline/readline.h>)390 1258 y(#include)g -(<readline/history.h>)390 1432 y(extern)g(char)f(*xmalloc)h(\(\);)390 -1606 y(/*)f(The)g(names)g(of)g(functions)h(that)f(actually)h(do)f(the)g -(manipulation.)i(*/)390 1694 y(int)e(com_list)h(__P\(\(char)g(*\)\);) -390 1781 y(int)f(com_view)h(__P\(\(char)g(*\)\);)390 -1868 y(int)f(com_rename)h(__P\(\(char)h(*\)\);)390 1955 -y(int)e(com_stat)h(__P\(\(char)g(*\)\);)390 2042 y(int)f(com_pwd)h -(__P\(\(char)g(*\)\);)390 2130 y(int)f(com_delete)h(__P\(\(char)h -(*\)\);)390 2217 y(int)e(com_help)h(__P\(\(char)g(*\)\);)390 -2304 y(int)f(com_cd)g(__P\(\(char)i(*\)\);)390 2391 y(int)e(com_quit)h -(__P\(\(char)g(*\)\);)390 2565 y(/*)f(A)f(structure)i(which)g(contains) -g(information)h(on)d(the)h(commands)h(this)f(program)508 -2653 y(can)g(understand.)h(*/)390 2827 y(typedef)g(struct)f({)468 -2914 y(char)h(*name;)f(/*)g(User)g(printable)h(name)f(of)g(the)g -(function.)h(*/)468 3001 y(rl_icpfunc_t)h(*func;)f(/*)f(Function)h(to)e -(call)i(to)e(do)h(the)g(job.)g(*/)468 3088 y(char)h(*doc;)f(/*)g -(Documentation)i(for)e(this)g(function.)80 b(*/)390 3176 -y(})39 b(COMMAND;)390 3350 y(COMMAND)i(commands[])g(=)f({)468 -3437 y({)g("cd",)g(com_cd,)h("Change)g(to)f(directory)h(DIR")f(},)468 -3524 y({)g("delete",)h(com_delete,)h("Delete)f(FILE")f(},)468 -3611 y({)g("help",)h(com_help,)g("Display)g(this)f(text")h(},)468 -3699 y({)f("?",)g(com_help,)h("Synonym)g(for)f(`help'")h(},)468 -3786 y({)f("list",)h(com_list,)g("List)f(files)h(in)e(DIR")i(},)468 -3873 y({)f("ls",)g(com_list,)i("Synonym)f(for)f(`list'")g(},)468 -3960 y({)g("pwd",)g(com_pwd,)i("Print)e(the)g(current)h(working)g -(directory")g(},)468 4047 y({)f("quit",)h(com_quit,)g("Quit)f(using)h -(Fileman")g(},)468 4134 y({)f("rename",)h(com_rename,)h("Rename)f(FILE) -f(to)g(NEWNAME")h(},)468 4222 y({)f("stat",)h(com_stat,)g("Print)g(out) -f(statistics)h(on)f(FILE")g(},)468 4309 y({)g("view",)h(com_view,)g -("View)f(the)g(contents)h(of)f(FILE")g(},)468 4396 y({)g(\(char)g -(*\)NULL,)h(\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390 -4483 y(};)390 4658 y(/*)f(Forward)g(declarations.)j(*/)390 -4745 y(char)d(*stripwhite)i(\(\);)390 4832 y(COMMAND)f(*find_command)h -(\(\);)390 5006 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i -(from)f(argv[0].)h(*/)390 5093 y(char)f(*progname;)390 -5268 y(/*)g(When)g(non-zero,)h(this)f(means)h(the)f(user)g(is)f(done)h -(using)h(this)f(program.)h(*/)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 Fd(int)40 b(done;)390 473 y(char)g(*)390 560 y(dupstr)h(\(s\))586 -648 y(int)f(s;)390 735 y({)468 822 y(char)h(*r;)468 996 -y(r)f(=)f(xmalloc)i(\(strlen)g(\(s\))f(+)f(1\);)468 1083 -y(strcpy)i(\(r,)f(s\);)468 1171 y(return)h(\(r\);)390 -1258 y(})390 1432 y(main)f(\(argc,)h(argv\))586 1519 -y(int)f(argc;)586 1606 y(char)g(**argv;)390 1694 y({)468 -1781 y(char)h(*line,)f(*s;)468 1955 y(progname)h(=)f(argv[0];)468 -2130 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g(completer.)h(*/) -468 2304 y(/*)f(Loop)g(reading)h(and)f(executing)h(lines)g(until)f(the) -g(user)g(quits.)h(*/)468 2391 y(for)f(\()g(;)f(done)h(==)g(0;)g(\))547 -2478 y({)625 2565 y(line)g(=)g(readline)h(\("FileMan:)h("\);)625 -2740 y(if)e(\(!line\))704 2827 y(break;)625 3001 y(/*)g(Remove)h -(leading)f(and)g(trailing)h(whitespace)h(from)e(the)g(line.)743 -3088 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 3176 y(and)f(execute)h(it.)f(*/)625 -3263 y(s)g(=)f(stripwhite)j(\(line\);)625 3437 y(if)e(\(*s\))704 -3524 y({)782 3611 y(add_history)i(\(s\);)782 3699 y(execute_line)g -(\(s\);)704 3786 y(})625 3960 y(free)e(\(line\);)547 -4047 y(})468 4134 y(exit)h(\(0\);)390 4222 y(})390 4396 -y(/*)f(Execute)g(a)g(command)h(line.)f(*/)390 4483 y(int)390 -4570 y(execute_line)i(\(line\))586 4658 y(char)e(*line;)390 -4745 y({)468 4832 y(register)h(int)f(i;)468 4919 y(COMMAND)h(*command;) -468 5006 y(char)g(*word;)468 5181 y(/*)f(Isolate)h(the)f(command)h -(word.)f(*/)468 5268 y(i)g(=)f(0;)p eop end -%%Page: 50 54 -TeXDict begin 50 53 bop 150 -116 a Ft(50)2600 b(GNU)31 -b(Readline)g(Library)468 299 y Fd(while)41 b(\(line[i])g(&&)f -(whitespace)h(\(line[i]\)\))547 386 y(i++;)468 473 y(word)g(=)e(line)h -(+)g(i;)468 648 y(while)h(\(line[i])g(&&)f(!whitespace)h(\(line[i]\)\)) -547 735 y(i++;)468 909 y(if)f(\(line[i]\))547 996 y(line[i++])h(=)f -('\\0';)468 1171 y(command)h(=)f(find_command)i(\(word\);)468 -1345 y(if)e(\(!command\))547 1432 y({)625 1519 y(fprintf)h(\(stderr,)g -("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625 -1606 y(return)f(\(-1\);)547 1694 y(})468 1868 y(/*)f(Get)g(argument)h -(to)f(command,)h(if)f(any.)g(*/)468 1955 y(while)h(\(whitespace)h -(\(line[i]\)\))547 2042 y(i++;)468 2217 y(word)f(=)e(line)h(+)g(i;)468 -2391 y(/*)g(Call)g(the)g(function.)h(*/)468 2478 y(return)g -(\(\(*\(command->func\)\))j(\(word\)\);)390 2565 y(})390 -2740 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 2827 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 2914 y(COMMAND)g(*)390 3001 y(find_command)h(\(name\)) -586 3088 y(char)e(*name;)390 3176 y({)468 3263 y(register)h(int)f(i;) -468 3437 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547 -3524 y(if)d(\(strcmp)g(\(name,)h(commands[i].name\))i(==)d(0\))625 -3611 y(return)h(\(&commands[i]\);)468 3786 y(return)g(\(\(COMMAND)g -(*\)NULL\);)390 3873 y(})390 4047 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 4134 y(into)g(STRING.)h(*/)390 4222 -y(char)f(*)390 4309 y(stripwhite)h(\(string\))586 4396 -y(char)f(*string;)390 4483 y({)468 4570 y(register)h(char)g(*s,)f(*t;) -468 4745 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\))547 -4832 y(;)468 5006 y(if)g(\(*s)g(==)g(0\))547 5093 y(return)g(\(s\);)468 -5268 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;)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)468 -299 y Fd(while)41 b(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547 -386 y(t--;)468 473 y(*++t)f(=)e('\\0';)468 648 y(return)i(s;)390 -735 y(})390 909 y(/*)f(******************************)q(*****)q(****)q -(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 -996 y(/*)2589 b(*/)390 1083 y(/*)707 b(Interface)41 b(to)f(Readline)h -(Completion)629 b(*/)390 1171 y(/*)2589 b(*/)390 1258 -y(/*)40 b(******************************)q(*****)q(****)q(*****)q(****) -q(****)q(*****)q(****)q(***)45 b(*/)390 1432 y(char)40 -b(*command_generator)j(__P\(\(const)f(char)e(*,)g(int\)\);)390 -1519 y(char)g(**fileman_completion)k(__P\(\(const)d(char)g(*,)e(int,)h -(int\)\);)390 1694 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)508 -1781 y(complete)h(on)e(command)i(names)g(if)e(this)h(is)g(the)g(first)g -(word)h(in)e(the)h(line,)g(or)508 1868 y(on)f(filenames)j(if)d(not.)h -(*/)390 1955 y(initialize_readline)k(\(\))390 2042 y({)468 -2130 y(/*)c(Allow)g(conditional)i(parsing)f(of)f(the)g(~/.inputrc)h -(file.)g(*/)468 2217 y(rl_readline_name)i(=)d("FileMan";)468 -2391 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h(a)g(crack)g -(first.)h(*/)468 2478 y(rl_attempted_completion_fun)q(ctio)q(n)k(=)39 -b(fileman_completion;)390 2565 y(})390 2740 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)508 2827 y(bound)h(the)g(region)h(of)e(rl_line_buffer)k -(that)d(contains)h(the)f(word)g(to)508 2914 y(complete.)80 -b(TEXT)40 b(is)g(the)g(word)g(to)g(complete.)80 b(We)40 -b(can)g(use)g(the)g(entire)508 3001 y(contents)h(of)e(rl_line_buffer)k -(in)d(case)g(we)f(want)h(to)g(do)g(some)g(simple)508 -3088 y(parsing.)80 b(Returnthe)41 b(array)g(of)e(matches,)i(or)f(NULL)g -(if)g(there)g(aren't)h(any.)f(*/)390 3176 y(char)g(**)390 -3263 y(fileman_completion)j(\(text,)e(start,)g(end\))586 -3350 y(const)f(char)h(*text;)586 3437 y(int)f(start,)h(end;)390 -3524 y({)468 3611 y(char)g(**matches;)468 3786 y(matches)g(=)f(\(char)g -(**\)NULL;)468 3960 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 -4047 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 4134 y(directory.)i(*/)468 -4222 y(if)e(\(start)h(==)e(0\))547 4309 y(matches)i(=)e -(rl_completion_matches)44 b(\(text,)d(command_generator\);)468 -4483 y(return)g(\(matches\);)390 4570 y(})390 4745 y(/*)f(Generator)h -(function)g(for)f(command)h(completion.)81 b(STATE)40 -b(lets)g(us)508 4832 y(know)g(whether)h(to)e(start)i(from)f(scratch;)h -(without)g(any)f(state)508 4919 y(\(i.e.)g(STATE)g(==)g(0\),)g(then)g -(we)g(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390 -5006 y(char)f(*)390 5093 y(command_generator)j(\(text,)e(state\))586 -5181 y(const)f(char)h(*text;)586 5268 y(int)f(state;)p -eop end -%%Page: 52 56 -TeXDict begin 52 55 bop 150 -116 a Ft(52)2600 b(GNU)31 -b(Readline)g(Library)390 299 y Fd({)468 386 y(static)41 -b(int)f(list_index,)i(len;)468 473 y(char)f(*name;)468 -648 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g(to)g(complete,)h -(initialize)h(now.)79 b(This)586 735 y(includes)41 b(saving)g(the)f -(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)586 822 -y(initializing)g(the)e(index)g(variable)h(to)f(0.)g(*/)468 -909 y(if)g(\(!state\))547 996 y({)625 1083 y(list_index)i(=)d(0;)625 -1171 y(len)h(=)g(strlen)g(\(text\);)547 1258 y(})468 -1432 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e -(from)h(the)586 1519 y(command)g(list.)f(*/)468 1606 -y(while)h(\(name)f(=)g(commands[list_index].name\))547 -1694 y({)625 1781 y(list_index++;)625 1955 y(if)g(\(strncmp)h(\(name,)g -(text,)f(len\))g(==)g(0\))704 2042 y(return)g(\(dupstr\(name\)\);)547 -2130 y(})468 2304 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h -(NULL.)f(*/)468 2391 y(return)h(\(\(char)g(*\)NULL\);)390 -2478 y(})390 2653 y(/*)f(******************************)q(*****)q(****) -q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390 -2740 y(/*)2589 b(*/)390 2827 y(/*)903 b(FileMan)41 b(Commands)1060 -b(*/)390 2914 y(/*)2589 b(*/)390 3001 y(/*)40 b -(******************************)q(*****)q(****)q(*****)q(****)q(****)q -(*****)q(****)q(***)45 b(*/)390 3176 y(/*)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 3263 y(commands.)h(*/)390 3350 y(static)g(char)f -(syscom[1024];)390 3524 y(/*)g(List)g(the)g(file\(s\))h(named)f(in)g -(arg.)g(*/)390 3611 y(com_list)h(\(arg\))586 3699 y(char)f(*arg;)390 -3786 y({)468 3873 y(if)g(\(!arg\))547 3960 y(arg)g(=)f("";)468 -4134 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h(\045s",)f(arg\);)468 -4222 y(return)h(\(system)g(\(syscom\)\);)390 4309 y(})390 -4483 y(com_view)g(\(arg\))586 4570 y(char)f(*arg;)390 -4658 y({)468 4745 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547 -4832 y(return)f(1;)468 5006 y(sprintf)h(\(syscom,)g("more)g(\045s",)f -(arg\);)468 5093 y(return)h(\(system)g(\(syscom\)\);)390 -5181 y(})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)390 -299 y Fd(com_rename)41 b(\(arg\))586 386 y(char)f(*arg;)390 -473 y({)468 560 y(too_dangerous)j(\("rename"\);)468 648 -y(return)e(\(1\);)390 735 y(})390 909 y(com_stat)g(\(arg\))586 -996 y(char)f(*arg;)390 1083 y({)468 1171 y(struct)h(stat)f(finfo;)468 -1345 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547 -1432 y(return)f(\(1\);)468 1606 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==) -e(-1\))547 1694 y({)625 1781 y(perror)i(\(arg\);)625 -1868 y(return)g(\(1\);)547 1955 y(})468 2130 y(printf)g(\("Statistics)h -(for)e(`\045s':\\n",)h(arg\);)468 2304 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",) -i(arg,)782 2391 y(finfo.st_nlink,)782 2478 y(\(finfo.st_nlink)h(==)d -(1\))f(?)h("")f(:)h("s",)782 2565 y(finfo.st_size,)782 -2653 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468 -2740 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g -(\(&finfo.st_ctime\)\);)468 2827 y(printf)h(\(")236 b(Last)40 -b(access)h(at:)f(\045s",)g(ctime)g(\(&finfo.st_atime\)\);)468 -2914 y(printf)h(\(")157 b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g -(\(&finfo.st_mtime\)\);)468 3001 y(return)h(\(0\);)390 -3088 y(})390 3263 y(com_delete)g(\(arg\))586 3350 y(char)f(*arg;)390 -3437 y({)468 3524 y(too_dangerous)j(\("delete"\);)468 -3611 y(return)e(\(1\);)390 3699 y(})390 3873 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 -3960 y(not)g(present.)h(*/)390 4047 y(com_help)g(\(arg\))586 -4134 y(char)f(*arg;)390 4222 y({)468 4309 y(register)h(int)f(i;)468 -4396 y(int)g(printed)h(=)f(0;)468 4570 y(for)g(\(i)g(=)f(0;)h -(commands[i].name;)j(i++\))547 4658 y({)625 4745 y(if)d(\(!*arg)h(||)e -(\(strcmp)i(\(arg,)g(commands[i].name\))i(==)c(0\)\))704 -4832 y({)782 4919 y(printf)i(\("\045s\\t\\t\045s.\\n",)i -(commands[i].name,)g(commands[i].doc\);)782 5006 y(printed++;)704 -5093 y(})547 5181 y(})p eop end -%%Page: 54 58 -TeXDict begin 54 57 bop 150 -116 a Ft(54)2600 b(GNU)31 -b(Readline)g(Library)468 299 y Fd(if)40 b(\(!printed\))547 -386 y({)625 473 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79 -b(Possibilties)42 b(are:\\n",)f(arg\);)625 648 y(for)f(\(i)g(=)f(0;)h -(commands[i].name;)j(i++\))704 735 y({)782 822 y(/*)d(Print)g(in)g(six) -g(columns.)h(*/)782 909 y(if)f(\(printed)h(==)f(6\))861 -996 y({)939 1083 y(printed)h(=)e(0;)939 1171 y(printf)i(\("\\n"\);)861 -1258 y(})782 1432 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782 -1519 y(printed++;)704 1606 y(})625 1781 y(if)f(\(printed\))704 -1868 y(printf)g(\("\\n"\);)547 1955 y(})468 2042 y(return)h(\(0\);)390 -2130 y(})390 2304 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390 -2391 y(com_cd)h(\(arg\))586 2478 y(char)f(*arg;)390 2565 -y({)468 2653 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547 -2740 y({)625 2827 y(perror)h(\(arg\);)625 2914 y(return)g(1;)547 -3001 y(})468 3176 y(com_pwd)g(\(""\);)468 3263 y(return)g(\(0\);)390 -3350 y(})390 3524 y(/*)f(Print)g(out)g(the)g(current)h(working)g -(directory.)g(*/)390 3611 y(com_pwd)g(\(ignore\))586 -3699 y(char)f(*ignore;)390 3786 y({)468 3873 y(char)h(dir[1024],)g(*s;) -468 4047 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468 -4134 y(if)g(\(s)g(==)f(0\))547 4222 y({)625 4309 y(printf)i(\("Error)g -(getting)g(pwd:)f(\045s\\n",)g(dir\);)625 4396 y(return)h(1;)547 -4483 y(})468 4658 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i -(dir\);)468 4745 y(return)g(0;)390 4832 y(})390 5006 -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)508 5093 y(non-zero.)h(*/)390 -5181 y(com_quit)g(\(arg\))586 5268 y(char)f(*arg;)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 Fd({)468 386 y(done)41 b(=)e(1;)468 473 y(return)i(\(0\);)390 -560 y(})390 735 y(/*)f(Function)h(which)f(tells)g(you)g(that)h(you)e -(can't)i(do)e(this.)i(*/)390 822 y(too_dangerous)h(\(caller\))586 -909 y(char)e(*caller;)390 996 y({)468 1083 y(fprintf)h(\(stderr,)821 -1171 y("\045s:)g(Too)f(dangerous)h(for)f(me)f(to)h(distribute.\\n",)821 -1258 y(caller\);)468 1345 y(fprintf)h(\(stderr,)g("Write)g(it)f -(yourself.\\n"\);)390 1432 y(})390 1606 y(/*)g(Return)g(non-zero)h(if)f -(ARG)g(is)g(a)f(valid)h(argument)h(for)f(CALLER,)508 -1694 y(else)g(print)g(an)g(error)g(message)h(and)f(return)h(zero.)f(*/) -390 1781 y(int)390 1868 y(valid_argument)i(\(caller,)f(arg\))586 -1955 y(char)f(*caller,)h(*arg;)390 2042 y({)468 2130 -y(if)f(\(!arg)g(||)g(!*arg\))547 2217 y({)625 2304 y(fprintf)h -(\(stderr,)g("\045s:)f(Argument)h(required.\\n",)i(caller\);)625 -2391 y(return)e(\(0\);)547 2478 y(})468 2653 y(return)g(\(1\);)390 -2740 y(})p eop end -%%Page: 56 60 -TeXDict begin 56 59 bop 150 -116 a Ft(56)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 57 61 -TeXDict begin 57 60 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(57)150 299 -y Fp(App)t(endix)52 b(A)40 b(Cop)l(ying)51 b(This)j(Man)l(ual)150 -690 y Fr(A.1)67 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h -(License)1396 909 y Ft(V)-8 b(ersion)31 b(1.2,)h(No)m(v)m(em)m(b)s(er)g -(2002)390 1052 y(Cop)m(yrigh)m(t)842 1049 y(c)817 1052 -y Fq(\015)e Ft(2000,2001,2002)36 b(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) --8 b(oundation,)32 b(Inc.)390 1161 y(59)f(T)-8 b(emple)31 -b(Place,)h(Suite)e(330,)i(Boston,)g(MA)61 b(02111-1307,)35 -b(USA)390 1380 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f(to)h(cop)m(y)g -(and)f(distribute)g(v)m(erbatim)h(copies)390 1490 y(of)g(this)f -(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f(is)f(not)h(allo)m -(w)m(ed.)199 1632 y(0.)61 b(PREAMBLE)330 1770 y(The)37 -b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g(a)g(man)m -(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1880 y(useful)29 b(do)s(cumen)m(t)h Fi(free)36 b Ft(in)29 -b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j -(the)e(e\013ectiv)m(e)j(freedom)330 1990 y(to)f(cop)m(y)g(and)f -(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i -(either)f(commercially)h(or)e(non-)330 2099 y(commercially)-8 -b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f -(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2209 -y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g -(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 -2318 y(made)30 b(b)m(y)h(others.)330 2457 y(This)22 b(License)i(is)f(a) -h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 -b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 -2566 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g -(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 -2676 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) -e(for)g(free)h(soft)m(w)m(are.)330 2814 y(W)-8 b(e)31 -b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h -(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 -2924 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) -65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 -3033 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) -m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g -(to)330 3143 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g -(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 -b(ject)30 b(matter)i(or)330 3252 y(whether)f(it)h(is)f(published)f(as)i -(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h -(License)g(principally)f(for)330 3362 y(w)m(orks)f(whose)h(purp)s(ose)d -(is)j(instruction)f(or)g(reference.)199 3500 y(1.)61 -b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3639 y(This)39 -b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i -(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3748 -y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) -h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 -3858 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f -(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d -(in)330 3967 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j -(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 -4077 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h -(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g -(a)h(licensee,)i(and)330 4187 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 -b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 -b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 -4296 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) -m(yrigh)m(t)j(la)m(w.)330 4435 y(A)i(\\Mo)s(di\014ed)f(V)-8 -b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f -(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4544 y(a)k(p)s(ortion)f -(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s -(di\014cations)f(and/or)h(translated)g(in)m(to)330 4654 -y(another)31 b(language.)330 4792 y(A)26 b(\\Secondary)g(Section")h(is) -f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f -(the)g(Do)s(cumen)m(t)330 4902 y(that)c(deals)g(exclusiv)m(ely)h(with)e -(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f -(Do)s(cumen)m(t)330 5011 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m -(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) -m(tains)h(nothing)f(that)330 5121 y(could)j(fall)h(directly)g(within)f -(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 -b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 -5230 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) -h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 -b(The)330 5340 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e -(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 -b(or)g(with)g(related)p eop end -%%Page: 58 62 -TeXDict begin 58 61 bop 150 -116 a Ft(58)2600 b(GNU)31 -b(Readline)g(Library)330 299 y(matters,)38 b(or)d(of)h(legal,)i -(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s -(osition)f(regarding)330 408 y(them.)330 549 y(The)25 -b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g -(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 -659 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)330 769 y(under)f(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 878 -y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 -b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) -e(In)m(v)-5 b(arian)m(t)330 988 y(Sections.)39 b(If)25 -b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) --5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 -1129 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g -(short)g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 -b(ron)m(t-Co)m(v)m(er)330 1238 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m -(er)j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g -(the)f(Do)s(cumen)m(t)h(is)f(released)g(under)330 1348 -y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 -b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a) -g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1457 -y(b)s(e)k(at)h(most)g(25)g(w)m(ords.)330 1598 y(A)36 -b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h -(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 -b(represen)m(ted)330 1708 y(in)d(a)h(format)g(whose)g(sp)s -(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g -(public,)h(that)f(is)g(suitable)g(for)330 1817 y(revising)c(the)g(do)s -(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) -f(or)f(\(for)h(images)h(com-)330 1927 y(p)s(osed)23 b(of)h(pixels\))g -(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g -(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 2037 -y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g -(formatters)f(or)g(for)g(automatic)i(translation)f(to)330 -2146 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) -g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g -(otherwise)330 2256 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g -(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f -(arranged)g(to)330 2365 y(th)m(w)m(art)27 b(or)g(discourage)g -(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 -b(ransparen)m(t.)39 b(An)27 b(image)330 2475 y(format)35 -b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g -(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g -(is)330 2585 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i -(\\Opaque".)330 2725 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) --8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fm(asci)r(i)g -Ft(without)330 2835 y(markup,)41 b(T)-8 b(exinfo)40 b(input)f(format,)j -(LaT)1775 2855 y(E)1826 2835 y(X)d(input)g(format,)k -Fm(sgml)c Ft(or)g Fm(xml)g Ft(using)g(a)h(publicly)330 -2945 y(a)m(v)-5 b(ailable)34 b Fm(dtd)p Ft(,)d(and)g -(standard-conforming)g(simple)h Fm(html)p Ft(,)f(P)m(ostScript)h(or)f -Fm(pdf)g Ft(designed)g(for)330 3054 y(h)m(uman)37 b(mo)s(di\014cation.) -65 b(Examples)38 b(of)g(transparen)m(t)g(image)i(formats)e(include)g -Fm(png)p Ft(,)i Fm(x)n(cf)e Ft(and)330 3164 y Fm(jpg)p -Ft(.)63 b(Opaque)38 b(formats)g(include)g(proprietary)g(formats)g(that) -h(can)f(b)s(e)g(read)g(and)f(edited)i(only)330 3273 y(b)m(y)g -(proprietary)g(w)m(ord)g(pro)s(cessors,)j Fm(sgml)c Ft(or)i -Fm(xml)e Ft(for)i(whic)m(h)f(the)g Fm(dtd)g Ft(and/or)g(pro)s(cessing) -330 3383 y(to)s(ols)32 b(are)f(not)g(generally)h(a)m(v)-5 -b(ailable,)34 b(and)c(the)h(mac)m(hine-generated)i Fm(html)p -Ft(,)d(P)m(ostScript)i(or)f Fm(pdf)330 3493 y Ft(pro)s(duced)e(b)m(y)h -(some)h(w)m(ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)e(only)-8 -b(.)330 3634 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m -(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f -(follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g -(legibly)-8 b(,)30 b(the)e(material)h(this)f(License)g(requires)f(to)h -(app)s(ear)f(in)h(the)330 3853 y(title)g(page.)40 b(F)-8 -b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h -(an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 -3962 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s -(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 -4072 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 -4213 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g -(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330 -4322 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m -(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330 -4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g -(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m -(h)330 4542 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e -(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29 -b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g -(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e -(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g -(according)g(to)g(this)g(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t) -i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to) -g(the)g(notice)h(whic)m(h)e(states)i(that)330 5011 y(this)34 -b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33 -b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 -5121 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j -(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330 -5230 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8 -b(arran)m(t)m(y)39 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 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h -(this)f(License.)p eop end -%%Page: 59 63 -TeXDict begin 59 62 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(59)199 299 -y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 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 -555 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(and)42 -b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i -(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g -(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f -(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f(License.)40 -b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 -b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g -(further)e(cop)m(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 -b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 -b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d -(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f -(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g -(the)f(conditions)330 1212 y(in)e(section)i(3.)330 1358 -y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g -(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g -(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 -y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 -b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g -(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 -1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f -(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 -1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i -(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 -b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m -(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 -b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 -b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 -2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) -m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f -(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 -b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i -(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e -(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g -(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 -2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) -m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) -330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d -(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 -2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e -(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g -(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f -(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) -g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 -3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 -y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f -(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 -3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g -(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) -330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h -(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d -(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e -(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m -(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 -b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g -(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h -(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e -(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g -(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 -b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 -4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s -(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h -(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i -(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h -(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 -4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g -(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 -4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s -(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m -(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g -(the)f(Do)s(cumen)m(t.)199 4755 y(4.)61 b(MODIFICA)-8 -b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) -h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) -e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) -m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f -(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 -b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 -b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f -(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h -(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s -(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 -b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s -(di\014ed)e(V)-8 b(ersion:)p eop end -%%Page: 60 64 -TeXDict begin 60 63 bop 150 -116 a Ft(60)2600 b(GNU)31 -b(Readline)g(Library)357 299 y(A.)60 b(Use)33 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(an)m(y\))g(a)g(title)h -(distinct)f(from)g(that)g(of)g(the)510 408 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(,)510 518 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 -628 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 758 -y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h(one)g -(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c(for)510 -867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g(Mo)s -(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h(\014v)m -(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s(cumen)m -(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g(few)m -(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g(y)m -(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 -b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g -(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 -b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 -b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) -363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g -(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 -y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g -(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 -1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g -(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 -2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f -(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e -(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f -(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 -y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) -392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g -(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g -(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d -(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 -b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 -b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e -(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f -(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s -(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i -(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m -(tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s -(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m -(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 -b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) -m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m -(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 -b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 -y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) -m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h -(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e -(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) -d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s -(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m -(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k -(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d -(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) -h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m -(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 -4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f -(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 -b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 -b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 -4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 -b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 -b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 -4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 -4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f -(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g -(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 -b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g -(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f -(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g -(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h -(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end -%%Page: 61 65 -TeXDict begin 61 64 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(61)330 299 -y(y)m(our)32 b(option)h(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)330 408 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 518 -y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g -(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) -i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g -(nothing)g(but)330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s -(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 -b(parties|for)g(example,)g(statemen)m(ts)i(of)330 869 -y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) -m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 -978 y(de\014nition)i(of)h(a)f(standard.)330 1110 y(Y)-8 -b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m -(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 -b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e -(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i -(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s -(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f -(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m -(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439 -y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) -g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) -g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g -(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m -(y)g(arrangemen)m(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m -(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g -(not)f(add)g(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the) -f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e -(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 -2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s -(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s -(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g -(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g -(Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 -b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m -(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h -(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g -(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f -(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 -y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s -(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g -(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) -g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 -b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m -(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) -i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 -b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h -(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m -(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g -(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f -(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f -(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g -(the)g(original)h(author)f(or)330 3499 y(publisher)23 -b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m -(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 -3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h -(com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m -(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g -(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 -3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h -(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 -4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 -b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 -b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m -(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 -b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f -(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g -(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k -(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f -(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) -g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 -b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 -b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g -(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 -4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 -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 -(collection,)i(and)d(distribute)g(it)h(individu-)330 -5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g -(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 -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: 62 66 -TeXDict begin 62 65 bop 150 -116 a Ft(62)2600 b(GNU)31 -b(Readline)g(Library)199 299 y(7.)61 b(A)m(GGREGA)-8 -b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 428 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 -538 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m -(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) -330 648 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e -(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 -757 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m -(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 -b(When)330 867 y(the)28 b(Do)s(cumen)m(t)g(is)g(included)f(an)g -(aggregate,)32 b(this)27 b(License)h(do)s(es)g(not)g(apply)f(to)h(the)g -(other)g(w)m(orks)330 976 y(in)i(the)h(aggregate)i(whic)m(h)d(are)h -(not)f(themselv)m(es)i(deriv)-5 b(ativ)m(e)32 b(w)m(orks)e(of)h(the)f -(Do)s(cumen)m(t.)330 1106 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 -b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f -(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1215 -y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f -(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m -(er)330 1325 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m -(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h -(aggregate,)j(or)d(the)330 1435 y(electronic)37 b(equiv)-5 -b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f -(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 -1544 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f -(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1674 y(8.)61 -b(TRANSLA)-8 b(TION)330 1803 y(T)g(ranslation)41 b(is)f(considered)f(a) -i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e -(translations)330 1913 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h -(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 -b(arian)m(t)45 b(Sections)g(with)330 2022 y(translations)h(requires)f -(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i -(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2132 y(include)24 -b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 -b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 -2242 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 -b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f -(License,)i(and)d(all)j(the)330 2351 y(license)42 b(notices)g(in)f(the) -h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 -b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2461 -y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g -(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 -2570 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 -b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f -(translation)i(and)330 2680 y(the)f(original)i(v)m(ersion)e(of)h(this)f -(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m -(ersion)g(will)330 2790 y(prev)-5 b(ail.)330 2919 y(If)28 -b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m -(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 -3029 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m -(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 -3138 y(c)m(hanging)j(the)g(actual)h(title.)199 3268 y(9.)61 -b(TERMINA)-8 b(TION)330 3397 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h -(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3507 y(pro)m(vided)41 -b(for)h(under)e(this)i(License.)75 b(An)m(y)42 b(other)g(attempt)h(to)g -(cop)m(y)-8 b(,)46 b(mo)s(dify)-8 b(,)44 b(sublicense)e(or)330 -3616 y(distribute)36 b(the)h(Do)s(cumen)m(t)g(is)g(v)m(oid,)i(and)d -(will)h(automatically)i(terminate)f(y)m(our)e(righ)m(ts)h(under)330 -3726 y(this)28 b(License.)40 b(Ho)m(w)m(ev)m(er,)31 b(parties)d(who)f -(ha)m(v)m(e)i(receiv)m(ed)g(copies,)h(or)d(righ)m(ts,)i(from)f(y)m(ou)g -(under)e(this)330 3836 y(License)37 b(will)g(not)g(ha)m(v)m(e)h(their)f -(licenses)g(terminated)h(so)f(long)g(as)g(suc)m(h)f(parties)h(remain)g -(in)f(full)330 3945 y(compliance.)154 4075 y(10.)61 b(FUTURE)30 -b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 4204 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 4314 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g -(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h -(in)g(spirit)330 4423 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma) -m(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i -(concerns.)330 4533 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p -Ft(.)330 4663 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m -(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 -b(If)29 b(the)g(Do)s(cumen)m(t)330 4772 y(sp)s(eci\014es)45 -b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g -(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 4882 -y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f -(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 -4991 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m -(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g -(b)m(y)330 5101 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 -b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s -(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 5210 -y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m -(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) -h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p -eop end -%%Page: 63 67 -TeXDict begin 63 66 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(63)150 299 -y Fh(A.1.1)62 b(ADDENDUM:)41 b(Ho)m(w)g(to)g(use)g(this)g(License)g -(for)h(y)m(our)f(do)s(cumen)m(ts)275 543 y Ft(T)-8 b(o)27 -b(use)g(this)g(License)h(in)f(a)h(do)s(cumen)m(t)f(y)m(ou)h(ha)m(v)m(e) -g(written,)g(include)f(a)h(cop)m(y)g(of)f(the)h(License)g(in)f(the)150 -653 y(do)s(cumen)m(t)j(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)m -(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 -765 y Fd(Copyright)42 b(\(C\))79 b Fc(year)88 b(your)40 -b(name)p Fd(.)468 852 y(Permission)i(is)e(granted)g(to)g(copy,)h -(distribute)g(and/or)g(modify)f(this)g(document)468 939 -y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i -(License,)f(Version)g(1.2)468 1026 y(or)f(any)g(later)g(version)h -(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 -1113 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g -(and)f(no)f(Back-Cover)j(Texts.)468 1200 y(A)e(copy)g(of)g(the)g -(license)g(is)g(included)h(in)f(the)g(section)h(entitled)g(``GNU)468 -1288 y(Free)g(Documentation)h(License''.)275 1410 y Ft(If)d(y)m(ou)h -(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 -b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k -(T)-8 b(exts,)43 b(replace)e(the)150 1520 y(\\with...T)-8 -b(exts.")43 b(line)30 b(with)h(this:)547 1632 y Fd(with)40 -b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p -Fd(,)h(with)547 1719 y(the)f(Front-Cover)i(Texts)e(being)g -Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 -1806 y(being)f Fc(list)p Fd(.)275 1929 y Ft(If)34 b(y)m(ou)i(ha)m(v)m -(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 -b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 -2038 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e -(suit)f(the)h(situation.)275 2173 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f -(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m -(e)e(recommend)g(releasing)150 2283 y(these)44 b(examples)f(in)g -(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h -(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2392 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: 64 68 -TeXDict begin 64 67 bop 150 -116 a Ft(64)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 65 69 -TeXDict begin 65 68 bop 150 -116 a Ft(Concept)31 b(Index)2927 -b(65)150 299 y Fp(Concept)52 b(Index)150 638 y Fr(A)150 -759 y Fb(application-sp)r(eci\014c)27 b(completion)f(functions)9 -b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)35 b Fb(41)150 1022 -y Fr(C)150 1143 y Fb(command)26 b(editing)20 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fb(1)150 -1406 y Fr(E)150 1527 y Fb(editing)26 b(command)g(lines)e -Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(1)150 1789 y Fr(F)150 -1910 y Fb(FDL,)26 b(GNU)f(F)-6 b(ree)25 b(Do)r(cumen)n(tation)h -(License)11 b Fa(.)j(.)e(.)g(.)h(.)f(.)g(.)37 b Fb(57)150 -2173 y Fr(I)150 2294 y Fb(initialization)28 b(\014le,)e(readline)8 -b Fa(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(4)150 2384 y(in)n(teraction,)27 -b(readline)10 b Fa(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 -b Fb(1)2025 638 y Fr(K)2025 759 y Fb(kill)26 b(ring)15 -b Fa(.)e(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)42 b Fb(3)2025 849 y(killing)26 b(text)18 -b Fa(.)12 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)44 b Fb(2)2025 1111 y Fr(N)2025 1233 y Fb(notation,)26 -b(readline)13 b Fa(.)h(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(1)2025 1495 y Fr(R)2025 1616 y Fb(readline,)26 b(function)15 -b Fa(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fb(21)2025 -1879 y Fr(V)2025 2000 y Fb(v)l(ariables,)27 b(readline)8 -b Fa(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b -Fb(5)2025 2263 y Fr(Y)2025 2384 y Fb(y)n(anking)25 b(text)8 -b Fa(.)j(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 -b Fb(2)p eop end -%%Page: 66 70 -TeXDict begin 66 69 bop 150 -116 a Ft(66)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 67 71 -TeXDict begin 67 70 bop 150 -116 a Ft(F)-8 b(unction)31 -b(and)f(V)-8 b(ariable)32 b(Index)2370 b(67)150 299 y -Fp(F)-13 b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)p -159 610 41 6 v 150 729 a Fd(_rl_digit_p)23 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fb(36)150 818 y Fd(_rl_digit_value)15 b Fa(.)g(.)e(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)40 b Fb(36)150 906 y Fd(_rl_lowercase_p)15 -b Fa(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fb(36)150 -995 y Fd(_rl_to_lower)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)45 b Fb(36)150 1084 y Fd(_rl_to_upper)22 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fb(36)150 1172 y Fd(_rl_uppercase_p)15 b Fa(.)g(.)e(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)40 b Fb(36)150 1431 y Fr(A)150 1550 y -Fd(abort)27 b(\(C-g\))9 b Fa(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)35 b Fb(18)150 1639 y Fd(accept-line)28 -b(\(Newline)g(or)e(Return\))12 b Fa(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)37 b Fb(13)150 1898 y Fr(B)150 2017 y Fd(backward-char)29 -b(\(C-b\))16 b Fa(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fb(13)150 -2106 y Fd(backward-delete-char)30 b(\(Rubout\))21 b Fa(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b -Fb(15)150 2194 y Fd(backward-kill-line)30 b(\(C-x)c(Rubout\))f -Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b -Fb(16)150 2283 y Fd(backward-kill-word)30 b(\(M-)999 -2280 y Fk(h)p 1024 2227 146 4 v 1024 2283 a Fj(DEL)p -1024 2298 V 1165 2280 a Fk(i)1195 2283 y Fd(\))21 b Fa(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fb(16)150 2372 y Fd(backward-word)29 b(\(M-b\))16 b -Fa(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fb(13)150 2460 y Fd -(beginning-of-history)30 b(\(M-<\))25 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)49 b Fb(14)150 -2549 y Fd(beginning-of-line)29 b(\(C-a\))10 b Fa(.)k(.)e(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(13)150 2637 y(b)r(ell-st)n(yle)14 b Fa(.)f(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b -Fb(5)150 2726 y(bind-tt)n(y-sp)r(ecial-c)n(hars)21 b -Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(5)150 2983 -y Fr(C)150 3102 y Fd(call-last-kbd-macro)30 b(\(C-x)c(e\))11 -b Fa(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 -b Fb(18)150 3191 y Fd(capitalize-word)29 b(\(M-c\))13 -b Fa(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)38 b Fb(15)150 3279 y Fd(character-search)29 -b(\(C-]\))11 b Fa(.)j(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(18)150 3368 y -Fd(character-search-backward)31 b(\(M-C-]\))14 b Fa(.)g(.)e(.)g(.)h(.)f -(.)g(.)h(.)f(.)39 b Fb(19)150 3457 y Fd(clear-screen)28 -b(\(C-l\))17 b Fa(.)d(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fb(13)150 -3545 y(commen)n(t-b)r(egin)18 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)44 b Fb(5)150 3634 y Fd(complete)27 -b(\()528 3631 y Fk(h)p 553 3578 148 4 v 553 3634 a Fj(T)-6 -b(AB)p 553 3649 V 697 3631 a Fk(i)726 3634 y Fd(\))20 -b Fa(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fb(17)150 -3723 y(completion-query-items)8 b Fa(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 -b Fb(5)150 3811 y(con)n(v)n(ert-meta)18 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fb(5)150 3900 -y Fd(copy-backward-word)30 b(\(\))13 b Fa(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(16)150 3988 y Fd(copy-forward-word)29 b(\(\))14 -b Fa(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(16)150 4077 y Fd(copy-region-as-kill)30 -b(\(\))11 b Fa(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(16)150 4336 y Fr(D)150 -4455 y Fd(delete-char)28 b(\(C-d\))20 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)44 b Fb(15)150 4544 y Fd(delete-char-or-list)30 -b(\(\))11 b Fa(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(17)150 4632 y Fd -(delete-horizontal-space)31 b(\(\))24 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)49 b Fb(16)150 -4721 y Fd(digit-argument)29 b(\()p Fc(M-0)p Fd(,)e Fc(M-1)p -Fd(,)f(...)g Fc(M--)p Fd(\))14 b Fa(.)g(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.) -40 b Fb(17)150 4810 y(disable-completion)16 b Fa(.)e(.)e(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)42 b Fb(5)150 4898 y Fd(do-uppercase-version)30 -b(\(M-a,)d(M-b,)f(M-)p Fc(x)p Fd(,)h(...)q(\))318 4985 -y Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(18)150 5074 y Fd(downcase-word)29 -b(\(M-l\))16 b Fa(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fb(15)150 -5163 y Fd(dump-functions)29 b(\(\))19 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)44 b Fb(19)150 5251 y Fd(dump-macros)28 b(\(\))c -Fa(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 -b Fb(19)150 5340 y Fd(dump-variables)29 b(\(\))19 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(19)2025 610 y -Fr(E)2025 727 y Fb(editing-mo)r(de)19 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(5)2025 815 -y Fd(emacs-editing-mode)29 b(\(C-e\))8 b Fa(.)14 b(.)f(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 -b Fb(19)2025 902 y(enable-k)n(eypad)18 b Fa(.)10 b(.)j(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)44 b Fb(6)2025 990 y -Fd(end-kbd-macro)28 b(\(C-x)f(\)\))20 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 -b Fb(18)2025 1077 y Fd(end-of-history)29 b(\(M->\))14 -b Fa(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(14)2025 1165 y Fd(end-of-line)28 -b(\(C-e\))20 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 -b Fb(13)2025 1253 y Fd(exchange-point-and-mark)31 b(\(C-x)26 -b(C-x\))21 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fb(18)2025 1340 y(expand-tilde)11 b Fa(.)g(.)i(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(6)2025 1592 -y Fr(F)2025 1709 y Fd(forward-backward-delete-char)32 -b(\(\))16 b Fa(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 -b Fb(15)2025 1796 y Fd(forward-char)28 b(\(C-f\))17 b -Fa(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43 b Fb(13)2025 1884 y -Fd(forward-search-history)30 b(\(C-s\))22 b Fa(.)13 b(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)47 b Fb(14)2025 1972 -y Fd(forward-word)28 b(\(M-f\))17 b Fa(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43 -b Fb(13)2025 2215 y Fr(H)2025 2332 y Fb(history-preserv)n(e-p)r(oin)n -(t)16 b Fa(.)11 b(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(6)2025 -2419 y Fd(history-search-backward)31 b(\(\))24 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 -b Fb(14)2025 2507 y Fd(history-search-forward)30 b(\(\))7 -b Fa(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)33 b Fb(14)2025 2595 y(horizon)n(tal-scroll-mo)r(de)11 -b Fa(.)j(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(6)2025 2830 y -Fr(I)2025 2946 y Fb(input-meta)15 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(6)2025 3034 -y Fd(insert-comment)29 b(\(M-#\))14 b Fa(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fb(19)2025 3122 y Fd(insert-completions)29 b(\(M-*\))8 -b Fa(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)34 b Fb(17)2025 3209 y(isearc)n(h-terminators)6 -b Fa(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fb(6)2025 -3444 y Fr(K)2025 3561 y Fb(k)n(eymap)17 b Fa(.)12 b(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 -b Fb(6)2025 3649 y Fd(kill-line)27 b(\(C-k\))c Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(16)2025 -3736 y Fd(kill-region)28 b(\(\))23 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)49 b Fb(16)2025 3824 y Fd(kill-whole-line)29 -b(\(\))17 b Fa(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43 b Fb(16)2025 -3911 y Fd(kill-word)27 b(\(M-d\))c Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)47 b Fb(16)2025 4155 y Fr(M)2025 4272 y Fb(mark-mo)r -(di\014ed-lines)15 b Fa(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fb(6)2025 4359 y(mark-symlink)n(ed-directories)20 b -Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)47 b Fb(7)2025 4447 y(matc)n(h-hidden-\014les)20 -b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(7)2025 -4534 y Fd(menu-complete)28 b(\(\))21 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)46 b Fb(17)2025 4622 y(meta-\015ag)9 b Fa(.)j(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(6)2025 4874 y Fr(N)2025 4990 y Fd(next-history)28 -b(\(C-n\))17 b Fa(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43 b Fb(14)2025 -5078 y Fd(non-incremental-forward-search)q(-hist)q(ory)32 -b(\(M-n\))2193 5165 y Fa(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(14)2025 -5253 y Fd(non-incremental-reverse-search)q(-hist)q(ory)32 -b(\(M-p\))2193 5340 y Fa(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(14)p -eop end -%%Page: 68 72 -TeXDict begin 68 71 bop 150 -116 a Ft(68)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fr(O)150 417 y Fb(output-meta)10 -b Fa(.)i(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 -b Fb(7)150 506 y Fd(overwrite-mode)29 b(\(\))19 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(15)150 754 y Fr(P)150 -872 y Fb(page-completions)23 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)48 b Fb(7)150 961 y Fd(possible-completions)30 -b(\(M-?\))25 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)49 b Fb(17)150 1049 y Fd(prefix-meta)28 b(\()646 -1046 y Fk(h)p 671 993 139 4 v 671 1049 a Fj(ESC)p 671 -1064 V 804 1046 a Fk(i)834 1049 y Fd(\))20 b Fa(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(18)150 1137 y Fd(previous-history)29 -b(\(C-p\))11 b Fa(.)j(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(14)150 1396 y -Fr(Q)150 1514 y Fd(quoted-insert)29 b(\(C-q)d(or)g(C-v\))20 -b Fa(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)45 b Fb(15)150 1772 y Fr(R)150 1891 y Fd(re-read-init-file)29 -b(\(C-x)e(C-r\))11 b Fa(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)36 b Fb(18)150 1979 y Fd(readline)7 b -Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)32 b Fb(21)150 2068 y Fd(redraw-current-line)e(\(\))11 -b Fa(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)37 b Fb(13)150 2156 y Fd(reverse-search-history)31 -b(\(C-r\))22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)46 b Fb(14)150 2245 y Fd(revert-line)28 b(\(M-r\))20 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(18)150 -2333 y Fd(rl_add_defun)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)45 b Fb(28)150 2421 y Fd(rl_add_funmap_entry)9 -b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(31)150 2510 -y Fd(rl_add_undo)23 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)46 b Fb(32)150 2598 y Fd(rl_alphabetic)18 -b Fa(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fb(36)150 2687 y Fd(rl_already_prompted)9 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(25)150 2775 y Fd -(rl_attempted_completion_funct)q(ion)9 b Fa(.)18 b(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(44)150 2864 y -Fd(rl_attempted_completion_over)15 b Fa(.)j(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(47)150 2952 y Fd -(rl_basic_quote_characters)18 b Fa(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fb(45)150 3041 -y Fd(rl_basic_word_break_character)q(s)11 b Fa(.)18 b(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 b Fb(45)150 -3129 y Fd(rl_begin_undo_group)9 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 -b Fb(32)150 3217 y Fd(rl_bind_key)23 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fb(29)150 3306 y -Fd(rl_bind_key_if_unbound)28 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fb(29)150 -3394 y Fd(rl_bind_key_if_unbound_in_map)14 b Fa(.)j(.)c(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(30)150 3483 y Fd(rl_bind_key_in_map) -10 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(29)150 -3571 y Fd(rl_bind_keyseq)16 b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)42 b Fb(30)150 3660 y Fd(rl_bind_keyseq_if_unbound)18 -b Fa(.)g(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)44 b Fb(30)150 3748 y Fd(rl_bind_keyseq_if_unbound_in_)q(map)9 -b Fa(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b -Fb(30)150 3836 y Fd(rl_bind_keyseq_in_map)29 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)50 b Fb(30)150 3925 y Fd(rl_binding_keymap)12 -b Fa(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(26)150 4013 -y Fd(rl_callback_handler_install)16 b Fa(.)i(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fb(37)150 4102 y -Fd(rl_callback_handler_remove)17 b Fa(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(38)150 4190 y -Fd(rl_callback_read_char)29 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(38)150 -4279 y Fd(rl_catch_signals)13 b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -39 b Fb(40)150 4367 y Fd(rl_catch_sigwinch)12 b Fa(.)k(.)c(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)37 b Fb(40)150 4456 y Fd(rl_char_is_quoted_p)9 -b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(44)150 4544 -y Fd(rl_cleanup_after_signal)26 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fb(40)150 -4632 y Fd(rl_clear_message)13 b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -39 b Fb(33)150 4721 y Fd(rl_clear_pending_input)28 b -Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)48 b Fb(35)150 4809 y Fd(rl_clear_signals)13 -b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(41)150 -4898 y Fd(rl_complete)13 b Fa(.)i(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)39 b Fb(42,)26 b(43)150 4986 y Fd(rl_complete_internal)7 -b Fa(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(42)150 5075 y Fd -(rl_completer_quote_characters)14 b Fa(.)j(.)c(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)38 b Fb(45)150 5163 y Fd -(rl_completer_word_break_chara)q(cter)q(s)29 b Fa(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(45)150 5252 y Fd -(rl_completion_append_characte)q(r)11 b Fa(.)18 b(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)37 b Fb(46)150 -5340 y Fd(rl_completion_display_matches)q(_hoo)q(k)29 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(45)2025 299 -y Fd(rl_completion_entry_function)7 b Fa(.)18 b(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fb(42,)27 b(43)2025 -387 y Fd(rl_completion_found_quote)18 b Fa(.)g(.)12 b(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(46)2025 -476 y Fd(rl_completion_mark_symlink_dir)q(s)10 b Fa(.)18 -b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(46)2025 -564 y Fd(rl_completion_matches)29 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)50 -b Fb(43)2025 653 y Fd(rl_completion_mode)10 b Fa(.)17 -b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(43)2025 741 y Fd -(rl_completion_query_items)18 b Fa(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(46)2025 830 -y Fd(rl_completion_quote_character)13 b Fa(.)18 b(.)13 -b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(46)2025 -918 y Fd(rl_completion_suppress_append)13 b Fa(.)18 b(.)13 -b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(46)2025 -1006 y Fd(rl_completion_suppress_quote)15 b Fa(.)i(.)c(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(46)2025 1095 y -Fd(rl_completion_type)10 b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 -b Fb(47)2025 1183 y Fd(rl_completion_word_break_hook)13 -b Fa(.)18 b(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(45)2025 1272 y Fd(rl_copy_keymap)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)42 b Fb(28)2025 1360 y Fd(rl_copy_text)22 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fb(34)2025 1449 y Fd(rl_crlf)8 b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(33)2025 -1537 y Fd(rl_delete_text)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)42 b Fb(34)2025 1625 y Fd(rl_deprep_term_function)26 -b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)47 b Fb(26)2025 1714 y Fd(rl_deprep_terminal)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(35)2025 -1802 y Fd(rl_ding)8 b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(36)2025 1891 -y Fd(rl_directory_completion_hook)15 b Fa(.)i(.)c(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(44)2025 1979 y Fd(rl_discard_keymap) -12 b Fa(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 b Fb(29)2025 -2068 y Fd(rl_dispatching)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)42 b Fb(24)2025 2156 y Fd(rl_display_match_list)29 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)50 b Fb(36)2025 2245 y Fd(rl_do_undo)24 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fb(32)2025 2333 y Fd(rl_done)8 b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fb(24)2025 -2421 y Fd(rl_editing_mode)15 b Fa(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)40 b Fb(28)2025 2510 y Fd(rl_end)10 b Fa(.)j(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(24)2025 2598 y Fd(rl_end_undo_group)12 b Fa(.)k(.)c(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)38 b Fb(32)2025 2687 y Fd(rl_erase_empty_line)9 -b Fa(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(24)2025 2775 y -Fd(rl_event_hook)18 b Fa(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)43 b Fb(26)2025 2864 y Fd(rl_execute_next)15 b Fa(.)g(.)e(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(35)2025 2952 y Fd(rl_executing_keymap)9 -b Fa(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(26)2025 3041 y -Fd(rl_executing_macro)10 b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 -b Fb(26)2025 3129 y Fd(rl_expand_prompt)13 b Fa(.)j(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)39 b Fb(34)2025 3217 y Fd(rl_explicit_arg)15 -b Fa(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(28)2025 -3306 y Fd(rl_extend_line_buffer)29 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)50 -b Fb(36)2025 3394 y Fd(rl_filename_completion_desired)12 -b Fa(.)18 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(46)2025 3483 y Fd(rl_filename_completion_functio)q(n)10 -b Fa(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(43)2025 3571 y Fd(rl_filename_dequoting_function)12 -b Fa(.)18 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 -b Fb(44)2025 3660 y Fd(rl_filename_quote_characters)15 -b Fa(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(45)2025 3748 y Fd(rl_filename_quoting_desired)16 -b Fa(.)i(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(47)2025 3836 y Fd(rl_filename_quoting_function)15 -b Fa(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fb(44)2025 3925 y Fd(rl_forced_update_display)25 b -Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)46 b Fb(33)2025 4013 y Fd(rl_free_line_state)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(40)2025 -4102 y Fd(rl_free_undo_list)12 b Fa(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 -b Fb(32)2025 4190 y Fd(rl_function_dumper)10 b Fa(.)17 -b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(31)2025 4279 y Fd -(rl_function_of_keyseq)29 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)50 b Fb(31)2025 -4367 y Fd(rl_funmap_names)15 b Fa(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)40 b Fb(31)2025 4456 y Fd(rl_generic_bind)15 b Fa(.)g(.)e(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(30)2025 4544 y Fd(rl_get_keymap)18 -b Fa(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fb(29)2025 4632 y Fd(rl_get_keymap_by_name)29 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)50 b Fb(29)2025 4721 y Fd(rl_get_keymap_name)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(29)2025 -4809 y Fd(rl_get_screen_size)10 b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -36 b Fb(41)2025 4898 y Fd(rl_get_termcap)16 b Fa(.)f(.)e(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)42 b Fb(37)2025 4986 y Fd(rl_getc)8 -b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)34 b Fb(34)2025 5075 y Fd(rl_getc_function)13 -b Fa(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(26)2025 -5163 y Fd(rl_gnu_readline_p)12 b Fa(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 -b Fb(25)2025 5252 y Fd(rl_ignore_completion_duplicate)q(s)10 -b Fa(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(46)2025 5340 y Fd(rl_ignore_some_completions_fun)q(ction)29 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)48 b Fb(44)p eop end -%%Page: 69 73 -TeXDict begin 69 72 bop 150 -116 a Ft(F)-8 b(unction)31 -b(and)f(V)-8 b(ariable)32 b(Index)2370 b(69)150 299 y -Fd(rl_inhibit_completion)29 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(47)150 -387 y Fd(rl_initialize)18 b Fa(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)43 b Fb(36)150 476 y Fd(rl_insert_completions)29 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)50 b Fb(43)150 564 y Fd(rl_insert_text)16 -b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fb(34)150 652 y Fd(rl_instream)23 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fb(25)150 740 y Fd -(rl_invoking_keyseqs)9 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 -b Fb(31)150 829 y Fd(rl_invoking_keyseqs_in_map)17 b -Fa(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(31)150 917 y Fd(rl_kill_text)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(34)150 1005 y Fd(rl_last_func)22 -b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fb(25)150 1094 y Fd(rl_library_version)10 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(25)150 1182 y Fd(rl_line_buffer)16 -b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fb(24)150 1270 y Fd(rl_list_funmap_names)7 b Fa(.)17 -b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)33 b Fb(31)150 1359 y Fd(rl_macro_bind)18 -b Fa(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fb(37)150 1447 y Fd(rl_macro_dumper)15 b Fa(.)g(.)e(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)40 b Fb(37)150 1535 y Fd(rl_make_bare_keymap)9 -b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(28)150 1624 -y Fd(rl_make_keymap)16 b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -42 b Fb(29)150 1712 y Fd(rl_mark)8 b Fa(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b -Fb(24)150 1800 y Fd(rl_message)24 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(33)150 1889 y -Fd(rl_modifying)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)45 b Fb(32)150 1977 y Fd(rl_named_function)12 -b Fa(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(31)150 2065 -y Fd(rl_num_chars_to_read)7 b Fa(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fb(24)150 2154 y Fd(rl_numeric_arg)16 b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)42 b Fb(28)150 2242 y Fd(rl_on_new_line)16 -b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fb(33)150 2330 y Fd(rl_on_new_line_with_prompt)17 b Fa(.)h(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(33)150 2419 y Fd(rl_outstream)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 b Fb(25)150 2507 y Fd(rl_parse_and_bind) -12 b Fa(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(31)150 -2595 y Fd(rl_pending_input)13 b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -39 b Fb(24)150 2684 y Fd(rl_point)7 b Fa(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fb(24)150 -2772 y Fd(rl_possible_completions)26 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b -Fb(43)150 2860 y Fd(rl_pre_input_hook)12 b Fa(.)k(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)37 b Fb(26)150 2948 y Fd(rl_prefer_env_winsize)29 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)50 b Fb(25)150 3037 y Fd(rl_prep_term_function)29 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)50 b Fb(26)150 3125 y Fd(rl_prep_terminal)13 -b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(35)150 -3213 y Fd(rl_prompt)25 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(25)150 3302 y Fd(rl_push_macro_input)9 -b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(34)150 3390 -y Fd(rl_read_init_file)12 b Fa(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 -b Fb(31)150 3478 y Fd(rl_read_key)23 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fb(34)150 3567 y -Fd(rl_readline_name)13 b Fa(.)j(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fb(25)150 3655 y Fd(rl_readline_state)12 b Fa(.)k(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)37 b Fb(26)150 3743 y Fd(rl_readline_version)9 -b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(25)150 3832 -y Fd(rl_redisplay)22 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)45 b Fb(32)150 3920 y Fd(rl_redisplay_function)29 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)50 b Fb(26)150 4008 y Fd(rl_replace_line)15 -b Fa(.)g(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 b Fb(36)150 -4097 y Fd(rl_reset_after_signal)29 b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 -b Fb(41)150 4185 y Fd(rl_reset_line_state)9 b Fa(.)17 -b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(33)150 4273 y Fd(rl_reset_screen_size)7 -b Fa(.)17 b(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(41)150 4362 y Fd(rl_reset_terminal) -12 b Fa(.)k(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(35)150 -4450 y Fd(rl_resize_terminal)10 b Fa(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -36 b Fb(41)150 4538 y Fd(rl_restore_prompt)12 b Fa(.)k(.)c(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)37 b Fb(33)150 4627 y Fd(rl_save_prompt)16 -b Fa(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fb(33)150 4715 y Fd(rl_set_key)24 b Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(30)150 4803 y -Fd(rl_set_keyboard_input_timeout)14 b Fa(.)j(.)c(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)38 b Fb(35)150 4892 y Fd(rl_set_keymap)18 -b Fa(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fb(29)150 4980 y Fd(rl_set_paren_blink_timeout)17 b -Fa(.)h(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fb(37)2025 299 y Fd(rl_set_prompt)18 b Fa(.)d(.)d(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)43 b Fb(34)2025 386 y Fd(rl_set_screen_size)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(41)2025 -473 y Fd(rl_set_signals)16 b Fa(.)f(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)42 b Fb(41)2025 561 y Fd(rl_show_char)22 b Fa(.)12 -b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fb(33)2025 648 y Fd(rl_special_prefixes)9 b Fa(.)16 -b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(45)2025 735 y Fd(rl_startup_hook)15 -b Fa(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(26)2025 -822 y Fd(rl_stuff_char)18 b Fa(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)43 b Fb(35)2025 910 y Fd(rl_terminal_name)13 -b Fa(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(25)2025 -997 y Fd(rl_tty_set_default_bindings)16 b Fa(.)i(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fb(35)2025 1084 y Fd(rl_tty_unset_default_bindings)13 -b Fa(.)18 b(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 -b Fb(35)2025 1171 y Fd(rl_unbind_command_in_map)25 b -Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)46 b Fb(30)2025 1259 y Fd(rl_unbind_function_in_map)18 -b Fa(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)44 b Fb(30)2025 1346 y Fd(rl_unbind_key)18 b Fa(.)d(.)d(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fb(30)2025 1433 y Fd -(rl_unbind_key_in_map)7 b Fa(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fb(30)2025 1520 y Fd(rl_username_completion_functio)q(n)10 -b Fa(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fb(43)2025 1608 y Fd(rl_variable_bind)13 b Fa(.)j(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)39 b Fb(37)2025 1695 y Fd(rl_variable_dumper)10 -b Fa(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(37)2025 -1782 y Fd(rl_variable_value)12 b Fa(.)k(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 -b Fb(37)2025 2025 y Fr(S)2025 2141 y Fd(self-insert)28 -b(\(a,)e(b,)g(A,)g(1,)g(!,)g(...)q(\))13 b Fa(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)38 b Fb(15)2025 2228 y Fd(set-mark)27 -b(\(C-@\))d Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fb(18)2025 2315 y(sho)n(w-all-if-am)n(biguous)22 b -Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(7)2025 2403 -y(sho)n(w-all-if-unmo)r(di\014ed)12 b Fa(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fb(7)2025 2490 y Fd(start-kbd-macro)29 b(\(C-x)d(\(\))17 -b Fa(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)42 b Fb(18)2025 2731 y Fr(T)2025 2848 y Fd(tab-insert)28 -b(\(M-)2560 2845 y Fk(h)p 2585 2791 148 4 v 2585 2848 -a Fj(T)-6 b(AB)p 2585 2863 V 2728 2845 a Fk(i)2758 2848 -y Fd(\))13 b Fa(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(15)2025 2935 -y Fd(tilde-expand)28 b(\(M-~\))17 b Fa(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43 -b Fb(18)2025 3022 y Fd(transpose-chars)29 b(\(C-t\))13 -b Fa(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)39 b Fb(15)2025 3109 y Fd(transpose-words)29 -b(\(M-t\))13 b Fa(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)39 b Fb(15)2025 3361 -y Fr(U)2025 3477 y Fd(undo)26 b(\(C-_)h(or)f(C-x)g(C-u\))15 -b Fa(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)41 b Fb(18)2025 3565 y Fd(universal-argument)29 -b(\(\))13 b Fa(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)39 b Fb(17)2025 3652 y -Fd(unix-filename-rubout)30 b(\(\))10 b Fa(.)j(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fb(16)2025 3739 y Fd(unix-line-discard)29 b(\(C-u\))10 -b Fa(.)k(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)36 b Fb(16)2025 3826 y Fd(unix-word-rubout)29 -b(\(C-w\))11 b Fa(.)j(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 b Fb(16)2025 3914 y -Fd(upcase-word)28 b(\(M-u\))20 b Fa(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -44 b Fb(15)2025 4165 y Fr(V)2025 4282 y Fd(vi-editing-mode)29 -b(\(M-C-j\))10 b Fa(.)k(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(19)2025 4369 y(visible-stats)22 -b Fa(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -47 b Fb(7)2025 4602 y Fr(Y)2025 4718 y Fd(yank)26 b(\(C-y\))11 -b Fa(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 -b Fb(17)2025 4805 y Fd(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))20 -b Fa(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)45 b Fb(14)2025 4893 y Fd(yank-nth-arg)28 b(\(M-C-y\))14 -b Fa(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(14)2025 4980 y Fd(yank-pop)27 -b(\(M-y\))d Fa(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fb(17)p eop end -%%Page: 70 74 -TeXDict begin 70 73 bop 150 -116 a Ft(70)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/readline/doc/readline_3.ps b/readline/doc/readline_3.ps deleted file mode 100644 index b2106acb..0000000 --- a/readline/doc/readline_3.ps +++ /dev/null @@ -1,1356 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.19.1 -%%CreationDate: Tue Dec 6 15:46:41 2005 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%+ font Courier -%%DocumentSuppliedResources: procset grops 1.19 1 -%%Pages: 14 -%%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.19 1 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}bind def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -/setpagedevice{}def -}bind def -/PEND{ -clear -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -%%IncludeResource: font Courier -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE -/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 -10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 -(readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS) -72 112.8 Q/F2 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q -(#include <r)108 136.8 Q(eadline/r)-.18 E(eadline.h>)-.18 E(#include <r) -108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E/F3 10/Times-Italic@0 SF --.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0 -(\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT) -72 194.4 Q F0(Readline is Cop)108 206.4 Q -(yright \251 1989\2552004 by the Free Softw)-.1 E(are F)-.1 E -(oundation, Inc.)-.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S -(adline).18 E F0 .088 -(will read a line from the terminal and return it, using)2.588 F F2(pr) -2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr)2.587 -E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .42 -(the empty string, no prompt is issued.)108 247.2 R .421 -(The line returned is allocated with)5.42 F F3(malloc)2.921 E F0 .421 -(\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q -(The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15 -G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108 -276 S(adline).18 E F0(of)3.79 E 1.29 -(fers editing capabilities while the user is entering the line.)-.25 F -1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F -(mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G -(i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G -(ilable.).25 E .272 -(This manual page describes only the most basic use of)108 304.8 R F2 --.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272 -(uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25 -F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3 -(The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.) -2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S -(adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.) --.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589 -F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283 -(while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2 -(NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF) -2.783 E F0 .283(is read with a non\255empty line, it)2.783 F -(is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA) --.438 G(TION)-.054 E F0 .181 -(An emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G -(strok).15 E 2.681(es. Control)-.1 F -.1(ke)2.681 G .18 -(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.68(,e)C .18 -(.g., C\255n means)-2.68 F 2.582(Control\255N. Similarly)108 410.4 R(,) --.65 E F3(meta)2.962 E F0 -.1(ke)2.842 G .082(ys are denoted by M\255) --.05 F F3 -.1(ke)C(y)-.2 E F0 2.583(,s)C 2.583(oM)-2.583 G .083 -(\255x means Meta\255X.)-2.583 F .083(\(On k)5.083 F -.15(ey)-.1 G .083 -(boards without a).15 F F3(meta)108 422.4 Q F0 -.1(ke)3.491 G 2.031 -.65 -(y, M)-.05 H<ad>.65 E F3(x)A F0 .731(means ESC)3.231 F F3(x)3.231 E F0 -3.231(,i)C .731(.e., press the Escape k)-3.231 F 1.03 -.15(ey t)-.1 H -.73(hen the).15 F F3(x)4 E F0 -.1(ke)3.76 G 4.53 -.65(y. T)-.05 H .73 -(his mak).65 F .73(es ESC the)-.1 F F3 .73(meta pr)3.23 F(e\214x)-.37 E -F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A F0 .48 -(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98 G .48 -(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48 -(hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E -(pressing the)108 446.4 Q F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G -(\)).65 E .62(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G -3.119(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w) -.27 G .619(hich normally act as a repeat count.)-3.119 F(Sometimes,) -5.619 E(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H -3.118(ti).4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 -(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) -.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018 -(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C -1.018(auses that command to act in a backw)-3.518 F 1.018 -(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q -(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted.)-.25 E -.811(When a command is described as)108 516 R F3(killing)3.311 E F0(te) -3.311 E .811(xt, the te)-.15 F .811(xt deleted is sa)-.15 F -.15(ve)-.2 -G 3.311(df).15 G .812(or possible future retrie)-3.311 F -.25(va)-.25 G -3.312(l\().25 G F3(yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029 -(killed te)2.529 F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G -2.529(na)-2.529 G F3 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E -.329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029 -(xt to be accumulated into one unit,)-.15 F .567(which can be yank)108 -540 R .567(ed all at once.)-.1 F .567(Commands which do not kill te) -5.567 F .567(xt separate the chunks of te)-.15 F .567(xt on the kill) --.15 F(ring.)108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0 -.091(Readline is customized by putting commands in an initialization \ -\214le \(the)108 580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591 -(\214le\). The)2.591 F .091(name of this \214le)2.591 F 1.442(is tak)108 -592.8 R 1.443(en from the v)-.1 F 1.443(alue of the)-.25 F F2(INPUTRC) -3.943 E F0(en)3.943 E 1.443(vironment v)-.4 F 3.943(ariable. If)-.25 F -1.443(that v)3.943 F 1.443(ariable is unset, the def)-.25 F 1.443 -(ault is)-.1 F F3(~/.inputr)108 604.8 Q(c)-.37 E F0 5.359(.W).31 G .359 -(hen a program which uses the readline library starts up, the init \214\ -le is read, and the k)-5.359 F .658 -.15(ey b)-.1 H(ind-).15 E 1.083 -(ings and v)108 616.8 R 1.083(ariables are set.)-.25 F 1.083 -(There are only a fe)6.083 F 3.583(wb)-.25 G 1.083(asic constructs allo) --3.583 F 1.084(wed in the readline init \214le.)-.25 F(Blank)6.084 E -.737(lines are ignored.)108 628.8 R .737(Lines be)5.737 F .737 -(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737 -(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736 -(indicate conditional)3.236 F 2.614(constructs. Other)108 640.8 R .114 -(lines denote k)2.614 F .414 -.15(ey b)-.1 H .115(indings and v).15 F -.115(ariable settings.)-.25 F .115 -(Each program using this library may add)5.115 F(its o)108 652.8 Q -(wn commands and bindings.)-.25 E -.15(Fo)108 669.6 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 686.4 Q -.15(ve)-.25 -G(rsal\255ar).15 E(gument)-.18 E(or)108 698.4 Q(C\255Meta\255u: uni)144 -710.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E -(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(1)204 E 0 Cg EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R -(into the)108 84 Q/F1 10/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1 -(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G -(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument) --.37 E F0(.).68 E 2.795(The follo)108 100.8 R 2.795 -(wing symbolic character names are recognized while processing k)-.25 F -3.095 -.15(ey b)-.1 H(indings:).15 E F1(DEL)5.295 E F0(,).53 E F1(ESC) -5.295 E F0(,).72 E F1(ESCAPE)108 112.8 Q F0(,).73 E F1(LFD)2.5 E F0(,) -.28 E F1(NEWLINE)2.5 E F0(,).73 E F1(RET)2.5 E F0(,)1.27 E F1(RETURN)2.5 -E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)2.5 E -.3(AC) --.9 G(E).3 E F0(,).73 E F1(SPC)2.5 E F0 2.5(,a).72 G(nd)-2.5 E F1 -.5 -(TA)2.5 G(B).5 E F0(.).27 E .209 -(In addition to command names, readline allo)108 129.6 R .209(ws k)-.25 -F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 -(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) --.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2 -10/Times-Bold@0 SF -.25(Ke)87 163.2 S 2.5(yB).25 G(indings)-2.5 E F0 -.366(The syntax for controlling k)108 175.2 R .666 -.15(ey b)-.1 H .366 -(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366 -(\214le is simple.)3.176 F .366(All that is required is the name of the) -5.366 F .382(command or the te)108 187.2 R .383(xt of a macro and a k) --.15 F .683 -.15(ey s)-.1 H .383 -(equence to which it should be bound. The name may be speci-).15 F .853 -(\214ed in one of tw)108 199.2 R 3.353(ow)-.1 G .853 -(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 -(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr) -3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 -(ey)-.1 G(sequence.)108 211.2 Q 1.755(When using the form)108 228 R F2 --.1(ke)4.255 G(yname).1 E F0(:)A F1(function-name).833 E F0(or)4.255 E -F1(macr)4.255 E(o)-.45 E F0(,)A F1 -.1(ke)4.255 G(yname)-.2 E F0 1.756 -(is the name of a k)4.435 F 2.056 -.15(ey s)-.1 H 1.756(pelled out in) -.15 F 2.5(English. F)108 240 R(or e)-.15 E(xample:)-.15 E -(Control\255u: uni)144 264 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 -E(Meta\255Rubout: backw)144 276 Q(ard\255kill\255w)-.1 E(ord)-.1 E -(Control\255o: "> output")144 288 Q .148(In the abo)108 304.8 R .448 --.15(ve ex)-.15 H(ample,).15 E F1(C\255u)2.488 E F0 .148 -(is bound to the function)2.898 F F2(uni)2.647 E -.1(ve)-.1 G -(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)3.327 E F0 .147 -(is bound to the function)3.177 F F2(backward\255kill\255w)108 316.8 Q -(ord)-.1 E F0 3.835(,a)C(nd)-3.835 E F1(C\255o)3.675 E F0 1.336 -(is bound to run the macro e)4.016 F 1.336 -(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -328.8 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .056(In the second form,)108 345.6 R F2("k)2.556 -E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) -2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 -(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 -(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 -(denoting an entire k)108 357.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ -ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .386(GNU Emacs style k)108 369.6 R .686 -.15(ey e)-.1 H -.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 -(xample, b)-.15 F .385(ut the symbolic character names)-.2 F -(are not recognized.)108 381.6 Q("\\C\255u": uni)144 405.6 Q -.15(ve) --.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 417.6 Q -("\\e[11~": "Function K)144 429.6 Q .3 -.15(ey 1)-.25 H(").15 E .198 -(In this e)108 446.4 R(xample,)-.15 E F1(C-u)2.538 E F0 .199(is ag)2.949 -F .199(ain bound to the function)-.05 F F2(uni)2.699 E -.1(ve)-.1 G -(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .199(C-x C-r)5.039 F F0 .199 -(is bound to the function)3.429 F F2 -.18(re)108 458.4 S<ad72>.18 E -(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)3.01 -E F0(is bound to insert the te)3.94 E(xt)-.15 E F3(Function Key 1)2.5 E -F0(.)A(The full set of GNU Emacs style escape sequences a)108 475.2 Q --.25(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H -(equences is).15 E F2<5c43ad>144 487.2 Q F0(control pre\214x)20.3 E F2 -<5c4dad>144 499.2 Q F0(meta pre\214x)18.08 E F2(\\e)144 511.2 Q F0 -(an escape character)28.78 E F2(\\\\)144 523.2 Q F0(backslash)30.44 E F2 -(\\")144 535.2 Q F0(literal ", a double quote)27.67 E F2(\\')144 547.2 Q -F0(literal ', a single quote)29.89 E(In addition to the GNU Emacs style\ - escape sequences, a second set of backslash escapes is a)108 564 Q -.25 -(va)-.2 G(ilable:).25 E F2(\\a)144 576 Q F0(alert \(bell\))28.22 E F2 -(\\b)144 588 Q F0(backspace)27.66 E F2(\\d)144 600 Q F0(delete)27.66 E -F2(\\f)144 612 Q F0(form feed)29.89 E F2(\\n)144 624 Q F0(ne)27.66 E -(wline)-.25 E F2(\\r)144 636 Q F0(carriage return)28.78 E F2(\\t)144 648 -Q F0(horizontal tab)29.89 E F2(\\v)144 660 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F2(\\)144 672 Q F1(nnn)A F0 -(the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E -(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 -684 Q F1(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he) --.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E -2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74(When entering the te) -108 700.8 R .74(xt of a macro, single or double quotes should be used t\ -o indicate a macro de\214nition.)-.15 F .089(Unquoted te)108 712.8 R -.089(xt is assumed to be a function name.)-.15 F .09(In the macro body) -5.089 F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F --.15(ve)-.15 G(are e)108 724.8 Q 2.5(xpanded. Backslash)-.15 F -(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E -(xt, including " and '.)-.15 E(GNU Readline 5.1-beta1)72 768 Q -(2005 Sep 13)109.3 E(2)204 E 0 Cg EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(Bash)108 84 Q F0(allo)2.93 E .43 -(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429 -(indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0 --.2(bu)2.929 G .429(iltin command.).2 F 1.095 -(The editing mode may be switched during interacti)108 96 R 1.395 -.15 -(ve u)-.25 H 1.095(se by using the).15 F F1<ad6f>3.595 E F0 1.095 -(option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095 -(iltin com-).2 F 3.076(mand. Other)108 108 R .576 -(programs using this library pro)3.076 F .575(vide similar mechanisms.) --.15 F(The)5.575 E/F2 10/Times-Italic@0 SF(inputr)3.085 E(c)-.37 E F0 -.575(\214le may be edited and)3.385 F(re-read if a program does not pro) -108 120 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne)-2.5 -E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 136.8 S(riables).92 E F0 -.043(Readline has v)108 148.8 R .043 -(ariables that can be used to further customize its beha)-.25 F(vior)-.2 -E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F2 -(inpu-)2.554 E(tr)108 160.8 Q(c)-.37 E F0 -(\214le with a statement of the form)2.81 E F1(set)144 177.6 Q F2 -(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -194.4 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F -(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79 -(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-) -5.79 E .448(nized v)108 206.4 R .448(ariable names are ignored.)-.25 F -.448(When a v)5.448 F .448(ariable v)-.25 F .448 -(alue is read, empty or null v)-.25 F .449(alues, "on" \(case-insensi-) --.25 F(ti)108 218.4 Q -.15(ve)-.25 G .468(\), and "1" are equi).15 F --.25(va)-.25 G .468(lent to).25 F F1(On)2.968 E F0 5.468(.A)C .468 -(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 230.4 S(lues are:) -.25 E F1(bell\255style \(audible\))108 247.2 Q F0 .01 -(Controls what happens when readline w)144 259.2 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 271.2 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 283.2 Q 2.5(sb)-.55 G -(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 295.2 Q F0 -.055(If set to)144 307.2 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\ -empts to bind the control characters treated specially by the k)-2.555 F -(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 319.2 Q -.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(comment\255begin \(`)108 331.2 Q(`#')-.63 E('\)) --.63 E F0 .062(The string that is inserted in)144 343.2 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 355.2 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\255ignor)108 -367.2 Q(e\255case \(Off\))-.18 E F0(If set to)144 379.2 Q F1(On)2.5 E F0 -2.5(,r)C(eadline performs \214lename matching and completion in a case\ -\255insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 -(completion\255query\255items \(100\))108 391.2 Q F0 .529 -(This determines when the user is queried about vie)144 403.2 R .53 -(wing the number of possible completions gen-)-.25 F .561(erated by the) -144 415.2 R F1(possible\255completions)3.061 E F0 3.061(command. It) -3.061 F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56 -(ger v)-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 -427.2 R .783(If the number of possible completions is greater than or e\ -qual to the v)5.782 F .783(alue of this)-.25 F -.25(va)144 439.2 S .237 -(riable, the user is ask).25 F .237(ed whether or not he wishes to vie) --.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(on the terminal.)144 451.2 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 -F1(con)108 463.2 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612 -(If set to)144 475.2 R F1(On)3.112 E F0 3.112(,r)C .613 -(eadline will con)-3.112 F -.15(ve)-.4 G .613 -(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15 -(ey s)-.1 H .613(equence by).15 F 1.316(stripping the eighth bit and pr\ -e\214xing it with an escape character \(in ef)144 487.2 R 1.315 -(fect, using escape as the)-.25 F F2(meta pr)144 499.2 Q(e\214x)-.37 E -F0(\).)A F1(disable\255completion \(Off\))108 511.2 Q F0 .038(If set to) -144 523.2 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 535.2 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E -F0(.)A F1(editing\255mode \(emacs\))108 547.2 Q F0 .216 -(Controls whether readline be)144 559.2 R .215(gins with a set of k)-.15 -F .515 -.15(ey b)-.1 H .215(indings similar to emacs or vi.).15 F F1 -(editing\255mode)5.215 E F0(can be set to either)144 571.2 Q F1(emacs) -2.5 E F0(or)2.5 E F1(vi)2.5 E F0(.)A F1(enable\255k)108 583.2 Q -(eypad \(Off\))-.1 E F0 .892(When set to)144 595.2 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 607.2 Q 2.5(wk)-.25 G -.15(ey) --2.6 G(s.).15 E F1(expand\255tilde \(Off\))108 619.2 Q F0(If set to)144 -631.2 Q F1(on)2.5 E F0 2.5(,t)C(ilde e)-2.5 E -(xpansion is performed when readline attempts w)-.15 E(ord completion.) --.1 E F1(history\255pr)108 643.2 Q(eser)-.18 E -.1(ve)-.1 G -(\255point \(Off\)).1 E F0 1.493(If set to)144 655.2 R F1(on)3.993 E F0 -3.993(,t)C 1.493(he history code attempts to place point at the same lo\ -cation on each history line)-3.993 F(retrie)144 667.2 Q -.15(ve)-.25 G -2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0 -(or)2.5 E F1(next-history)2.5 E F0(.)A F1(horizontal\255scr)108 679.2 Q -(oll\255mode \(Off\))-.18 E F0 .448(When set to)144 691.2 R F1(On)2.948 -E F0 2.948(,m)C(ak)-2.948 E .448 -(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449 -(crolling the input horizontally on a)-2.948 F 1.194(single screen line\ - when it becomes longer than the screen width rather than wrapping to a\ - ne)144 703.2 R(w)-.25 E(line.)144 715.2 Q(GNU Readline 5.1-beta1)72 768 -Q(2005 Sep 13)109.3 E(3)204 E 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(input\255meta \(Off\))108 84 Q F0 .367(If set to)144 96 -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 -.957(acters it reads\), re)144 108 R -.05(ga)-.15 G .956 -(rdless of what the terminal claims it can support.).05 F .956(The name) -5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F(synon)144 120 Q -(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 132 Q -(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E F0 .439 -(The string of characters that should terminate an incremental search w\ -ithout subsequently e)144 144 R -.15(xe)-.15 G(cut-).15 E .935 -(ing the character as a command.)144 156 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 10/Times-Italic@0 SF(ESC)3.434 E F0 -(and)144 168 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) -2.5 E F1 -.1(ke)108 180 S(ymap \(emacs\)).1 E F0 2.323 -(Set the current readline k)144 192 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.324(emacs, emacs-standar)4.823 F(d,)-.37 E -.809(emacs-meta, emacs-ctlx, vi, vi-mo)144 204 R(ve)-.1 E 3.308(,v)-.1 G -(i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F2(vi-insert)3.308 E F0(.) -.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .808(lent to) -.25 F F2(vi-command)3.308 E F0(;)A F2(emacs)144 216 Q F0 .697(is equi) -3.196 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d) --.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697 -(alue is)-.25 F F2(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F -.697(alue of)-.25 F F1(editing\255mode)3.197 E F0(also af)144 228 Q -(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -(mark\255dir)108 240 Q(ectories \(On\))-.18 E F0(If set to)144 252 Q F1 -(On)2.5 E F0 2.5(,c)C(ompleted directory names ha)-2.5 E .3 -.15(ve a s) --.2 H(lash appended.).15 E F1(mark\255modi\214ed\255lines \(Off\))108 -264 Q F0(If set to)144 276 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 288 Q(ed\255dir)-.1 E(ectories \(Off\)) --.18 E F0 .175(If set to)144 300 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 312 -Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 324 Q F0 .192(This v)144 336 R -.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 -(auses readline to match \214les whose names be)-2.692 F .193 -(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E 1.024 -(\214les\) when performing \214lename completion, unless the leading `.) -144 348 R 3.523('i)-.7 G 3.523(ss)-3.523 G 1.023 -(upplied by the user in the)-3.523 F(\214lename to be completed.)144 360 -Q F1(output\255meta \(Off\))108 372 Q F0 .506(If set to)144 384 R F1(On) -3.006 E F0 3.006(,r)C .507(eadline will display characters with the eig\ -hth bit set directly rather than as a meta-)-3.006 F(pre\214x)144 396 Q -(ed escape sequence.)-.15 E F1(page\255completions \(On\))108 408 Q F0 -.809(If set to)144 420 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 432 Q F1 -(print\255completions\255horizontally \(Off\))108 444 Q F0 1.318 -(If set to)144 456 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ -play completions with matches sorted horizontally in alphabetical)-3.818 -F(order)144 468 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1(sho)108 480 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .478 -(This alters the def)144 492 R .478(ault beha)-.1 F .478 -(vior of the completion functions.)-.2 F .477(If set to)5.477 F F1(on) -2.977 E F0 2.977(,w)C .477(ords which ha)-3.077 F .777 -.15(ve m)-.2 H -(ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 504 R(bell.)144 516 Q F1 -(sho)108 528 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 540 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 F1(sho)144 552 Q(w\255all\255if\255ambiguous)-.1 E F0 6.922(.I)C -4.422(fs)-6.922 G 1.922(et to)-4.422 F F1(on)4.422 E F0 4.422(,w)C 1.922 -(ords which ha)-4.522 F 2.223 -.15(ve m)-.2 H 1.923 -(ore than one possible completion).15 F 1.04(without an)144 564 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 576 Q F1 -(visible\255stats \(Off\))108 588 Q F0 .846(If set to)144 600 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 612 Q F1(Conditional Constructs) -87 628.8 Q F0 .05(Readline implements a f)108 640.8 R .05(acility simil\ -ar in spirit to the conditional compilation features of the C preproces\ -sor)-.1 F .096(which allo)108 652.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 664.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 681.6 Q F0(The)24.89 E F1($if)2.963 E -F0 .463(construct allo)2.963 F .462(ws bindings to be made based on the\ - editing mode, the terminal being used,)-.25 F .477 -(or the application using readline.)144 693.6 R .477(The te)5.477 F .477 -(xt of the test e)-.15 F .477 -(xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 705.6 Q(GNU Readline 5.1-beta1)72 768 Q -(2005 Sep 13)109.3 E(4)204 E 0 Cg EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(mode)144 84 Q F0(The)12.67 E F1(mode=)3.712 E F0 1.212 -(form of the)3.712 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i) --.25 H 3.711(su).15 G 1.211 -(sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 96 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 108 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 -120 Q F1(term)144 136.8 Q F0(The)15.46 E F1(term=)3.196 E F0 .696 -(form may be used to include terminal-speci\214c k)3.196 F .996 -.15 -(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 148.8 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 160.8 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 -172.8 Q F1<ad>2.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.5 E F0 -2.5(,f).77 G(or instance.)-2.5 E F1(application)144 189.6 Q F0(The)180 -201.6 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 -213.6 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 225.6 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 237.6 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 249.6 -Q(vious w)-.25 E(ord in Bash:)-.1 E F1($if)180 273.6 Q F0(Bash)2.5 E 2.5 -(#Q)180 285.6 S(uote the current or pre)-2.5 E(vious w)-.25 E(ord)-.1 E -("\\C-xq": "\\eb\\"\\ef\\"")180 297.6 Q F1($endif)180 309.6 Q($endif)108 -326.4 Q F0(This command, as seen in the pre)9.33 E(vious e)-.25 E -(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1($else) -108 343.2 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 E F0 -(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 360 Q F0 .357 -(This directi)144 372 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 384 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 408 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95 -/Times-Bold@0 SF(SEARCHING)72 424.8 Q F0 1.003(Readline pro)108 436.8 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 448.8 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.5 E(emental)-.37 E F0(.).51 E .698 -(Incremental searches be)108 465.6 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 477.6 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 489.6 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 501.6 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 513.6 R .354(alue of the)-.25 F F1 -(isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354 -(riable are used to terminate an incremen-).25 F .6(tal search.)108 -525.6 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F -.6(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6 -(characters will terminate an)3.1 F .123(incremental search.)108 537.6 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 549.6 Q 2.406 -.8 -(To \214)108 566.4 T .806 -(nd other matching entries in the history list, type).8 F F1(C\255s) -3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F -.807(This will search back-)5.806 F -.1(wa)108 578.4 S 1.309(rd or forw) -.1 F 1.309(ard in the history for the ne)-.1 F 1.309 -(xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A) --.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317 -(sequence bound to a readline command will terminate the search and e) -108 590.4 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G -2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 602.4 S -.25(ew)-3.481 G -.981(line will terminate the search and accept the line, thereby e).25 F --.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061 -(list. A)108 614.4 R(mo)3.061 E -.15(ve)-.15 G .562 -(ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562 -(he last line found the current line, and be)-3.062 F(gin)-.15 E -(editing.)108 626.4 Q .567(Non-incremental searches read the entire sea\ -rch string before starting to search for matching history lines.)108 -643.2 R(The search string may be typed by the user or be part of the co\ -ntents of the current line.)108 655.2 Q F3(EDITING COMMANDS)72 672 Q F0 -1.391(The follo)108 684 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 696 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 -712.8 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 724.8 Q -.15(ve)-.2 G -2.5(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5 -(command. The)2.5 F(te)2.5 E -(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13) -109.3 E(5)204 E 0 Cg EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(Commands f)87 84 Q(or Mo)-.25 E(ving)-.1 E -(beginning\255of\255line \(C\255a\))108 96 Q F0(Mo)144 108 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 120 Q F0(Mo)144 132 Q .3 -.15(ve t) --.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 144 S -(rward\255char \(C\255f\)).25 E F0(Mo)144 156 Q .3 -.15(ve f)-.15 H(orw) -.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 -168 Q F0(Mo)144 180 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E -F1 -.25(fo)108 192 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 204 -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 216 Q F1(backward\255w)108 228 Q(ord \(M\255b\)) --.1 E F0(Mo)144 240 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 252 Q F1(clear\255scr)108 264 Q -(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 276 R .993 -(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G -.993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 288 Q F1 -.18(re)108 300 -S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -312 Q F1(Commands f)87 328.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 340.8 Q(n\))-.15 E F0 .365 -(Accept the line re)144 352.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 364.8 R F1 -(add_history\(\))3.24 E F0 5.741(.I)C 3.241(ft)-5.741 G .741 -(he line is a modi\214ed history line, the history)-3.241 F -(line is restored to its original state.)144 376.8 Q F1(pr)108 388.8 Q --.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 -400.8 Q(vious command from the history list, mo)-.25 E -(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 Q -F0(Fetch the ne)144 424.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 436.8 Q F0(Mo)144 448.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 460.8 Q F0(Mo)144 472.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 484.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.471(Search backw)144 496.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.47 -(ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 508.8 Q F1 -.25(fo)108 520.8 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 -(Search forw)144 532.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 544.8 Q F1 -(non\255incr)108 556.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 568.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 580.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 592.8 Q -(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.353(Search forw)144 604.8 R 1.354(ard through the history using \ -a non-incremental search for a string supplied by the)-.1 F(user)144 -616.8 Q(.)-.55 E F1(history\255sear)108 628.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .249(Search forw)144 640.8 R .249(ard through the history for\ - the string of characters between the start of the current line)-.1 F -(and the current cursor position \(the)144 652.8 Q/F2 10/Times-Italic@0 -SF(point)2.5 E F0 2.5(\). This)B(is a non-incremental search.)2.5 E F1 -(history\255sear)108 664.8 Q(ch\255backward)-.18 E F0 .95(Search backw) -144 676.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 688.8 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 700.8 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 -712.8 R .622(gument to the pre)-.18 F .622 -(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .794(at point.)144 724.8 R -.4(Wi)5.794 G .794 -(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794 -(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794(ord from the pre) --.1 F .794(vious command \(the w)-.25 F .795(ords in the)-.1 F -(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(6)204 E 0 Cg EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R(pre) -144 84 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/F1 10 -/Times-Italic@0 SF(n)2.791 E F0 .291(th w)B .291(ord from the end of)-.1 -F .281(the pre)144 96 R .281(vious command.)-.25 F .281(Once the ar) -5.281 F(gument)-.18 E F1(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 F1(n)A F0(")A -(history e)144 108 Q(xpansion had been speci\214ed.)-.15 E/F2 10 -/Times-Bold@0 SF(yank\255last\255ar)108 120 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 -132 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 144 S .735(th an ar).4 F .735(gument, beha)-.18 F 1.035 -.15 -(ve ex)-.2 H .735(actly lik).15 F(e)-.1 E F2(yank\255nth\255ar)3.235 E -(g)-.1 E F0 5.736(.S)C(uccessi)-5.736 E 1.036 -.15(ve c)-.25 H .736 -(alls to).15 F F2(yank\255last\255ar)3.236 E(g)-.1 E F0(mo)3.236 E -.15 -(ve)-.15 G .728(back through the history list, inserting the last ar)144 -156 R .728(gument of each line in turn.)-.18 F .728(The history e)5.728 -F(xpan-)-.15 E .14(sion f)144 168 R .14(acilities are used to e)-.1 F -.14(xtract the last ar)-.15 F .14(gument, as if the "!$" history e)-.18 -F .14(xpansion had been speci-)-.15 F(\214ed.)144 180 Q F2(Commands f)87 -196.8 Q(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 -208.8 Q F0 .358(Delete the character at point.)144 220.8 R .358 -(If point is at the be)5.358 F .358 -(ginning of the line, there are no characters in the)-.15 F -(line, and the last character typed w)144 232.8 Q(as not bound to)-.1 E -F2(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E/F3 9/Times-Bold@0 -SF(EOF)2.5 E/F4 9/Times-Roman@0 SF(.)A F2 -(backward\255delete\255char \(Rubout\))108 244.8 Q F0 .552 -(Delete the character behind the cursor)144 256.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 268.8 Q F2 -.25(fo)108 280.8 S -(rward\255backward\255delete\255char).25 E F0 .474 -(Delete the character under the cursor)144 292.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 304.8 Q F2 -(quoted\255insert \(C\255q, C\255v\))108 316.8 Q F0 1.228(Add the ne)144 -328.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 F2(C\255q)144 340.8 -Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F2(tab\255insert \(M-T)108 -352.8 Q(AB\))-.9 E F0(Insert a tab character)144 364.8 Q(.)-.55 E F2 -(self\255insert \(a, b, A, 1, !, ...\))108 376.8 Q F0 -(Insert the character typed.)144 388.8 Q F2 -(transpose\255chars \(C\255t\))108 400.8 Q F0 .322 -(Drag the character before point forw)144 412.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 -(If point is at the end of the line, then this transposes the tw)144 -424.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(ar)144 436.8 Q(guments ha)-.18 E -.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F2 -(transpose\255w)108 448.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 -460.8 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 472.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F2(upcase\255w)108 484.8 Q -(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 -496.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.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 508.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F2(do)108 520.8 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 532.8 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 544.8 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F2(capitalize\255w)108 556.8 Q -(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 -568.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.975 -(ument, capitalize the pre).18 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 F2 -.1(ove)108 -592.8 S(rwrite\255mode).1 E F0 -.8(To)144 604.8 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 616.8 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 628.8 Q F2(emacs)4.395 E F0(mode;)4.395 E F2(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 F1 -.37(re) -4.394 G(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968 -(mode. In)144 640.8 R -.15(ove)3.968 G 1.468 -(rwrite mode, characters bound to).15 F F2(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 652.8 R .958(xt to the right.)-.15 F .957 -(Characters bound to)5.958 F F2(backward\255delete\255char)3.457 E F0 -.957(replace the character)3.457 F(before point with a space.)144 664.8 -Q(By def)5 E(ault, this command is unbound.)-.1 E F2(Killing and Y)87 -681.6 Q(anking)-.85 E(kill\255line \(C\255k\))108 693.6 Q F0 -(Kill the te)144 705.6 Q(xt from point to the end of the line.)-.15 E -(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(7)204 E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(backward\255kill\255line \(C\255x Rubout\))108 84 Q F0 -(Kill backw)144 96 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 108 Q F0(Kill backw)144 120 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 132 Q F0 -(Kill all characters on the current line, no matter where point is.)144 -144 Q F1(kill\255w)108 156 Q(ord \(M\255d\))-.1 E F0 1.308 -(Kill from point the end of the current w)144 168 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 180 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 192 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 204 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 216 Q -(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 228 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 -240 Q F1(unix\255\214lename\255rubout)108 252 Q F0 .166(Kill the w)144 -264 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 276 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 288 Q F0 -(Delete all spaces and tabs around point.)144 300 Q F1(kill\255r)108 312 -Q(egion)-.18 E F0 1.13(Kill the te)144 324 R 1.13 -(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)3.63 E F0 -(\(sa)3.63 E -.15(ve)-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F -1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144 -336 S(gion)-.03 E F0(.)A F1(copy\255r)108 348 Q(egion\255as\255kill)-.18 -E F0(Cop)144 360 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 372 Q(ord)-.1 E F0(Cop)144 384 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 396 -Q(ord)-.1 E F0(.)A F1(copy\255f)108 408 Q(orward\255w)-.25 E(ord)-.1 E -F0(Cop)144 420 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 432 Q(ord)-.1 E F0(.)A F1 -(yank \(C\255y\))108 444 Q F0 -1(Ya)144 456 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 468 Q F0 -(Rotate the kill ring, and yank the ne)144 480 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 496.8 Q -(guments)-.1 E(digit\255ar)108 508.8 Q -(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 -(Add this digit to the ar)144 520.8 R .641 -(gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18 -(rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-) --.15 E(ati)144 532.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 544.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 -(This is another w)144 556.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 -(wed by one or more digits,)-.25 F 1.376 -(optionally with a leading minus sign, those digits de\214ne the ar)144 -568.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -580.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 592.8 R .898 -(As a special case, if this command is immediately follo)5.898 F .898 -(wed by a character that is)-.25 F .243 -(neither a digit or minus sign, the ar)144 604.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 616.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 628.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 645.6 Q(complete \(T)108 657.6 Q(AB\))-.9 E F0 1.909 -(Attempt to perform completion on the te)144 669.6 R 1.908 -(xt before point.)-.15 F 1.908(The actual completion performed is)6.908 -F(application-speci\214c.)144 681.6 Q F1(Bash)5.517 E F0 3.017(,f)C .518 -(or instance, attempts completion treating the te)-3.017 F .518 -(xt as a v)-.15 F .518(ariable \(if the)-.25 F(te)144 693.6 Q .657 -(xt be)-.15 F .657(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 705.6 R .93 -(If none of these produces a match, \214lename)5.929 F 1.274 -(completion is attempted.)144 717.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 729.6 S(riab\ -les, and only attempts \214lename completion under certain circumstance\ -s.).25 E(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(8)204 E 0 -Cg EP -%%Page: 9 9 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(possible\255completions \(M\255?\))108 84 Q F0 -(List the possible completions of the te)144 96 Q(xt before point.)-.15 -E F1(insert\255completions \(M\255*\))108 108 Q F0 .783 -(Insert all completions of the te)144 120 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 132 Q F0(.)A F1 -(menu\255complete)108 144 Q F0 .929(Similar to)144 156 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 168 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 180 R .828 -(At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 192 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/F2 10/Times-Italic@0 SF(n)3.227 E -F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 -(positions forw)144 204 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 216 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(delete\255char\255or\255list)108 228 Q F0 .373 -(Deletes the character under the cursor if not at the be)144 240 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 252 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 268.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108 -280.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 292.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 304.8 Q 2.5(o\() --.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 316.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 328.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 340.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 352.8 Q -.15(ey)-.1 G(board.).15 E F1 -(Miscellaneous)87 369.6 Q -.18(re)108 381.6 S<ad72>.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 -(Read in the contents of the)144 393.6 R F2(inputr)4.276 E(c)-.37 E F0 -1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777 -(indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144 -405.6 Q F1(abort \(C\255g\))108 417.6 Q F0 3.249 -(Abort the current editing command and ring the terminal')144 429.6 R -5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 -(bell\255style)144 441.6 Q F0(\).)A F1(do\255upper)108 453.6 Q -(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 465.6 R F2(x) -4.255 E F0 1.755(is lo)4.255 F 1.756 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 477.6 Q(.)-.55 E F1(pr)108 489.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 501.6 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 513.6 Q F0 -(Incremental undo, separately remembered for each line.)144 525.6 Q F1 --2.29 -.18(re v)108 537.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 549.6 R 1.095(This is lik)6.095 -F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E -F0 1.095(command enough times to)3.595 F -(return the line to its initial state.)144 561.6 Q F1 -(tilde\255expand \(M\255&\))108 573.6 Q F0(Perform tilde e)144 585.6 Q -(xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255<space>\))108 597.6 Q F0 -(Set the mark to the point.)144 609.6 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 621.6 Q F0(Sw) -144 633.6 Q .282(ap the point with the mark.)-.1 F .283 -(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G -2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) -144 645.6 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 657.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 -669.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G -3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 -(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05 -(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 681.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 693.6 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 705.6 S 1.043 -(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G -3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 -(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 717.6 Q -(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(9)204 E 0 Cg EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R/F1 10 -/Times-Bold@0 SF(insert\255comment \(M\255#\))108 84 Q F0 -.4(Wi)144 96 -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 .48(riable is inserted at the).25 F(be)144 108 Q .097 -(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098 -(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E -.322(the characters at the be)144 120 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.821(,t)C .321(he v)-2.821 F .321(alue is) --.25 F 1.013(inserted, otherwise the characters in)144 132 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 144 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 156 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 168 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 180 -Q F0 .627(Print all of the functions and their k)144 192 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 204 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 216 Q(ariables)-.1 E F0 -.283(Print all of the settable v)144 228 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 240 Q -(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 252 Q(os)-.18 E F0 .593 -(Print all of the readline k)144 264 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 276 Q -.528(gument is supplied, the output is formatted in such a w)-.18 F .528 -(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 -(\214le.)144 288 Q F1(emacs\255editing\255mode \(C\255e\))108 300 Q F0 -(When in)144 312 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 324 Q F0(When in)144 336 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 352.8 Q -.548(AU) --.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo) -108 364.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<character>, and are referred to as)108 376.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.116 -(in the list of emacs standard bindings are bound to the)108 388.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 -400.8 R .945(In vi insertion mode, all characters not speci\214cally me\ -ntioned are bound to)5.945 F F1(self\255insert)108 412.8 Q F0 5.359(.C)C -.359(haracters assigned to signal generation by)-5.359 F F2(stty)2.859 E -F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s) -.15 H .358(uch as C-Z or C-C,).4 F .187(retain that function.)108 424.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 436.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 448.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5 -G(riable\).).25 E F1(Emacs Mode)87 465.6 Q F0(Emacs Standard bindings) -151.2 477.6 Q 2.5("C-@" set-mark)151.2 501.6 R 2.5("C-A" be)151.2 513.6 -R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 525.6 R(ard-char)-.1 E -2.5("C-D" delete-char)151.2 537.6 R 2.5("C-E" end-of-line)151.2 549.6 R -2.5("C-F" forw)151.2 561.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 573.6 -R 2.5("C-H" backw)151.2 585.6 R(ard-delete-char)-.1 E 2.5 -("C-I" complete)151.2 597.6 R 2.5("C-J" accept-line)151.2 609.6 R 2.5 -("C-K" kill-line)151.2 621.6 R 2.5("C-L" clear)151.2 633.6 R(-screen)-.2 -E 2.5("C-M" accept-line)151.2 645.6 R 2.5("C-N" ne)151.2 657.6 R -(xt-history)-.15 E 2.5("C-P" pre)151.2 669.6 R(vious-history)-.25 E 2.5 -("C-Q" quoted-insert)151.2 681.6 R 2.5("C-R" re)151.2 693.6 R -.15(ve) --.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 705.6 R -(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 717.6 R 2.5 -("C-U" unix-line-discard)151.2 729.6 R(GNU Readline 5.1-beta1)72 768 Q -(2005 Sep 13)109.3 E(10)199 E 0 Cg EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5 -("C-V" quoted-insert)151.2 84 R 2.5("C-W" unix-w)151.2 96 R(ord-rubout) --.1 E 2.5("C-Y" yank)151.2 108 R 2.5("C-]" character)151.2 120 R -(-search)-.2 E 2.5("C-_" undo)151.2 132 R 3.333("")151.2 144 S(to "/") --.833 E(self-insert)5 E 2.5("0" to)151.2 156 R 2.5("9" self-insert)2.5 F -2.5(":" to)151.2 168 R 2.5("~" self-insert)2.5 F 2.5("C-?" backw)151.2 -180 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 196.8 Q 2.5 -("M-C-G" abort)151.2 220.8 R 2.5("M-C-H" backw)151.2 232.8 R(ard-kill-w) --.1 E(ord)-.1 E 2.5("M-C-I" tab-insert)151.2 244.8 R 2.5 -("M-C-J" vi-editing-mode)151.2 256.8 R 2.5("M-C-M" vi-editing-mode)151.2 -268.8 R 2.5("M-C-R" re)151.2 280.8 R -.15(ve)-.25 G(rt-line).15 E 2.5 -("M-C-Y" yank-nth-ar)151.2 292.8 R(g)-.18 E 2.5("M-C-[" complete)151.2 -304.8 R 2.5("M-C-]" character)151.2 316.8 R(-search-backw)-.2 E(ard)-.1 -E 2.5("M-space" set-mark)151.2 328.8 R 2.5("M-#" insert-comment)151.2 -340.8 R 2.5("M-&" tilde-e)151.2 352.8 R(xpand)-.15 E 2.5 -("M-*" insert-completions)151.2 364.8 R 2.5("M--" digit-ar)151.2 376.8 R -(gument)-.18 E 2.5("M-." yank-last-ar)151.2 388.8 R(g)-.18 E 2.5 -("M-0" digit-ar)151.2 400.8 R(gument)-.18 E 2.5("M-1" digit-ar)151.2 -412.8 R(gument)-.18 E 2.5("M-2" digit-ar)151.2 424.8 R(gument)-.18 E 2.5 -("M-3" digit-ar)151.2 436.8 R(gument)-.18 E 2.5("M-4" digit-ar)151.2 -448.8 R(gument)-.18 E 2.5("M-5" digit-ar)151.2 460.8 R(gument)-.18 E 2.5 -("M-6" digit-ar)151.2 472.8 R(gument)-.18 E 2.5("M-7" digit-ar)151.2 -484.8 R(gument)-.18 E 2.5("M-8" digit-ar)151.2 496.8 R(gument)-.18 E 2.5 -("M-9" digit-ar)151.2 508.8 R(gument)-.18 E 2.5("M-<" be)151.2 520.8 R -(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 532.8 R -2.5("M->" end-of-history)151.2 544.8 R 2.5("M-?" possible-completions) -151.2 556.8 R 2.5("M-B" backw)151.2 568.8 R(ard-w)-.1 E(ord)-.1 E 2.5 -("M-C" capitalize-w)151.2 580.8 R(ord)-.1 E 2.5("M-D" kill-w)151.2 592.8 -R(ord)-.1 E 2.5("M-F" forw)151.2 604.8 R(ard-w)-.1 E(ord)-.1 E 2.5 -("M-L" do)151.2 616.8 R(wncase-w)-.25 E(ord)-.1 E 2.5 -("M-N" non-incremental-forw)151.2 628.8 R(ard-search-history)-.1 E 2.5 -("M-P" non-incremental-re)151.2 640.8 R -.15(ve)-.25 G -(rse-search-history).15 E 2.5("M-R" re)151.2 652.8 R -.15(ve)-.25 G -(rt-line).15 E 2.5("M-T" transpose-w)151.2 664.8 R(ords)-.1 E 2.5 -("M-U" upcase-w)151.2 676.8 R(ord)-.1 E 2.5("M-Y" yank-pop)151.2 688.8 R -2.5("M-\\" delete-horizontal-space)151.2 700.8 R 2.5("M-~" tilde-e)151.2 -712.8 R(xpand)-.15 E 2.5("M-C-?" backw)151.2 724.8 R(ard-kill-w)-.1 E -(ord)-.1 E(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(11)199 E -0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5 -("M-_" yank-last-ar)151.2 84 R(g)-.18 E(Emacs Control-X bindings)151.2 -100.8 Q 2.5("C-XC-G" abort)151.2 124.8 R 2.5 -("C-XC-R" re-read-init-\214le)151.2 136.8 R 2.5("C-XC-U" undo)151.2 -148.8 R 2.5("C-XC-X" e)151.2 160.8 R(xchange-point-and-mark)-.15 E 2.5 -("C-X\(" start-kbd-macro)151.2 172.8 R 2.5("C-X\)" end-kbd-macro)151.2 -184.8 R 2.5("C-XE" call-last-kbd-macro)151.2 196.8 R 2.5("C-XC-?" backw) -151.2 208.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF -(VI Mode bindings)87 237.6 Q F0(VI Insert Mode functions)151.2 249.6 Q -2.5("C-D" vi-eof-maybe)151.2 273.6 R 2.5("C-H" backw)151.2 285.6 R -(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 297.6 R 2.5 -("C-J" accept-line)151.2 309.6 R 2.5("C-M" accept-line)151.2 321.6 R 2.5 -("C-R" re)151.2 333.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5 -("C-S" forw)151.2 345.6 R(ard-search-history)-.1 E 2.5 -("C-T" transpose-chars)151.2 357.6 R 2.5("C-U" unix-line-discard)151.2 -369.6 R 2.5("C-V" quoted-insert)151.2 381.6 R 2.5("C-W" unix-w)151.2 -393.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 405.6 R 2.5("C-[" vi-mo) -151.2 417.6 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 429.6 -R 3.333("")151.2 441.6 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw) -151.2 453.6 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2 -470.4 Q 2.5("C-D" vi-eof-maybe)151.2 494.4 R 2.5 -("C-E" emacs-editing-mode)151.2 506.4 R 2.5("C-G" abort)151.2 518.4 R -2.5("C-H" backw)151.2 530.4 R(ard-char)-.1 E 2.5("C-J" accept-line)151.2 -542.4 R 2.5("C-K" kill-line)151.2 554.4 R 2.5("C-L" clear)151.2 566.4 R -(-screen)-.2 E 2.5("C-M" accept-line)151.2 578.4 R 2.5("C-N" ne)151.2 -590.4 R(xt-history)-.15 E 2.5("C-P" pre)151.2 602.4 R(vious-history)-.25 -E 2.5("C-Q" quoted-insert)151.2 614.4 R 2.5("C-R" re)151.2 626.4 R -.15 -(ve)-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 638.4 R -(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 650.4 R 2.5 -("C-U" unix-line-discard)151.2 662.4 R 2.5("C-V" quoted-insert)151.2 -674.4 R 2.5("C-W" unix-w)151.2 686.4 R(ord-rubout)-.1 E 2.5("C-Y" yank) -151.2 698.4 R 2.5("C-_" vi-undo)151.2 710.4 R -4.166 3.333("" f)151.2 -722.4 T(orw)-3.333 E(ard-char)-.1 E(GNU Readline 5.1-beta1)72 768 Q -(2005 Sep 13)109.3 E(12)199 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5 -("#" insert-comment)151.2 84 R 2.5("$" end-of-line)151.2 96 R 2.5 -("%" vi-match)151.2 108 R 2.5("&" vi-tilde-e)151.2 120 R(xpand)-.15 E -2.5("*" vi-complete)151.2 132 R 2.5("+" ne)151.2 144 R(xt-history)-.15 E -2.5("," vi-char)151.2 156 R(-search)-.2 E 2.5("-" pre)151.2 168 R -(vious-history)-.25 E 2.5("." vi-redo)151.2 180 R 2.5("/" vi-search) -151.2 192 R 2.5("0" be)151.2 204 R(ginning-of-line)-.15 E("1" to "9") -151.2 216 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)151.2 228 R -(-search)-.2 E 2.5("=" vi-complete)151.2 240 R 2.5("?" vi-search)151.2 -252 R 2.5("A" vi-append-eol)151.2 264 R 2.5("B" vi-pre)151.2 276 R(v-w) --.25 E(ord)-.1 E 2.5("C" vi-change-to)151.2 288 R 2.5("D" vi-delete-to) -151.2 300 R 2.5("E" vi-end-w)151.2 312 R(ord)-.1 E 2.5("F" vi-char)151.2 -324 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 336 R 2.5 -("I" vi-insert-be)151.2 348 R(g)-.15 E 2.5("N" vi-search-ag)151.2 360 R -(ain)-.05 E 2.5("P" vi-put)151.2 372 R 2.5("R" vi-replace)151.2 384 R -2.5("S" vi-subst)151.2 396 R 2.5("T" vi-char)151.2 408 R(-search)-.2 E -2.5("U" re)151.2 420 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 -432 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 444 R(ard-delete-char) --.1 E 2.5("Y" vi-yank-to)151.2 456 R 2.5("\\" vi-complete)151.2 468 R -2.5("^" vi-\214rst-print)151.2 480 R 2.5("_" vi-yank-ar)151.2 492 R(g) --.18 E 2.5("`" vi-goto-mark)151.2 504 R 2.5("a" vi-append-mode)151.2 516 -R 2.5("b" vi-pre)151.2 528 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to) -151.2 540 R 2.5("d" vi-delete-to)151.2 552 R 2.5("e" vi-end-w)151.2 564 -R(ord)-.1 E 2.5("f" vi-char)151.2 576 R(-search)-.2 E 2.5("h" backw) -151.2 588 R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 600 R 2.5 -("j" ne)151.2 612 R(xt-history)-.15 E 2.5("k" pre)151.2 624 R(v-history) --.25 E 2.5("l" forw)151.2 636 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 -648 R 2.5("n" vi-search-ag)151.2 660 R(ain)-.05 E 2.5("p" vi-put)151.2 -672 R 2.5("r" vi-change-char)151.2 684 R 2.5("s" vi-subst)151.2 696 R -2.5("t" vi-char)151.2 708 R(-search)-.2 E 2.5("u" vi-undo)151.2 720 R -(GNU Readline 5.1-beta1)72 768 Q(2005 Sep 13)109.3 E(13)199 E 0 Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 342.2(READLINE\(3\) READLINE\(3\))72 48 R 2.5 -("w" vi-ne)151.2 84 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 96 R -2.5("y" vi-yank-to)151.2 108 R 2.5("|" vi-column)151.2 120 R 2.5 -("~" vi-change-case)151.2 132 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 -148.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 160.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 172.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 184.8 Q F0(\(1\))A F1 -(FILES)72 201.6 Q F2(~/.inputr)109.666 213.6 Q(c)-.37 E F0(Indi)144 -225.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 242.4 S(THORS).548 E F0 -(Brian F)108 254.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E -(bfox@gnu.or)108 266.4 Q(g)-.18 E(Chet Rame)108 283.2 Q 1.3 -.65(y, C) --.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) --.25 G(rsity).15 E(chet@ins.CWR)108 295.2 Q(U.Edu)-.4 E F1 -.11(BU)72 -312 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b) -108 324 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 336 Q(ersion of the)-.15 E F3 --.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.) -.15 E .705(Once you ha)108 352.8 R 1.005 -.15(ve d)-.2 H .705 -(etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b) --.15 F .704(ug report to)-.2 F F2 -.2(bu)3.204 G(g\255r).2 E(eadline) --.37 E F0(@)A F2(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou) --3.204 E(ha)108 364.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 376.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 393.6 Q -(ug reports concerning this manual page should be directed to)-.2 E F2 --.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E F1 --.11(BU)72 410.4 S(GS).11 E F0(It')108 422.4 Q 2.5(st)-.55 G -(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 5.1-beta1)72 768 -Q(2005 Sep 13)109.3 E(14)199 E 0 Cg EP -%%Trailer -end -%%EOF diff --git a/readline/doc/rluserman.dvi b/readline/doc/rluserman.dvi Binary files differdeleted file mode 100644 index 7727865..0000000 --- a/readline/doc/rluserman.dvi +++ /dev/null diff --git a/readline/doc/rluserman.html b/readline/doc/rluserman.html deleted file mode 100644 index 3d8595b..0000000 --- a/readline/doc/rluserman.html +++ /dev/null @@ -1,2796 +0,0 @@ -<HTML> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<!-- Created on December, 6 2005 by texi2html 1.64 --> -<!-- -Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) - Karl Berry <karl@freefriends.org> - Olaf Bachmann <obachman@mathematik.uni-kl.de> - and many others. -Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de> -Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> - ---> -<HEAD> -<TITLE>GNU Readline Library: </TITLE> - -<META NAME="description" CONTENT="GNU Readline Library: "> -<META NAME="keywords" CONTENT="GNU Readline Library: "> -<META NAME="resource-type" CONTENT="document"> -<META NAME="distribution" CONTENT="global"> -<META NAME="Generator" CONTENT="texi2html 1.64"> - -</HEAD> - -<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> - -<A NAME="SEC_Top"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>GNU Readline Library</H1></P><P> - -This document describes the end user interface of the GNU Readline Library, -a utility which aids in the consistency of user interface across discrete -programs which provide a command line interface. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC23">A. Copying This Manual</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<HR SIZE=1> -<A NAME="SEC1"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<A NAME="Command Line Editing"></A> -<H1> 1. Command Line Editing </H1> -<!--docid::SEC1::--> -<P> - -This chapter describes the basic features of the GNU -command line editing interface. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands - available for binding</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline - behave like the vi editor.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Introduction and Notation"></A> -<HR SIZE="6"> -<A NAME="SEC2"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.1 Introduction to Line Editing </H2> -<!--docid::SEC2::--> -<P> - -The following paragraphs describe the notation used to represent -keystrokes. -</P><P> - -The text <KBD>C-k</KBD> is read as `Control-K' and describes the character -produced when the <KBD>k</KBD> key is pressed while the Control key -is depressed. -</P><P> - -The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD> -key is pressed. -The Meta key is labeled <KBD>ALT</KBD> on many keyboards. -On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of -the space bar), the <KBD>ALT</KBD> on the left side is generally set to -work as a Meta key. -The <KBD>ALT</KBD> key on the right may also be configured to work as a -Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. -</P><P> - -If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as -a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD> -<EM>first</EM>, and then typing <KBD>k</KBD>. -Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key. -</P><P> - -The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the -character produced by <EM>metafying</EM> <KBD>C-k</KBD>. -</P><P> - -In addition, several keys have their own names. Specifically, -<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all -stand for themselves when seen in this text, or in an init file -(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>). -If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will -produce the desired character. -The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on -some keyboards. -</P><P> - -<A NAME="Readline Interaction"></A> -<HR SIZE="6"> -<A NAME="SEC3"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.2 Readline Interaction </H2> -<!--docid::SEC3::--> -<P> - -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press <KBD>RET</KBD>. You do not have to be at the -end of the line to press <KBD>RET</KBD>; the entire line is accepted -regardless of the location of the cursor within the line. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Readline Bare Essentials"></A> -<HR SIZE="6"> -<A NAME="SEC4"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.1 Readline Bare Essentials </H3> -<!--docid::SEC4::--> -<P> - -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your -erase character to back up and delete the mistyped character. -</P><P> - -Sometimes you may mistype a character, and -not notice the error until you have typed several other characters. In -that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then -correct your mistake. Afterwards, you can move the cursor to the right -with <KBD>C-f</KBD>. -</P><P> - -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text -that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the -blank space created by the removal of the text. A list of the bare -essentials for editing the text of an input line follows. -</P><P> - -<DL COMPACT> -<DT><KBD>C-b</KBD> -<DD>Move back one character. -<DT><KBD>C-f</KBD> -<DD>Move forward one character. -<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD> -<DD>Delete the character to the left of the cursor. -<DT><KBD>C-d</KBD> -<DD>Delete the character underneath the cursor. -<DT>Printing characters -<DD>Insert the character into the line at the cursor. -<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD> -<DD>Undo the last editing command. You can undo all the way back to an -empty line. -</DL> -<P> - -(Depending on your configuration, the <KBD>Backspace</KBD> key be set to -delete the character to the left of the cursor and the <KBD>DEL</KBD> key set -to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather -than the character to the left of the cursor.) -</P><P> - -<A NAME="Readline Movement Commands"></A> -<HR SIZE="6"> -<A NAME="SEC5"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.2 Readline Movement Commands </H3> -<!--docid::SEC5::--> -<P> - -The above table describes the most basic keystrokes that you need -in order to do editing of the input line. For your convenience, many -other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>, -<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly -about the line. -</P><P> - -<DL COMPACT> -<DT><KBD>C-a</KBD> -<DD>Move to the start of the line. -<DT><KBD>C-e</KBD> -<DD>Move to the end of the line. -<DT><KBD>M-f</KBD> -<DD>Move forward a word, where a word is composed of letters and digits. -<DT><KBD>M-b</KBD> -<DD>Move backward a word. -<DT><KBD>C-l</KBD> -<DD>Clear the screen, reprinting the current line at the top. -</DL> -<P> - -Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. -</P><P> - -<A NAME="Readline Killing Commands"></A> -<HR SIZE="6"> -<A NAME="SEC6"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.3 Readline Killing Commands </H3> -<!--docid::SEC6::--> -<P> - -<A NAME="IDX1"></A> -<A NAME="IDX2"></A> -</P><P> - -<EM>Killing</EM> text means to delete the text from the line, but to save -it away for later use, usually by <EM>yanking</EM> (re-inserting) -it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) -</P><P> - -If the description for a command says that it `kills' text, then you can -be sure that you can get the text back in a different (or the same) -place later. -</P><P> - -When you use a kill command, the text is saved in a <EM>kill-ring</EM>. -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill -ring is not line specific; the text that you killed on a previously -typed line is available to be yanked back later, when you are typing -another line. -<A NAME="IDX3"></A> -</P><P> - -Here is the list of commands for killing text. -</P><P> - -<DL COMPACT> -<DT><KBD>C-k</KBD> -<DD>Kill the text from the current cursor position to the end of the line. -<P> - -<DT><KBD>M-d</KBD> -<DD>Kill from the cursor to the end of the current word, or, if between -words, to the end of the next word. -Word boundaries are the same as those used by <KBD>M-f</KBD>. -<P> - -<DT><KBD>M-<KBD>DEL</KBD></KBD> -<DD>Kill from the cursor the start of the current word, or, if between -words, to the start of the previous word. -Word boundaries are the same as those used by <KBD>M-b</KBD>. -<P> - -<DT><KBD>C-w</KBD> -<DD>Kill from the cursor to the previous whitespace. This is different than -<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ. -<P> - -</DL> -<P> - -Here is how to <EM>yank</EM> the text back into the line. Yanking -means to copy the most-recently-killed text from the kill buffer. -</P><P> - -<DL COMPACT> -<DT><KBD>C-y</KBD> -<DD>Yank the most recently killed text back into the buffer at the cursor. -<P> - -<DT><KBD>M-y</KBD> -<DD>Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>. -</DL> -<P> - -<A NAME="Readline Arguments"></A> -<HR SIZE="6"> -<A NAME="SEC7"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.4 Readline Arguments </H3> -<!--docid::SEC7::--> -<P> - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the <I>sign</I> of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type <SAMP>`M-- C-k'</SAMP>. -</P><P> - -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once -you have typed one meta digit to get the argument started, you can type -the remainder of the digits, and then the command. For example, to give -the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>, -which will delete the next ten characters on the input line. -</P><P> - -<A NAME="Searching"></A> -<HR SIZE="6"> -<A NAME="SEC8"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.2.5 Searching for Commands in the History </H3> -<!--docid::SEC8::--> -<P> - -Readline provides commands for searching through the command history -for lines containing a specified string. -There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>. -</P><P> - -Incremental searches begin before the user has finished typing the -search string. -As each character of the search string is typed, Readline displays -the next entry from the history matching the string typed so far. -An incremental search requires only as many characters as needed to -find the desired history entry. -To search backward in the history for a particular string, type -<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history. -The characters present in the value of the <CODE>isearch-terminators</CODE> variable -are used to terminate an incremental search. -If that variable has not been assigned a value, the <KBD>ESC</KBD> and -<KBD>C-J</KBD> characters will terminate an incremental search. -<KBD>C-g</KBD> will abort an incremental search and restore the original line. -When the search is terminated, the history entry containing the -search string becomes the current line. -</P><P> - -To find other matching entries in the history list, type <KBD>C-r</KBD> or -<KBD>C-s</KBD> as appropriate. -This will search backward or forward in the history for the next -entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate -the search and execute that command. -For instance, a <KBD>RET</KBD> will terminate the search and accept -the line, thereby executing the command from the history list. -A movement command will terminate the search, make the last line found -the current line, and begin editing. -</P><P> - -Readline remembers the last incremental search string. If two -<KBD>C-r</KBD>s are typed without any intervening characters defining a new -search string, any remembered search string is used. -</P><P> - -Non-incremental searches read the entire search string before starting -to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. -</P><P> - -<A NAME="Readline Init File"></A> -<HR SIZE="6"> -<A NAME="SEC9"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.3 Readline Init File </H2> -<!--docid::SEC9::--> -<P> - -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. -Any user can customize programs that use Readline by putting -commands in an <EM>inputrc</EM> file, conventionally in his home directory. -The name of this -file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If -that variable is unset, the default is <TT>`~/.inputrc'</TT>. -</P><P> - -When a program which uses the Readline library starts up, the -init file is read, and the key bindings are set. -</P><P> - -In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus -incorporating any changes that you might have made to it. -</P><P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR> -</TABLE> - -<br> -<TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR> -</TABLE> - -<br> -<TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="Readline Init File Syntax"></A> -<HR SIZE="6"> -<A NAME="SEC10"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.1 Readline Init File Syntax </H3> -<!--docid::SEC10::--> -<P> - -There are only a few basic constructs allowed in the -Readline init file. Blank lines are ignored. -Lines beginning with a <SAMP>`#'</SAMP> are comments. -Lines beginning with a <SAMP>`$'</SAMP> indicate conditional -constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines -denote variable settings and key bindings. -</P><P> - -<DL COMPACT> -<DT>Variable Settings -<DD>You can modify the run-time behavior of Readline by -altering the values of variables in Readline -using the <CODE>set</CODE> command within the init file. -The syntax is simple: -<P> - -<TABLE><tr><td> </td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR> -</pre></td></tr></table></P><P> - -Here, for example, is how to -change from the default Emacs-like key binding to use -<CODE>vi</CODE> line editing commands: -</P><P> - -<TABLE><tr><td> </td><td class=example><pre>set editing-mode vi -</pre></td></tr></table></P><P> - -Variable names and values, where appropriate, are recognized without regard -to case. Unrecognized variable names are ignored. -</P><P> - -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other -value results in the variable being set to off. -</P><P> - -A great deal of run-time behavior is changeable with the following -variables. -</P><P> - -<A NAME="IDX4"></A> -<DL COMPACT> - -<DT><CODE>bell-style</CODE> -<DD><A NAME="IDX5"></A> -Controls what happens when Readline wants to ring the terminal bell. -If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to -<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available. -If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring -the terminal's bell. -<P> - -<DT><CODE>bind-tty-special-chars</CODE> -<DD><A NAME="IDX6"></A> -If set to <SAMP>`on'</SAMP>, Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. -<P> - -<DT><CODE>comment-begin</CODE> -<DD><A NAME="IDX7"></A> -The string to insert at the beginning of the line when the -<CODE>insert-comment</CODE> command is executed. The default value -is <CODE>"#"</CODE>. -<P> - -<DT><CODE>completion-ignore-case</CODE> -<DD>If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion -in a case-insensitive fashion. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>completion-query-items</CODE> -<DD><A NAME="IDX8"></A> -The number of possible completions that determines when the user is -asked whether the list of possibilities should be displayed. -If the number of possible completions is greater than this value, -Readline will ask the user whether or not he wishes to view -them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is <CODE>100</CODE>. -<P> - -<DT><CODE>convert-meta</CODE> -<DD><A NAME="IDX9"></A> -If set to <SAMP>`on'</SAMP>, Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an <KBD>ESC</KBD> character, converting them to a -meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>. -<P> - -<DT><CODE>disable-completion</CODE> -<DD><A NAME="IDX10"></A> -If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion. -Completion characters will be inserted into the line as if they had -been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>editing-mode</CODE> -<DD><A NAME="IDX11"></A> -The <CODE>editing-mode</CODE> variable controls which default set of -key bindings is used. By default, Readline starts up in Emacs editing -mode, where the keystrokes are most similar to Emacs. This variable can be -set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>. -<P> - -<DT><CODE>enable-keypad</CODE> -<DD><A NAME="IDX12"></A> -When set to <SAMP>`on'</SAMP>, Readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>expand-tilde</CODE> -<DD><A NAME="IDX13"></A> -If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline -attempts word completion. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>history-preserve-point</CODE> -<DD><A NAME="IDX14"></A> -If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the -same location on each history line retrieved with <CODE>previous-history</CODE> -or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>horizontal-scroll-mode</CODE> -<DD><A NAME="IDX15"></A> -This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it -to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll -horizontally on a single screen line when they are longer than the width -of the screen, instead of wrapping onto a new screen line. By default, -this variable is set to <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>input-meta</CODE> -<DD><A NAME="IDX16"></A> -<A NAME="IDX17"></A> -If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it -will not clear the eighth bit in the characters it reads), -regardless of what the terminal claims it can support. The -default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a -synonym for this variable. -<P> - -<DT><CODE>isearch-terminators</CODE> -<DD><A NAME="IDX18"></A> -The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>). -If this variable has not been given a value, the characters <KBD>ESC</KBD> and -<KBD>C-J</KBD> will terminate an incremental search. -<P> - -<DT><CODE>keymap</CODE> -<DD><A NAME="IDX19"></A> -Sets Readline's idea of the current keymap for key binding commands. -Acceptable <CODE>keymap</CODE> names are -<CODE>emacs</CODE>, -<CODE>emacs-standard</CODE>, -<CODE>emacs-meta</CODE>, -<CODE>emacs-ctlx</CODE>, -<CODE>vi</CODE>, -<CODE>vi-move</CODE>, -<CODE>vi-command</CODE>, and -<CODE>vi-insert</CODE>. -<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is -equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>. -The value of the <CODE>editing-mode</CODE> variable also affects the -default keymap. -<P> - -<DT><CODE>mark-directories</CODE> -<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash -appended. The default is <SAMP>`on'</SAMP>. -<P> - -<DT><CODE>mark-modified-lines</CODE> -<DD><A NAME="IDX20"></A> -This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an -asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified. -This variable is <SAMP>`off'</SAMP> by default. -<P> - -<DT><CODE>mark-symlinked-directories</CODE> -<DD><A NAME="IDX21"></A> -If set to <SAMP>`on'</SAMP>, completed names which are symbolic links -to directories have a slash appended (subject to the value of -<CODE>mark-directories</CODE>). -The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>match-hidden-files</CODE> -<DD><A NAME="IDX22"></A> -This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose -names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename -completion, unless the leading <SAMP>`.'</SAMP> is -supplied by the user in the filename to be completed. -This variable is <SAMP>`on'</SAMP> by default. -<P> - -<DT><CODE>output-meta</CODE> -<DD><A NAME="IDX23"></A> -If set to <SAMP>`on'</SAMP>, Readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>page-completions</CODE> -<DD><A NAME="IDX24"></A> -If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager -to display a screenful of possible completions at a time. -This variable is <SAMP>`on'</SAMP> by default. -<P> - -<DT><CODE>print-completions-horizontally</CODE> -<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -The default is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>show-all-if-ambiguous</CODE> -<DD><A NAME="IDX25"></A> -This alters the default behavior of the completion functions. If -set to <SAMP>`on'</SAMP>, -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>show-all-if-unmodified</CODE> -<DD><A NAME="IDX26"></A> -This alters the default behavior of the completion functions in -a fashion similar to <VAR>show-all-if-ambiguous</VAR>. -If set to <SAMP>`on'</SAMP>, -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -of ringing the bell. -The default value is <SAMP>`off'</SAMP>. -<P> - -<DT><CODE>visible-stats</CODE> -<DD><A NAME="IDX27"></A> -If set to <SAMP>`on'</SAMP>, a character denoting a file's type -is appended to the filename when listing possible -completions. The default is <SAMP>`off'</SAMP>. -<P> - -</DL> -<P> - -<DT>Key Bindings -<DD>The syntax for controlling key bindings in the init file is -simple. First you need to find the name of the command that you -want to change. The following sections contain tables of the command -name, the default keybinding, if any, and a short description of what -the command does. -<P> - -Once you know the name of the command, simply place on a line -in the init file the name of the key -you wish to bind the command to, a colon, and then the name of the -command. The name of the key -can be expressed in different ways, depending on what you find most -comfortable. -</P><P> - -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a <VAR>macro</VAR>). -</P><P> - -<DL COMPACT> -<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR> -<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example: -<TABLE><tr><td> </td><td class=example><pre>Control-u: universal-argument -Meta-Rubout: backward-kill-word -Control-o: "> output" -</pre></td></tr></table><P> - -In the above example, <KBD>C-u</KBD> is bound to the function -<CODE>universal-argument</CODE>, -<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and -<KBD>C-o</KBD> is bound to run the macro -expressed on the right hand side (that is, to insert the text -<SAMP>`> output'</SAMP> into the line). -</P><P> - -A number of symbolic character names are recognized while -processing this key binding syntax: -<VAR>DEL</VAR>, -<VAR>ESC</VAR>, -<VAR>ESCAPE</VAR>, -<VAR>LFD</VAR>, -<VAR>NEWLINE</VAR>, -<VAR>RET</VAR>, -<VAR>RETURN</VAR>, -<VAR>RUBOUT</VAR>, -<VAR>SPACE</VAR>, -<VAR>SPC</VAR>, -and -<VAR>TAB</VAR>. -</P><P> - -<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR> -<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings -denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some GNU Emacs style key -escapes can be used, as in the following example, but the -special character names are not recognized. -<P> - -<TABLE><tr><td> </td><td class=example><pre>"\C-u": universal-argument -"\C-x\C-r": re-read-init-file -"\e[11~": "Function Key 1" -</pre></td></tr></table></P><P> - -In the above example, <KBD>C-u</KBD> is again bound to the function -<CODE>universal-argument</CODE> (just as it was in the first example), -<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>, -and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert -the text <SAMP>`Function Key 1'</SAMP>. -</P><P> - -</DL> -<P> - -The following GNU Emacs style escape sequences are available when -specifying key sequences: -</P><P> - -<DL COMPACT> -<DT><CODE><KBD>\C-</KBD></CODE> -<DD>control prefix -<DT><CODE><KBD>\M-</KBD></CODE> -<DD>meta prefix -<DT><CODE><KBD>\e</KBD></CODE> -<DD>an escape character -<DT><CODE><KBD>\\</KBD></CODE> -<DD>backslash -<DT><CODE><KBD>\"</KBD></CODE> -<DD><KBD>"</KBD>, a double quotation mark -<DT><CODE><KBD>\'</KBD></CODE> -<DD><KBD>'</KBD>, a single quote or apostrophe -</DL> -<P> - -In addition to the GNU Emacs style escape sequences, a second -set of backslash escapes is available: -</P><P> - -<DL COMPACT> -<DT><CODE>\a</CODE> -<DD>alert (bell) -<DT><CODE>\b</CODE> -<DD>backspace -<DT><CODE>\d</CODE> -<DD>delete -<DT><CODE>\f</CODE> -<DD>form feed -<DT><CODE>\n</CODE> -<DD>newline -<DT><CODE>\r</CODE> -<DD>carriage return -<DT><CODE>\t</CODE> -<DD>horizontal tab -<DT><CODE>\v</CODE> -<DD>vertical tab -<DT><CODE>\<VAR>nnn</VAR></CODE> -<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR> -(one to three digits) -<DT><CODE>\x<VAR>HH</VAR></CODE> -<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR> -(one or two hex digits) -</DL> -<P> - -When entering the text of a macro, single or double quotes must -be used to indicate a macro definition. -Unquoted text is assumed to be a function name. -In the macro body, the backslash escapes described above are expanded. -Backslash will quote any other character in the macro text, -including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>. -For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP> -insert a single <SAMP>`\'</SAMP> into the line: -<TABLE><tr><td> </td><td class=example><pre>"\C-x\\": "\\" -</pre></td></tr></table></P><P> - -</DL> -<P> - -<A NAME="Conditional Init Constructs"></A> -<HR SIZE="6"> -<A NAME="SEC11"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.2 Conditional Init Constructs </H3> -<!--docid::SEC11::--> -<P> - -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key -bindings and variable settings to be performed as the result -of tests. There are four parser directives used. -</P><P> - -<DL COMPACT> -<DT><CODE>$if</CODE> -<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the -editing mode, the terminal being used, or the application using -Readline. The text of the test extends to the end of the line; -no characters are required to isolate it. -<P> - -<DL COMPACT> -<DT><CODE>mode</CODE> -<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test -whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode. -This may be used in conjunction -with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in -the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if -Readline is starting out in <CODE>emacs</CODE> mode. -<P> - -<DT><CODE>term</CODE> -<DD>The <CODE>term=</CODE> form may be used to include terminal-specific -key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -<SAMP>`='</SAMP> is tested against both the full name of the terminal and -the portion of the terminal name before the first <SAMP>`-'</SAMP>. This -allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>, -for instance. -<P> - -<DT><CODE>application</CODE> -<DD>The <VAR>application</VAR> construct is used to include -application-specific settings. Each program using the Readline -library sets the <VAR>application name</VAR>, and you can test for -a particular value. -This could be used to bind key sequences to functions useful for -a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in Bash: -<TABLE><tr><td> </td><td class=example><pre>$if Bash -# Quote the current or previous word -"\C-xq": "\eb\"\ef\"" -$endif -</pre></td></tr></table></DL> -<P> - -<DT><CODE>$endif</CODE> -<DD>This command, as seen in the previous example, terminates an -<CODE>$if</CODE> command. -<P> - -<DT><CODE>$else</CODE> -<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if -the test fails. -<P> - -<DT><CODE>$include</CODE> -<DD>This directive takes a single filename as an argument and reads commands -and bindings from that file. -For example, the following directive reads from <TT>`/etc/inputrc'</TT>: -<TABLE><tr><td> </td><td class=example><pre>$include /etc/inputrc -</pre></td></tr></table></DL> -<P> - -<A NAME="Sample Init File"></A> -<HR SIZE="6"> -<A NAME="SEC12"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.3.3 Sample Init File </H3> -<!--docid::SEC12::--> -<P> - -Here is an example of an <VAR>inputrc</VAR> file. This illustrates key -binding, variable assignment, and conditional syntax. -</P><P> - -<TABLE><tr><td> </td><td class=example><pre># This file controls the behaviour of line input editing for -# programs that use the GNU Readline library. Existing -# programs include FTP, Bash, and GDB. -# -# You can re-read the inputrc file with C-x C-r. -# Lines beginning with '#' are comments. -# -# First, include any systemwide bindings and variable -# assignments from /etc/Inputrc -$include /etc/Inputrc - -# -# Set various bindings for emacs mode. - -set editing-mode emacs - -$if mode=emacs - -Meta-Control-h: backward-kill-word Text after the function name is ignored - -# -# Arrow keys in keypad mode -# -#"\M-OD": backward-char -#"\M-OC": forward-char -#"\M-OA": previous-history -#"\M-OB": next-history -# -# Arrow keys in ANSI mode -# -"\M-[D": backward-char -"\M-[C": forward-char -"\M-[A": previous-history -"\M-[B": next-history -# -# Arrow keys in 8 bit keypad mode -# -#"\M-\C-OD": backward-char -#"\M-\C-OC": forward-char -#"\M-\C-OA": previous-history -#"\M-\C-OB": next-history -# -# Arrow keys in 8 bit ANSI mode -# -#"\M-\C-[D": backward-char -#"\M-\C-[C": forward-char -#"\M-\C-[A": previous-history -#"\M-\C-[B": next-history - -C-q: quoted-insert - -$endif - -# An old-style binding. This happens to be the default. -TAB: complete - -# Macros that are convenient for shell interaction -$if Bash -# edit the path -"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" -# prepare to type a quoted word -- -# insert open and close double quotes -# and move to just after the open quote -"\C-x\"": "\"\"\C-b" -# insert a backslash (testing backslash escapes -# in sequences and macros) -"\C-x\\": "\\" -# Quote the current or previous word -"\C-xq": "\eb\"\ef\"" -# Add a binding to refresh the line, which is unbound -"\C-xr": redraw-current-line -# Edit variable on current line. -"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" -$endif - -# use a visible bell if one is available -set bell-style visible - -# don't strip characters to 7 bits when reading -set input-meta on - -# allow iso-latin1 characters to be inserted rather -# than converted to prefix-meta sequences -set convert-meta off - -# display characters with the eighth bit set directly -# rather than as meta-prefixed characters -set output-meta on - -# if there are more than 150 possible completions for -# a word, ask the user if he wants to see all of them -set completion-query-items 150 - -# For FTP -$if Ftp -"\C-xg": "get \M-?" -"\C-xt": "put \M-?" -"\M-.": yank-last-arg -$endif -</pre></td></tr></table></P><P> - -<A NAME="Bindable Readline Commands"></A> -<HR SIZE="6"> -<A NAME="SEC13"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.4 Bindable Readline Commands </H2> -<!--docid::SEC13::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -This section describes Readline commands that may be bound to key -sequences. -Command names without an accompanying key sequence are unbound by default. -</P><P> - -In the following descriptions, <EM>point</EM> refers to the current cursor -position, and <EM>mark</EM> refers to a cursor position saved by the -<CODE>set-mark</CODE> command. -The text between the point and mark is referred to as the <EM>region</EM>. -</P><P> - -<A NAME="Commands For Moving"></A> -<HR SIZE="6"> -<A NAME="SEC14"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.1 Commands For Moving </H3> -<!--docid::SEC14::--> -<DL COMPACT> -<A NAME="IDX28"></A> -<DT><CODE>beginning-of-line (C-a)</CODE> -<DD><A NAME="IDX29"></A> -Move to the start of the current line. -<P> - -<A NAME="IDX30"></A> -<DT><CODE>end-of-line (C-e)</CODE> -<DD><A NAME="IDX31"></A> -Move to the end of the line. -<P> - -<A NAME="IDX32"></A> -<DT><CODE>forward-char (C-f)</CODE> -<DD><A NAME="IDX33"></A> -Move forward a character. -<P> - -<A NAME="IDX34"></A> -<DT><CODE>backward-char (C-b)</CODE> -<DD><A NAME="IDX35"></A> -Move back a character. -<P> - -<A NAME="IDX36"></A> -<DT><CODE>forward-word (M-f)</CODE> -<DD><A NAME="IDX37"></A> -Move forward to the end of the next word. Words are composed of -letters and digits. -<P> - -<A NAME="IDX38"></A> -<DT><CODE>backward-word (M-b)</CODE> -<DD><A NAME="IDX39"></A> -Move back to the start of the current or previous word. Words are -composed of letters and digits. -<P> - -<A NAME="IDX40"></A> -<DT><CODE>clear-screen (C-l)</CODE> -<DD><A NAME="IDX41"></A> -Clear the screen and redraw the current line, -leaving the current line at the top of the screen. -<P> - -<A NAME="IDX42"></A> -<DT><CODE>redraw-current-line ()</CODE> -<DD><A NAME="IDX43"></A> -Refresh the current line. By default, this is unbound. -<P> - -</DL> -<P> - -<A NAME="Commands For History"></A> -<HR SIZE="6"> -<A NAME="SEC15"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.2 Commands For Manipulating The History </H3> -<!--docid::SEC15::--> -<P> - -<DL COMPACT> -<A NAME="IDX44"></A> -<DT><CODE>accept-line (Newline or Return)</CODE> -<DD><A NAME="IDX45"></A> -Accept the line regardless of where the cursor is. -If this line is -non-empty, it may be added to the history list for future recall with -<CODE>add_history()</CODE>. -If this line is a modified history line, the history line is restored -to its original state. -<P> - -<A NAME="IDX46"></A> -<DT><CODE>previous-history (C-p)</CODE> -<DD><A NAME="IDX47"></A> -Move `back' through the history list, fetching the previous command. -<P> - -<A NAME="IDX48"></A> -<DT><CODE>next-history (C-n)</CODE> -<DD><A NAME="IDX49"></A> -Move `forward' through the history list, fetching the next command. -<P> - -<A NAME="IDX50"></A> -<DT><CODE>beginning-of-history (M-<)</CODE> -<DD><A NAME="IDX51"></A> -Move to the first line in the history. -<P> - -<A NAME="IDX52"></A> -<DT><CODE>end-of-history (M->)</CODE> -<DD><A NAME="IDX53"></A> -Move to the end of the input history, i.e., the line currently -being entered. -<P> - -<A NAME="IDX54"></A> -<DT><CODE>reverse-search-history (C-r)</CODE> -<DD><A NAME="IDX55"></A> -Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. -<P> - -<A NAME="IDX56"></A> -<DT><CODE>forward-search-history (C-s)</CODE> -<DD><A NAME="IDX57"></A> -Search forward starting at the current line and moving `down' through -the the history as necessary. This is an incremental search. -<P> - -<A NAME="IDX58"></A> -<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE> -<DD><A NAME="IDX59"></A> -Search backward starting at the current line and moving `up' -through the history as necessary using a non-incremental search -for a string supplied by the user. -<P> - -<A NAME="IDX60"></A> -<DT><CODE>non-incremental-forward-search-history (M-n)</CODE> -<DD><A NAME="IDX61"></A> -Search forward starting at the current line and moving `down' -through the the history as necessary using a non-incremental search -for a string supplied by the user. -<P> - -<A NAME="IDX62"></A> -<DT><CODE>history-search-forward ()</CODE> -<DD><A NAME="IDX63"></A> -Search forward through the history for the string of characters -between the start of the current line and the point. -This is a non-incremental search. -By default, this command is unbound. -<P> - -<A NAME="IDX64"></A> -<DT><CODE>history-search-backward ()</CODE> -<DD><A NAME="IDX65"></A> -Search backward through the history for the string of characters -between the start of the current line and the point. This -is a non-incremental search. By default, this command is unbound. -<P> - -<A NAME="IDX66"></A> -<DT><CODE>yank-nth-arg (M-C-y)</CODE> -<DD><A NAME="IDX67"></A> -Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument <VAR>n</VAR>, -insert the <VAR>n</VAR>th word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the <VAR>n</VAR>th word from the end of the previous command. -Once the argument <VAR>n</VAR> is computed, the argument is extracted -as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified. -<P> - -<A NAME="IDX68"></A> -<DT><CODE>yank-last-arg (M-. or M-_)</CODE> -<DD><A NAME="IDX69"></A> -Insert last argument to the previous command (the last word of the -previous history entry). With an -argument, behave exactly like <CODE>yank-nth-arg</CODE>. -Successive calls to <CODE>yank-last-arg</CODE> move back through the history -list, inserting the last argument of each line in turn. -The history expansion facilities are used to extract the last argument, -as if the <SAMP>`!$'</SAMP> history expansion had been specified. -<P> - -</DL> -<P> - -<A NAME="Commands For Text"></A> -<HR SIZE="6"> -<A NAME="SEC16"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.3 Commands For Changing Text </H3> -<!--docid::SEC16::--> -<P> - -<DL COMPACT> -<A NAME="IDX70"></A> -<DT><CODE>delete-char (C-d)</CODE> -<DD><A NAME="IDX71"></A> -Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to <CODE>delete-char</CODE>, then -return EOF. -<P> - -<A NAME="IDX72"></A> -<DT><CODE>backward-delete-char (Rubout)</CODE> -<DD><A NAME="IDX73"></A> -Delete the character behind the cursor. A numeric argument means -to kill the characters instead of deleting them. -<P> - -<A NAME="IDX74"></A> -<DT><CODE>forward-backward-delete-char ()</CODE> -<DD><A NAME="IDX75"></A> -Delete the character under the cursor, unless the cursor is at the -end of the line, in which case the character behind the cursor is -deleted. By default, this is not bound to a key. -<P> - -<A NAME="IDX76"></A> -<DT><CODE>quoted-insert (C-q or C-v)</CODE> -<DD><A NAME="IDX77"></A> -Add the next character typed to the line verbatim. This is -how to insert key sequences like <KBD>C-q</KBD>, for example. -<P> - -<A NAME="IDX78"></A> -<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX79"></A> -Insert a tab character. -<P> - -<A NAME="IDX80"></A> -<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE> -<DD><A NAME="IDX81"></A> -Insert yourself. -<P> - -<A NAME="IDX82"></A> -<DT><CODE>transpose-chars (C-t)</CODE> -<DD><A NAME="IDX83"></A> -Drag the character before the cursor forward over -the character at the cursor, moving the -cursor forward as well. If the insertion point -is at the end of the line, then this -transposes the last two characters of the line. -Negative arguments have no effect. -<P> - -<A NAME="IDX84"></A> -<DT><CODE>transpose-words (M-t)</CODE> -<DD><A NAME="IDX85"></A> -Drag the word before point past the word after point, -moving point past that word as well. -If the insertion point is at the end of the line, this transposes -the last two words on the line. -<P> - -<A NAME="IDX86"></A> -<DT><CODE>upcase-word (M-u)</CODE> -<DD><A NAME="IDX87"></A> -Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move the cursor. -<P> - -<A NAME="IDX88"></A> -<DT><CODE>downcase-word (M-l)</CODE> -<DD><A NAME="IDX89"></A> -Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move the cursor. -<P> - -<A NAME="IDX90"></A> -<DT><CODE>capitalize-word (M-c)</CODE> -<DD><A NAME="IDX91"></A> -Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move the cursor. -<P> - -<A NAME="IDX92"></A> -<DT><CODE>overwrite-mode ()</CODE> -<DD><A NAME="IDX93"></A> -Toggle overwrite mode. With an explicit positive numeric argument, -switches to overwrite mode. With an explicit non-positive numeric -argument, switches to insert mode. This command affects only -<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently. -Each call to <CODE>readline()</CODE> starts in insert mode. -<P> - -In overwrite mode, characters bound to <CODE>self-insert</CODE> replace -the text at point rather than pushing the text to the right. -Characters bound to <CODE>backward-delete-char</CODE> replace the character -before point with a space. -</P><P> - -By default, this command is unbound. -</P><P> - -</DL> -<P> - -<A NAME="Commands For Killing"></A> -<HR SIZE="6"> -<A NAME="SEC17"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.4 Killing And Yanking </H3> -<!--docid::SEC17::--> -<P> - -<DL COMPACT> - -<A NAME="IDX94"></A> -<DT><CODE>kill-line (C-k)</CODE> -<DD><A NAME="IDX95"></A> -Kill the text from point to the end of the line. -<P> - -<A NAME="IDX96"></A> -<DT><CODE>backward-kill-line (C-x Rubout)</CODE> -<DD><A NAME="IDX97"></A> -Kill backward to the beginning of the line. -<P> - -<A NAME="IDX98"></A> -<DT><CODE>unix-line-discard (C-u)</CODE> -<DD><A NAME="IDX99"></A> -Kill backward from the cursor to the beginning of the current line. -<P> - -<A NAME="IDX100"></A> -<DT><CODE>kill-whole-line ()</CODE> -<DD><A NAME="IDX101"></A> -Kill all characters on the current line, no matter where point is. -By default, this is unbound. -<P> - -<A NAME="IDX102"></A> -<DT><CODE>kill-word (M-d)</CODE> -<DD><A NAME="IDX103"></A> -Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as <CODE>forward-word</CODE>. -<P> - -<A NAME="IDX104"></A> -<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE> -<DD><A NAME="IDX105"></A> -Kill the word behind point. -Word boundaries are the same as <CODE>backward-word</CODE>. -<P> - -<A NAME="IDX106"></A> -<DT><CODE>unix-word-rubout (C-w)</CODE> -<DD><A NAME="IDX107"></A> -Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. -<P> - -<A NAME="IDX108"></A> -<DT><CODE>unix-filename-rubout ()</CODE> -<DD><A NAME="IDX109"></A> -Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. -<P> - -<A NAME="IDX110"></A> -<DT><CODE>delete-horizontal-space ()</CODE> -<DD><A NAME="IDX111"></A> -Delete all spaces and tabs around point. By default, this is unbound. -<P> - -<A NAME="IDX112"></A> -<DT><CODE>kill-region ()</CODE> -<DD><A NAME="IDX113"></A> -Kill the text in the current region. -By default, this command is unbound. -<P> - -<A NAME="IDX114"></A> -<DT><CODE>copy-region-as-kill ()</CODE> -<DD><A NAME="IDX115"></A> -Copy the text in the region to the kill buffer, so it can be yanked -right away. By default, this command is unbound. -<P> - -<A NAME="IDX116"></A> -<DT><CODE>copy-backward-word ()</CODE> -<DD><A NAME="IDX117"></A> -Copy the word before point to the kill buffer. -The word boundaries are the same as <CODE>backward-word</CODE>. -By default, this command is unbound. -<P> - -<A NAME="IDX118"></A> -<DT><CODE>copy-forward-word ()</CODE> -<DD><A NAME="IDX119"></A> -Copy the word following point to the kill buffer. -The word boundaries are the same as <CODE>forward-word</CODE>. -By default, this command is unbound. -<P> - -<A NAME="IDX120"></A> -<DT><CODE>yank (C-y)</CODE> -<DD><A NAME="IDX121"></A> -Yank the top of the kill ring into the buffer at point. -<P> - -<A NAME="IDX122"></A> -<DT><CODE>yank-pop (M-y)</CODE> -<DD><A NAME="IDX123"></A> -Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. -</DL> -<P> - -<A NAME="Numeric Arguments"></A> -<HR SIZE="6"> -<A NAME="SEC18"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.5 Specifying Numeric Arguments </H3> -<!--docid::SEC18::--> -<DL COMPACT> - -<A NAME="IDX124"></A> -<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE> -<DD><A NAME="IDX125"></A> -Add this digit to the argument already accumulating, or start a new -argument. <KBD>M--</KBD> starts a negative argument. -<P> - -<A NAME="IDX126"></A> -<DT><CODE>universal-argument ()</CODE> -<DD><A NAME="IDX127"></A> -This is another way to specify an argument. -If this command is followed by one or more digits, optionally with a -leading minus sign, those digits define the argument. -If the command is followed by digits, executing <CODE>universal-argument</CODE> -again ends the numeric argument, but is otherwise ignored. -As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count -for the next command is multiplied by four. -The argument count is initially one, so executing this function the -first time makes the argument count four, a second time makes the -argument count sixteen, and so on. -By default, this is not bound to a key. -</DL> -<P> - -<A NAME="Commands For Completion"></A> -<HR SIZE="6"> -<A NAME="SEC19"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.6 Letting Readline Type For You </H3> -<!--docid::SEC19::--> -<P> - -<DL COMPACT> -<A NAME="IDX128"></A> -<DT><CODE>complete (<KBD>TAB</KBD>)</CODE> -<DD><A NAME="IDX129"></A> -Attempt to perform completion on the text before point. -The actual completion performed is application-specific. -The default is filename completion. -<P> - -<A NAME="IDX130"></A> -<DT><CODE>possible-completions (M-?)</CODE> -<DD><A NAME="IDX131"></A> -List the possible completions of the text before point. -<P> - -<A NAME="IDX132"></A> -<DT><CODE>insert-completions (M-*)</CODE> -<DD><A NAME="IDX133"></A> -Insert all completions of the text before point that would have -been generated by <CODE>possible-completions</CODE>. -<P> - -<A NAME="IDX134"></A> -<DT><CODE>menu-complete ()</CODE> -<DD><A NAME="IDX135"></A> -Similar to <CODE>complete</CODE>, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of <CODE>menu-complete</CODE> steps through the list -of possible completions, inserting each match in turn. -At the end of the list of completions, the bell is rung -(subject to the setting of <CODE>bell-style</CODE>) -and the original text is restored. -An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list -of matches; a negative argument may be used to move backward -through the list. -This command is intended to be bound to <KBD>TAB</KBD>, but is unbound -by default. -<P> - -<A NAME="IDX136"></A> -<DT><CODE>delete-char-or-list ()</CODE> -<DD><A NAME="IDX137"></A> -Deletes the character under the cursor if not at the beginning or -end of the line (like <CODE>delete-char</CODE>). -If at the end of the line, behaves identically to -<CODE>possible-completions</CODE>. -This command is unbound by default. -<P> - -</DL> -<P> - -<A NAME="Keyboard Macros"></A> -<HR SIZE="6"> -<A NAME="SEC20"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.7 Keyboard Macros </H3> -<!--docid::SEC20::--> -<DL COMPACT> - -<A NAME="IDX138"></A> -<DT><CODE>start-kbd-macro (C-x ()</CODE> -<DD><A NAME="IDX139"></A> -Begin saving the characters typed into the current keyboard macro. -<P> - -<A NAME="IDX140"></A> -<DT><CODE>end-kbd-macro (C-x ))</CODE> -<DD><A NAME="IDX141"></A> -Stop saving the characters typed into the current keyboard macro -and save the definition. -<P> - -<A NAME="IDX142"></A> -<DT><CODE>call-last-kbd-macro (C-x e)</CODE> -<DD><A NAME="IDX143"></A> -Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. -<P> - -</DL> -<P> - -<A NAME="Miscellaneous Commands"></A> -<HR SIZE="6"> -<A NAME="SEC21"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> 1.4.8 Some Miscellaneous Commands </H3> -<!--docid::SEC21::--> -<DL COMPACT> - -<A NAME="IDX144"></A> -<DT><CODE>re-read-init-file (C-x C-r)</CODE> -<DD><A NAME="IDX145"></A> -Read in the contents of the <VAR>inputrc</VAR> file, and incorporate -any bindings or variable assignments found there. -<P> - -<A NAME="IDX146"></A> -<DT><CODE>abort (C-g)</CODE> -<DD><A NAME="IDX147"></A> -Abort the current editing command and -ring the terminal's bell (subject to the setting of -<CODE>bell-style</CODE>). -<P> - -<A NAME="IDX148"></A> -<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE> -<DD><A NAME="IDX149"></A> -If the metafied character <VAR>x</VAR> is lowercase, run the command -that is bound to the corresponding uppercase character. -<P> - -<A NAME="IDX150"></A> -<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE> -<DD><A NAME="IDX151"></A> -Metafy the next character typed. This is for keyboards -without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing -<KBD>M-f</KBD>. -<P> - -<A NAME="IDX152"></A> -<DT><CODE>undo (C-_ or C-x C-u)</CODE> -<DD><A NAME="IDX153"></A> -Incremental undo, separately remembered for each line. -<P> - -<A NAME="IDX154"></A> -<DT><CODE>revert-line (M-r)</CODE> -<DD><A NAME="IDX155"></A> -Undo all changes made to this line. This is like executing the <CODE>undo</CODE> -command enough times to get back to the beginning. -<P> - -<A NAME="IDX156"></A> -<DT><CODE>tilde-expand (M-~)</CODE> -<DD><A NAME="IDX157"></A> -Perform tilde expansion on the current word. -<P> - -<A NAME="IDX158"></A> -<DT><CODE>set-mark (C-@)</CODE> -<DD><A NAME="IDX159"></A> -Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. -<P> - -<A NAME="IDX160"></A> -<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE> -<DD><A NAME="IDX161"></A> -Swap the point with the mark. The current cursor position is set to -the saved position, and the old cursor position is saved as the mark. -<P> - -<A NAME="IDX162"></A> -<DT><CODE>character-search (C-])</CODE> -<DD><A NAME="IDX163"></A> -A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. -<P> - -<A NAME="IDX164"></A> -<DT><CODE>character-search-backward (M-C-])</CODE> -<DD><A NAME="IDX165"></A> -A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent -occurrences. -<P> - -<A NAME="IDX166"></A> -<DT><CODE>insert-comment (M-#)</CODE> -<DD><A NAME="IDX167"></A> -Without a numeric argument, the value of the <CODE>comment-begin</CODE> -variable is inserted at the beginning of the current line. -If a numeric argument is supplied, this command acts as a toggle: if -the characters at the beginning of the line do not match the value -of <CODE>comment-begin</CODE>, the value is inserted, otherwise -the characters in <CODE>comment-begin</CODE> are deleted from the beginning of -the line. -In either case, the line is accepted as if a newline had been typed. -<P> - -<A NAME="IDX168"></A> -<DT><CODE>dump-functions ()</CODE> -<DD><A NAME="IDX169"></A> -Print all of the functions and their key bindings to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX170"></A> -<DT><CODE>dump-variables ()</CODE> -<DD><A NAME="IDX171"></A> -Print all of the settable variables and their values to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX172"></A> -<DT><CODE>dump-macros ()</CODE> -<DD><A NAME="IDX173"></A> -Print all of the Readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an <VAR>inputrc</VAR> file. This command is unbound by default. -<P> - -<A NAME="IDX174"></A> -<DT><CODE>emacs-editing-mode (C-e)</CODE> -<DD><A NAME="IDX175"></A> -When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE> -editing mode. -<P> - -<A NAME="IDX176"></A> -<DT><CODE>vi-editing-mode (M-C-j)</CODE> -<DD><A NAME="IDX177"></A> -When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE> -editing mode. -<P> - -</DL> -<P> - -<A NAME="Readline vi Mode"></A> -<HR SIZE="6"> -<A NAME="SEC22"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> >> </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> 1.5 Readline vi Mode </H2> -<!--docid::SEC22::--> -<P> - -While the Readline library does not have a full set of <CODE>vi</CODE> -editing functions, it does contain enough to allow simple editing -of the line. The Readline <CODE>vi</CODE> mode behaves as specified in -the POSIX 1003.2 standard. -</P><P> - -In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE> -editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode -when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode). -The Readline default is <CODE>emacs</CODE> mode. -</P><P> - -When you enter a line in <CODE>vi</CODE> mode, you are already placed in -`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD> -switches you into `command' mode, where you can edit the text of the -line with the standard <CODE>vi</CODE> movement keys, move to previous -history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and -so forth. -</P><P> - -<A NAME="Copying This Manual"></A> -<HR SIZE="6"> -<A NAME="SEC23"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1> A. Copying This Manual </H1> -<!--docid::SEC23::--> -<P> - -<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> -<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC24">A.1 GNU Free Documentation License</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR> -</TABLE></BLOCKQUOTE> -<P> - -<A NAME="GNU Free Documentation License"></A> -<HR SIZE="6"> -<A NAME="SEC24"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC25"> > </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H2> A.1 GNU Free Documentation License </H2> -<!--docid::SEC24::--> -<P> - -<A NAME="IDX178"></A> -<center> - Version 1.2, November 2002 -</center> -</P><P> - -<TABLE><tr><td> </td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -</pre></td></tr></table></P><P> - -<OL> -<LI> -PREAMBLE -<P> - -The purpose of this License is to make a manual, textbook, or other -functional and useful document <EM>free</EM> in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. -</P><P> - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. -</P><P> - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. -</P><P> - -<LI> -APPLICABILITY AND DEFINITIONS -<P> - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. -</P><P> - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. -</P><P> - -A "Secondary Section" is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. -</P><P> - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. -</P><P> - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. -</P><P> - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -</P><P> - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available -<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples -of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and -<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or -<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are -not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>, -PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for -output purposes only. -</P><P> - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -</P><P> - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -</P><P> - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. -</P><P> - -<LI> -VERBATIM COPYING -<P> - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. -</P><P> - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -</P><P> - -<LI> -COPYING IN QUANTITY -<P> - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. -</P><P> - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. -</P><P> - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. -</P><P> - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -</P><P> - -<LI> -MODIFICATIONS -<P> - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: -</P><P> - -<OL> -<LI> -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. -<P> - -<LI> -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. -<P> - -<LI> -State on the Title page the name of the publisher of the -Modified Version, as the publisher. -<P> - -<LI> -Preserve all the copyright notices of the Document. -<P> - -<LI> -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. -<P> - -<LI> -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. -<P> - -<LI> -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -<P> - -<LI> -Include an unaltered copy of this License. -<P> - -<LI> -Preserve the section Entitled "History", Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. -<P> - -<LI> -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. -<P> - -<LI> -For any section Entitled "Acknowledgements" or "Dedications", Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. -<P> - -<LI> -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. -<P> - -<LI> -Delete any section Entitled "Endorsements". Such a section -may not be included in the Modified Version. -<P> - -<LI> -Do not retitle any existing section to be Entitled "Endorsements" or -to conflict in title with any Invariant Section. -<P> - -<LI> -Preserve any Warranty Disclaimers. -</OL> -<P> - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. -</P><P> - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. -</P><P> - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. -</P><P> - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -</P><P> - -<LI> -COMBINING DOCUMENTS -<P> - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. -</P><P> - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. -</P><P> - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -</P><P> - -<LI> -COLLECTIONS OF DOCUMENTS -<P> - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. -</P><P> - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -</P><P> - -<LI> -AGGREGATION WITH INDEPENDENT WORKS -<P> - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. -</P><P> - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. -</P><P> - -<LI> -TRANSLATION -<P> - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. -</P><P> - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. -</P><P> - -<LI> -TERMINATION -<P> - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. -</P><P> - -<LI> -FUTURE REVISIONS OF THIS LICENSE -<P> - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>. -</P><P> - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -</OL> -<P> - -<HR SIZE="6"> -<A NAME="SEC25"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> < </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ > ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> << </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> Up </A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3> -<!--docid::SEC25::--> -<P> - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -</P><P> - -<TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with - the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts - being <VAR>list</VAR>. -</FONT></pre></td></tr></table></P><P> - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. -</P><P> - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. -</P><P> - -<HR SIZE="6"> -<A NAME="SEC_Contents"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Table of Contents</H1> -<UL> -<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A> -<BR> -<UL> -<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A> -<BR> -<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A> -<BR> -<UL> -<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A> -<BR> -<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A> -<BR> -<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A> -<BR> -<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A> -<BR> -<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A> -<BR> -</UL> -<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A> -<BR> -<UL> -<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A> -<BR> -<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A> -<BR> -<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A> -<BR> -</UL> -<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A> -<BR> -<UL> -<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A> -<BR> -<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A> -<BR> -<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A> -<BR> -<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A> -<BR> -<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A> -<BR> -<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A> -<BR> -<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A> -<BR> -<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A> -<BR> -</UL> -<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A> -<BR> -</UL> -<A NAME="TOC23" HREF="rluserman.html#SEC23">A. Copying This Manual</A> -<BR> -<UL> -<A NAME="TOC24" HREF="rluserman.html#SEC24">A.1 GNU Free Documentation License</A> -<BR> -<UL> -<A NAME="TOC25" HREF="rluserman.html#SEC25">A.1.1 ADDENDUM: How to use this License for your documents</A> -<BR> -</UL> -</UL> -</UL> -<HR SIZE=1> -<A NAME="SEC_OVERVIEW"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>Short Table of Contents</H1> -<BLOCKQUOTE> -<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A> -<BR> -<A NAME="TOC23" HREF="rluserman.html#SEC23">A. Copying This Manual</A> -<BR> - -</BLOCKQUOTE> -<HR SIZE=1> -<A NAME="SEC_About"></A> -<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> -<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> -<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD> -</TR></TABLE> -<H1>About this document</H1> -This document was generated by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> -<P></P> -The buttons in the navigation panels have the following meaning: -<P></P> -<table border = "1"> -<TR> -<TH> Button </TH> -<TH> Name </TH> -<TH> Go to </TH> -<TH> From 1.2.3 go to</TH> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ < ] </TD> -<TD ALIGN="CENTER"> -Back -</TD> -<TD> -previous section in reading order -</TD> -<TD> -1.2.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ > ] </TD> -<TD ALIGN="CENTER"> -Forward -</TD> -<TD> -next section in reading order -</TD> -<TD> -1.2.4 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ << ] </TD> -<TD ALIGN="CENTER"> -FastBack -</TD> -<TD> -previous or up-and-previous section -</TD> -<TD> -1.1 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ Up ] </TD> -<TD ALIGN="CENTER"> -Up -</TD> -<TD> -up section -</TD> -<TD> -1.2 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ >> ] </TD> -<TD ALIGN="CENTER"> -FastForward -</TD> -<TD> -next or up-and-next section -</TD> -<TD> -1.3 -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Top] </TD> -<TD ALIGN="CENTER"> -Top -</TD> -<TD> -cover (top) of document -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Contents] </TD> -<TD ALIGN="CENTER"> -Contents -</TD> -<TD> -table of contents -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [Index] </TD> -<TD ALIGN="CENTER"> -Index -</TD> -<TD> -concept index -</TD> -<TD> - -</TD> -</TR> -<TR> -<TD ALIGN="CENTER"> - [ ? ] </TD> -<TD ALIGN="CENTER"> -About -</TD> -<TD> -this page -</TD> -<TD> - -</TD> -</TR> -</TABLE> -<P></P> -where the <STRONG> Example </STRONG> assumes that the current position -is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of -the following structure: -<UL> -<LI> 1. Section One </LI> -<UL> -<LI>1.1 Subsection One-One</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.2 Subsection One-Two</LI> -<UL> -<LI>1.2.1 Subsubsection One-Two-One -</LI><LI>1.2.2 Subsubsection One-Two-Two -</LI><LI>1.2.3 Subsubsection One-Two-Three <STRONG> -<== Current Position </STRONG> -</LI><LI>1.2.4 Subsubsection One-Two-Four -</LI></UL> -<LI>1.3 Subsection One-Three</LI> -<UL> -<LI> ... </LI> -</UL> -<LI>1.4 Subsection One-Four</LI> -</UL> -</UL> - -<HR SIZE=1> -<BR> -<FONT SIZE="-1"> -This document was generated -by <I>Chet Ramey</I> on <I>December, 6 2005</I> -using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html -"><I>texi2html</I></A> - -</BODY> -</HTML> diff --git a/readline/doc/rluserman.info b/readline/doc/rluserman.info deleted file mode 100644 index a58234e..0000000 --- a/readline/doc/rluserman.info +++ /dev/null @@ -1,1746 +0,0 @@ -This is rluserman.info, produced by makeinfo version 4.7 from -/Users/chet/src/bash/readline-src/doc/rluserman.texi. - - This manual describes the end user interface of the GNU Readline -Library (version 5.1-beta1, 11 November 2005), a library which aids in -the consistency of user interface across discrete programs which provide -a command line interface. - - Copyright (C) 1988-2005 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: "You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Libraries -START-INFO-DIR-ENTRY -* RLuserman: (rluserman). The GNU readline library User's Manual. -END-INFO-DIR-ENTRY - - -File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir) - -GNU Readline Library -******************** - -This document describes the end user interface of the GNU Readline -Library, a utility which aids in the consistency of user interface -across discrete programs which provide a command line interface. - -* Menu: - -* Command Line Editing:: GNU Readline User's Manual. -* Copying This Manual:: Copying This Manual. - - -File: rluserman.info, Node: Command Line Editing, Next: Copying This Manual, Prev: Top, Up: Top - -1 Command Line Editing -********************** - -This chapter describes the basic features of the GNU command line -editing interface. - -* Menu: - -* Introduction and Notation:: Notation used in this text. -* Readline Interaction:: The minimum set of commands for editing a line. -* Readline Init File:: Customizing Readline from a user's view. -* Bindable Readline Commands:: A description of most of the Readline commands - available for binding -* Readline vi Mode:: A short description of how to make Readline - behave like the vi editor. - - -File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing - -1.1 Introduction to Line Editing -================================ - -The following paragraphs describe the notation used to represent -keystrokes. - - The text `C-k' is read as `Control-K' and describes the character -produced when the <k> key is pressed while the Control key is depressed. - - The text `M-k' is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the <k> -key is pressed. The Meta key is labeled <ALT> on many keyboards. On -keyboards with two keys labeled <ALT> (usually to either side of the -space bar), the <ALT> on the left side is generally set to work as a -Meta key. The <ALT> key on the right may also be configured to work as -a Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. - - If you do not have a Meta or <ALT> key, or another key working as a -Meta key, the identical keystroke can be generated by typing <ESC> -_first_, and then typing <k>. Either process is known as "metafying" -the <k> key. - - The text `M-C-k' is read as `Meta-Control-k' and describes the -character produced by "metafying" `C-k'. - - In addition, several keys have their own names. Specifically, -<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves -when seen in this text, or in an init file (*note Readline Init File::). -If your keyboard lacks a <LFD> key, typing <C-j> will produce the -desired character. The <RET> key may be labeled <Return> or <Enter> on -some keyboards. - - -File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing - -1.2 Readline Interaction -======================== - -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press <RET>. You do not have to be at the end of -the line to press <RET>; the entire line is accepted regardless of the -location of the cursor within the line. - -* Menu: - -* Readline Bare Essentials:: The least you need to know about Readline. -* Readline Movement Commands:: Moving about the input line. -* Readline Killing Commands:: How to delete text, and how to get it back! -* Readline Arguments:: Giving numeric arguments to commands. -* Searching:: Searching through previous lines. - - -File: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction - -1.2.1 Readline Bare Essentials ------------------------------- - -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your erase -character to back up and delete the mistyped character. - - Sometimes you may mistype a character, and not notice the error -until you have typed several other characters. In that case, you can -type `C-b' to move the cursor to the left, and then correct your -mistake. Afterwards, you can move the cursor to the right with `C-f'. - - When you add text in the middle of a line, you will notice that -characters to the right of the cursor are `pushed over' to make room -for the text that you have inserted. Likewise, when you delete text -behind the cursor, characters to the right of the cursor are `pulled -back' to fill in the blank space created by the removal of the text. A -list of the bare essentials for editing the text of an input line -follows. - -`C-b' - Move back one character. - -`C-f' - Move forward one character. - -<DEL> or <Backspace> - Delete the character to the left of the cursor. - -`C-d' - Delete the character underneath the cursor. - -Printing characters - Insert the character into the line at the cursor. - -`C-_' or `C-x C-u' - Undo the last editing command. You can undo all the way back to an - empty line. - -(Depending on your configuration, the <Backspace> key be set to delete -the character to the left of the cursor and the <DEL> key set to delete -the character underneath the cursor, like `C-d', rather than the -character to the left of the cursor.) - - -File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction - -1.2.2 Readline Movement Commands --------------------------------- - -The above table describes the most basic keystrokes that you need in -order to do editing of the input line. For your convenience, many -other commands have been added in addition to `C-b', `C-f', `C-d', and -<DEL>. Here are some commands for moving more rapidly about the line. - -`C-a' - Move to the start of the line. - -`C-e' - Move to the end of the line. - -`M-f' - Move forward a word, where a word is composed of letters and - digits. - -`M-b' - Move backward a word. - -`C-l' - Clear the screen, reprinting the current line at the top. - - Notice how `C-f' moves forward a character, while `M-f' moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. - - -File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction - -1.2.3 Readline Killing Commands -------------------------------- - -"Killing" text means to delete the text from the line, but to save it -away for later use, usually by "yanking" (re-inserting) it back into -the line. (`Cut' and `paste' are more recent jargon for `kill' and -`yank'.) - - If the description for a command says that it `kills' text, then you -can be sure that you can get the text back in a different (or the same) -place later. - - When you use a kill command, the text is saved in a "kill-ring". -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill ring is not line -specific; the text that you killed on a previously typed line is -available to be yanked back later, when you are typing another line. - - Here is the list of commands for killing text. - -`C-k' - Kill the text from the current cursor position to the end of the - line. - -`M-d' - Kill from the cursor to the end of the current word, or, if between - words, to the end of the next word. Word boundaries are the same - as those used by `M-f'. - -`M-<DEL>' - Kill from the cursor the start of the current word, or, if between - words, to the start of the previous word. Word boundaries are the - same as those used by `M-b'. - -`C-w' - Kill from the cursor to the previous whitespace. This is - different than `M-<DEL>' because the word boundaries differ. - - - Here is how to "yank" the text back into the line. Yanking means to -copy the most-recently-killed text from the kill buffer. - -`C-y' - Yank the most recently killed text back into the buffer at the - cursor. - -`M-y' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `C-y' or `M-y'. - - -File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction - -1.2.4 Readline Arguments ------------------------- - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. - - The general way to pass numeric arguments to a command is to type -meta digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once you -have typed one meta digit to get the argument started, you can type the -remainder of the digits, and then the command. For example, to give -the `C-d' command an argument of 10, you could type `M-1 0 C-d', which -will delete the next ten characters on the input line. - - -File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction - -1.2.5 Searching for Commands in the History -------------------------------------------- - -Readline provides commands for searching through the command history -for lines containing a specified string. There are two search modes: -"incremental" and "non-incremental". - - Incremental searches begin before the user has finished typing the -search string. As each character of the search string is typed, -Readline displays the next entry from the history matching the string -typed so far. An incremental search requires only as many characters -as needed to find the desired history entry. To search backward in the -history for a particular string, type `C-r'. Typing `C-s' searches -forward through the history. The characters present in the value of -the `isearch-terminators' variable are used to terminate an incremental -search. If that variable has not been assigned a value, the <ESC> and -`C-J' characters will terminate an incremental search. `C-g' will -abort an incremental search and restore the original line. When the -search is terminated, the history entry containing the search string -becomes the current line. - - To find other matching entries in the history list, type `C-r' or -`C-s' as appropriate. This will search backward or forward in the -history for the next entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate the -search and execute that command. For instance, a <RET> will terminate -the search and accept the line, thereby executing the command from the -history list. A movement command will terminate the search, make the -last line found the current line, and begin editing. - - Readline remembers the last incremental search string. If two -`C-r's are typed without any intervening characters defining a new -search string, any remembered search string is used. - - Non-incremental searches read the entire search string before -starting to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. - - -File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing - -1.3 Readline Init File -====================== - -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home -directory. The name of this file is taken from the value of the -environment variable `INPUTRC'. If that variable is unset, the default -is `~/.inputrc'. - - When a program which uses the Readline library starts up, the init -file is read, and the key bindings are set. - - In addition, the `C-x C-r' command re-reads this init file, thus -incorporating any changes that you might have made to it. - -* Menu: - -* Readline Init File Syntax:: Syntax for the commands in the inputrc file. - -* Conditional Init Constructs:: Conditional key bindings in the inputrc file. - -* Sample Init File:: An example inputrc file. - - -File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File - -1.3.1 Readline Init File Syntax -------------------------------- - -There are only a few basic constructs allowed in the Readline init -file. Blank lines are ignored. Lines beginning with a `#' are -comments. Lines beginning with a `$' indicate conditional constructs -(*note Conditional Init Constructs::). Other lines denote variable -settings and key bindings. - -Variable Settings - You can modify the run-time behavior of Readline by altering the - values of variables in Readline using the `set' command within the - init file. The syntax is simple: - - set VARIABLE VALUE - - Here, for example, is how to change from the default Emacs-like - key binding to use `vi' line editing commands: - - set editing-mode vi - - Variable names and values, where appropriate, are recognized - without regard to case. Unrecognized variable names are ignored. - - Boolean variables (those that can be set to on or off) are set to - on if the value is null or empty, ON (case-insensitive), or 1. - Any other value results in the variable being set to off. - - A great deal of run-time behavior is changeable with the following - variables. - - `bell-style' - Controls what happens when Readline wants to ring the - terminal bell. If set to `none', Readline never rings the - bell. If set to `visible', Readline uses a visible bell if - one is available. If set to `audible' (the default), - Readline attempts to ring the terminal's bell. - - `bind-tty-special-chars' - If set to `on', Readline attempts to bind the control - characters treated specially by the kernel's terminal driver - to their Readline equivalents. - - `comment-begin' - The string to insert at the beginning of the line when the - `insert-comment' command is executed. The default value is - `"#"'. - - `completion-ignore-case' - If set to `on', Readline performs filename matching and - completion in a case-insensitive fashion. The default value - is `off'. - - `completion-query-items' - The number of possible completions that determines when the - user is asked whether the list of possibilities should be - displayed. If the number of possible completions is greater - than this value, Readline will ask the user whether or not he - wishes to view them; otherwise, they are simply listed. This - variable must be set to an integer value greater than or - equal to 0. A negative value means Readline should never ask. - The default limit is `100'. - - `convert-meta' - If set to `on', Readline will convert characters with the - eighth bit set to an ASCII key sequence by stripping the - eighth bit and prefixing an <ESC> character, converting them - to a meta-prefixed key sequence. The default value is `on'. - - `disable-completion' - If set to `On', Readline will inhibit word completion. - Completion characters will be inserted into the line as if - they had been mapped to `self-insert'. The default is `off'. - - `editing-mode' - The `editing-mode' variable controls which default set of key - bindings is used. By default, Readline starts up in Emacs - editing mode, where the keystrokes are most similar to Emacs. - This variable can be set to either `emacs' or `vi'. - - `enable-keypad' - When set to `on', Readline will try to enable the application - keypad when it is called. Some systems need this to enable - the arrow keys. The default is `off'. - - `expand-tilde' - If set to `on', tilde expansion is performed when Readline - attempts word completion. The default is `off'. - - `history-preserve-point' - If set to `on', the history code attempts to place point at - the same location on each history line retrieved with - `previous-history' or `next-history'. The default is `off'. - - `horizontal-scroll-mode' - This variable can be set to either `on' or `off'. Setting it - to `on' means that the text of the lines being edited will - scroll horizontally on a single screen line when they are - longer than the width of the screen, instead of wrapping onto - a new screen line. By default, this variable is set to `off'. - - `input-meta' - If set to `on', Readline will enable eight-bit input (it will - not clear the eighth bit in the characters it reads), - regardless of what the terminal claims it can support. The - default value is `off'. The name `meta-flag' is a synonym - for this variable. - - `isearch-terminators' - The string of characters that should terminate an incremental - search without subsequently executing the character as a - command (*note Searching::). If this variable has not been - given a value, the characters <ESC> and `C-J' will terminate - an incremental search. - - `keymap' - Sets Readline's idea of the current keymap for key binding - commands. Acceptable `keymap' names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. The - default value is `emacs'. The value of the `editing-mode' - variable also affects the default keymap. - - `mark-directories' - If set to `on', completed directory names have a slash - appended. The default is `on'. - - `mark-modified-lines' - This variable, when set to `on', causes Readline to display an - asterisk (`*') at the start of history lines which have been - modified. This variable is `off' by default. - - `mark-symlinked-directories' - If set to `on', completed names which are symbolic links to - directories have a slash appended (subject to the value of - `mark-directories'). The default is `off'. - - `match-hidden-files' - This variable, when set to `on', causes Readline to match - files whose names begin with a `.' (hidden files) when - performing filename completion, unless the leading `.' is - supplied by the user in the filename to be completed. This - variable is `on' by default. - - `output-meta' - If set to `on', Readline will display characters with the - eighth bit set directly rather than as a meta-prefixed escape - sequence. The default is `off'. - - `page-completions' - If set to `on', Readline uses an internal `more'-like pager - to display a screenful of possible completions at a time. - This variable is `on' by default. - - `print-completions-horizontally' - If set to `on', Readline will display completions with matches - sorted horizontally in alphabetical order, rather than down - the screen. The default is `off'. - - `show-all-if-ambiguous' - This alters the default behavior of the completion functions. - If set to `on', words which have more than one possible - completion cause the matches to be listed immediately instead - of ringing the bell. The default value is `off'. - - `show-all-if-unmodified' - This alters the default behavior of the completion functions - in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to - `on', words which have more than one possible completion - without any possible partial completion (the possible - completions don't share a common prefix) cause the matches to - be listed immediately instead of ringing the bell. The - default value is `off'. - - `visible-stats' - If set to `on', a character denoting a file's type is - appended to the filename when listing possible completions. - The default is `off'. - - -Key Bindings - The syntax for controlling key bindings in the init file is - simple. First you need to find the name of the command that you - want to change. The following sections contain tables of the - command name, the default keybinding, if any, and a short - description of what the command does. - - Once you know the name of the command, simply place on a line in - the init file the name of the key you wish to bind the command to, - a colon, and then the name of the command. The name of the key - can be expressed in different ways, depending on what you find most - comfortable. - - In addition to command names, readline allows keys to be bound to - a string that is inserted when the key is pressed (a MACRO). - - KEYNAME: FUNCTION-NAME or MACRO - KEYNAME is the name of a key spelled out in English. For - example: - Control-u: universal-argument - Meta-Rubout: backward-kill-word - Control-o: "> output" - - In the above example, `C-u' is bound to the function - `universal-argument', `M-DEL' is bound to the function - `backward-kill-word', and `C-o' is bound to run the macro - expressed on the right hand side (that is, to insert the text - `> output' into the line). - - A number of symbolic character names are recognized while - processing this key binding syntax: DEL, ESC, ESCAPE, LFD, - NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. - - "KEYSEQ": FUNCTION-NAME or MACRO - KEYSEQ differs from KEYNAME above in that strings denoting an - entire key sequence can be specified, by placing the key - sequence in double quotes. Some GNU Emacs style key escapes - can be used, as in the following example, but the special - character names are not recognized. - - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\e[11~": "Function Key 1" - - In the above example, `C-u' is again bound to the function - `universal-argument' (just as it was in the first example), - `C-x C-r' is bound to the function `re-read-init-file', and - `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function - Key 1'. - - - The following GNU Emacs style escape sequences are available when - specifying key sequences: - - `\C-' - control prefix - - `\M-' - meta prefix - - `\e' - an escape character - - `\\' - backslash - - `\"' - <">, a double quotation mark - - `\'' - <'>, a single quote or apostrophe - - In addition to the GNU Emacs style escape sequences, a second set - of backslash escapes is available: - - `\a' - alert (bell) - - `\b' - backspace - - `\d' - delete - - `\f' - form feed - - `\n' - newline - - `\r' - carriage return - - `\t' - horizontal tab - - `\v' - vertical tab - - `\NNN' - the eight-bit character whose value is the octal value NNN - (one to three digits) - - `\xHH' - the eight-bit character whose value is the hexadecimal value - HH (one or two hex digits) - - When entering the text of a macro, single or double quotes must be - used to indicate a macro definition. Unquoted text is assumed to - be a function name. In the macro body, the backslash escapes - described above are expanded. Backslash will quote any other - character in the macro text, including `"' and `''. For example, - the following binding will make `C-x \' insert a single `\' into - the line: - "\C-x\\": "\\" - - - -File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File - -1.3.2 Conditional Init Constructs ---------------------------------- - -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key bindings -and variable settings to be performed as the result of tests. There -are four parser directives used. - -`$if' - The `$if' construct allows bindings to be made based on the - editing mode, the terminal being used, or the application using - Readline. The text of the test extends to the end of the line; no - characters are required to isolate it. - - `mode' - The `mode=' form of the `$if' directive is used to test - whether Readline is in `emacs' or `vi' mode. This may be - used in conjunction with the `set keymap' command, for - instance, to set bindings in the `emacs-standard' and - `emacs-ctlx' keymaps only if Readline is starting out in - `emacs' mode. - - `term' - The `term=' form may be used to include terminal-specific key - bindings, perhaps to bind the key sequences output by the - terminal's function keys. The word on the right side of the - `=' is tested against both the full name of the terminal and - the portion of the terminal name before the first `-'. This - allows `sun' to match both `sun' and `sun-cmd', for instance. - - `application' - The APPLICATION construct is used to include - application-specific settings. Each program using the - Readline library sets the APPLICATION NAME, and you can test - for a particular value. This could be used to bind key - sequences to functions useful for a specific program. For - instance, the following command adds a key sequence that - quotes the current or previous word in Bash: - $if Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $endif - -`$endif' - This command, as seen in the previous example, terminates an `$if' - command. - -`$else' - Commands in this branch of the `$if' directive are executed if the - test fails. - -`$include' - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the following - directive reads from `/etc/inputrc': - $include /etc/inputrc - - -File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File - -1.3.3 Sample Init File ----------------------- - -Here is an example of an INPUTRC file. This illustrates key binding, -variable assignment, and conditional syntax. - - - # This file controls the behaviour of line input editing for - # programs that use the GNU Readline library. Existing - # programs include FTP, Bash, and GDB. - # - # You can re-read the inputrc file with C-x C-r. - # Lines beginning with '#' are comments. - # - # First, include any systemwide bindings and variable - # assignments from /etc/Inputrc - $include /etc/Inputrc - - # - # Set various bindings for emacs mode. - - set editing-mode emacs - - $if mode=emacs - - Meta-Control-h: backward-kill-word Text after the function name is ignored - - # - # Arrow keys in keypad mode - # - #"\M-OD": backward-char - #"\M-OC": forward-char - #"\M-OA": previous-history - #"\M-OB": next-history - # - # Arrow keys in ANSI mode - # - "\M-[D": backward-char - "\M-[C": forward-char - "\M-[A": previous-history - "\M-[B": next-history - # - # Arrow keys in 8 bit keypad mode - # - #"\M-\C-OD": backward-char - #"\M-\C-OC": forward-char - #"\M-\C-OA": previous-history - #"\M-\C-OB": next-history - # - # Arrow keys in 8 bit ANSI mode - # - #"\M-\C-[D": backward-char - #"\M-\C-[C": forward-char - #"\M-\C-[A": previous-history - #"\M-\C-[B": next-history - - C-q: quoted-insert - - $endif - - # An old-style binding. This happens to be the default. - TAB: complete - - # Macros that are convenient for shell interaction - $if Bash - # edit the path - "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" - # prepare to type a quoted word -- - # insert open and close double quotes - # and move to just after the open quote - "\C-x\"": "\"\"\C-b" - # insert a backslash (testing backslash escapes - # in sequences and macros) - "\C-x\\": "\\" - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - # Add a binding to refresh the line, which is unbound - "\C-xr": redraw-current-line - # Edit variable on current line. - "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" - $endif - - # use a visible bell if one is available - set bell-style visible - - # don't strip characters to 7 bits when reading - set input-meta on - - # allow iso-latin1 characters to be inserted rather - # than converted to prefix-meta sequences - set convert-meta off - - # display characters with the eighth bit set directly - # rather than as meta-prefixed characters - set output-meta on - - # if there are more than 150 possible completions for - # a word, ask the user if he wants to see all of them - set completion-query-items 150 - - # For FTP - $if Ftp - "\C-xg": "get \M-?" - "\C-xt": "put \M-?" - "\M-.": yank-last-arg - $endif - - -File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing - -1.4 Bindable Readline Commands -============================== - -* Menu: - -* Commands For Moving:: Moving about the line. -* Commands For History:: Getting at previous lines. -* Commands For Text:: Commands for changing text. -* Commands For Killing:: Commands for killing and yanking. -* Numeric Arguments:: Specifying numeric arguments, repeat counts. -* Commands For Completion:: Getting Readline to do the typing for you. -* Keyboard Macros:: Saving and re-executing typed characters -* Miscellaneous Commands:: Other miscellaneous commands. - - This section describes Readline commands that may be bound to key -sequences. Command names without an accompanying key sequence are -unbound by default. - - In the following descriptions, "point" refers to the current cursor -position, and "mark" refers to a cursor position saved by the -`set-mark' command. The text between the point and mark is referred to -as the "region". - - -File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands - -1.4.1 Commands For Moving -------------------------- - -`beginning-of-line (C-a)' - Move to the start of the current line. - -`end-of-line (C-e)' - Move to the end of the line. - -`forward-char (C-f)' - Move forward a character. - -`backward-char (C-b)' - Move back a character. - -`forward-word (M-f)' - Move forward to the end of the next word. Words are composed of - letters and digits. - -`backward-word (M-b)' - Move back to the start of the current or previous word. Words are - composed of letters and digits. - -`clear-screen (C-l)' - Clear the screen and redraw the current line, leaving the current - line at the top of the screen. - -`redraw-current-line ()' - Refresh the current line. By default, this is unbound. - - - -File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands - -1.4.2 Commands For Manipulating The History -------------------------------------------- - -`accept-line (Newline or Return)' - Accept the line regardless of where the cursor is. If this line is - non-empty, it may be added to the history list for future recall - with `add_history()'. If this line is a modified history line, - the history line is restored to its original state. - -`previous-history (C-p)' - Move `back' through the history list, fetching the previous - command. - -`next-history (C-n)' - Move `forward' through the history list, fetching the next command. - -`beginning-of-history (M-<)' - Move to the first line in the history. - -`end-of-history (M->)' - Move to the end of the input history, i.e., the line currently - being entered. - -`reverse-search-history (C-r)' - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental search. - -`forward-search-history (C-s)' - Search forward starting at the current line and moving `down' - through the the history as necessary. This is an incremental - search. - -`non-incremental-reverse-search-history (M-p)' - Search backward starting at the current line and moving `up' - through the history as necessary using a non-incremental search - for a string supplied by the user. - -`non-incremental-forward-search-history (M-n)' - Search forward starting at the current line and moving `down' - through the the history as necessary using a non-incremental search - for a string supplied by the user. - -`history-search-forward ()' - Search forward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`history-search-backward ()' - Search backward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`yank-nth-arg (M-C-y)' - Insert the first argument to the previous command (usually the - second word on the previous line) at point. With an argument N, - insert the Nth word from the previous command (the words in the - previous command begin with word 0). A negative argument inserts - the Nth word from the end of the previous command. Once the - argument N is computed, the argument is extracted as if the `!N' - history expansion had been specified. - -`yank-last-arg (M-. or M-_)' - Insert last argument to the previous command (the last word of the - previous history entry). With an argument, behave exactly like - `yank-nth-arg'. Successive calls to `yank-last-arg' move back - through the history list, inserting the last argument of each line - in turn. The history expansion facilities are used to extract the - last argument, as if the `!$' history expansion had been specified. - - - -File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands - -1.4.3 Commands For Changing Text --------------------------------- - -`delete-char (C-d)' - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to `delete-char', then return EOF. - -`backward-delete-char (Rubout)' - Delete the character behind the cursor. A numeric argument means - to kill the characters instead of deleting them. - -`forward-backward-delete-char ()' - Delete the character under the cursor, unless the cursor is at the - end of the line, in which case the character behind the cursor is - deleted. By default, this is not bound to a key. - -`quoted-insert (C-q or C-v)' - Add the next character typed to the line verbatim. This is how to - insert key sequences like `C-q', for example. - -`tab-insert (M-<TAB>)' - Insert a tab character. - -`self-insert (a, b, A, 1, !, ...)' - Insert yourself. - -`transpose-chars (C-t)' - Drag the character before the cursor forward over the character at - the cursor, moving the cursor forward as well. If the insertion - point is at the end of the line, then this transposes the last two - characters of the line. Negative arguments have no effect. - -`transpose-words (M-t)' - Drag the word before point past the word after point, moving point - past that word as well. If the insertion point is at the end of - the line, this transposes the last two words on the line. - -`upcase-word (M-u)' - Uppercase the current (or following) word. With a negative - argument, uppercase the previous word, but do not move the cursor. - -`downcase-word (M-l)' - Lowercase the current (or following) word. With a negative - argument, lowercase the previous word, but do not move the cursor. - -`capitalize-word (M-c)' - Capitalize the current (or following) word. With a negative - argument, capitalize the previous word, but do not move the cursor. - -`overwrite-mode ()' - Toggle overwrite mode. With an explicit positive numeric argument, - switches to overwrite mode. With an explicit non-positive numeric - argument, switches to insert mode. This command affects only - `emacs' mode; `vi' mode does overwrite differently. Each call to - `readline()' starts in insert mode. - - In overwrite mode, characters bound to `self-insert' replace the - text at point rather than pushing the text to the right. - Characters bound to `backward-delete-char' replace the character - before point with a space. - - By default, this command is unbound. - - - -File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands - -1.4.4 Killing And Yanking -------------------------- - -`kill-line (C-k)' - Kill the text from point to the end of the line. - -`backward-kill-line (C-x Rubout)' - Kill backward to the beginning of the line. - -`unix-line-discard (C-u)' - Kill backward from the cursor to the beginning of the current line. - -`kill-whole-line ()' - Kill all characters on the current line, no matter where point is. - By default, this is unbound. - -`kill-word (M-d)' - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the same - as `forward-word'. - -`backward-kill-word (M-<DEL>)' - Kill the word behind point. Word boundaries are the same as - `backward-word'. - -`unix-word-rubout (C-w)' - Kill the word behind point, using white space as a word boundary. - The killed text is saved on the kill-ring. - -`unix-filename-rubout ()' - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on the - kill-ring. - -`delete-horizontal-space ()' - Delete all spaces and tabs around point. By default, this is - unbound. - -`kill-region ()' - Kill the text in the current region. By default, this command is - unbound. - -`copy-region-as-kill ()' - Copy the text in the region to the kill buffer, so it can be yanked - right away. By default, this command is unbound. - -`copy-backward-word ()' - Copy the word before point to the kill buffer. The word - boundaries are the same as `backward-word'. By default, this - command is unbound. - -`copy-forward-word ()' - Copy the word following point to the kill buffer. The word - boundaries are the same as `forward-word'. By default, this - command is unbound. - -`yank (C-y)' - Yank the top of the kill ring into the buffer at point. - -`yank-pop (M-y)' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `yank' or `yank-pop'. - - -File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands - -1.4.5 Specifying Numeric Arguments ----------------------------------- - -`digit-argument (M-0, M-1, ... M--)' - Add this digit to the argument already accumulating, or start a new - argument. `M--' starts a negative argument. - -`universal-argument ()' - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is - followed by digits, executing `universal-argument' again ends the - numeric argument, but is otherwise ignored. As a special case, if - this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argument - count four, a second time makes the argument count sixteen, and so - on. By default, this is not bound to a key. - - -File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands - -1.4.6 Letting Readline Type For You ------------------------------------ - -`complete (<TAB>)' - Attempt to perform completion on the text before point. The - actual completion performed is application-specific. The default - is filename completion. - -`possible-completions (M-?)' - List the possible completions of the text before point. - -`insert-completions (M-*)' - Insert all completions of the text before point that would have - been generated by `possible-completions'. - -`menu-complete ()' - Similar to `complete', but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of `menu-complete' steps through the list of possible - completions, inserting each match in turn. At the end of the list - of completions, the bell is rung (subject to the setting of - `bell-style') and the original text is restored. An argument of N - moves N positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to <TAB>, but is unbound by - default. - -`delete-char-or-list ()' - Deletes the character under the cursor if not at the beginning or - end of the line (like `delete-char'). If at the end of the line, - behaves identically to `possible-completions'. This command is - unbound by default. - - - -File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands - -1.4.7 Keyboard Macros ---------------------- - -`start-kbd-macro (C-x ()' - Begin saving the characters typed into the current keyboard macro. - -`end-kbd-macro (C-x ))' - Stop saving the characters typed into the current keyboard macro - and save the definition. - -`call-last-kbd-macro (C-x e)' - Re-execute the last keyboard macro defined, by making the - characters in the macro appear as if typed at the keyboard. - - - -File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands - -1.4.8 Some Miscellaneous Commands ---------------------------------- - -`re-read-init-file (C-x C-r)' - Read in the contents of the INPUTRC file, and incorporate any - bindings or variable assignments found there. - -`abort (C-g)' - Abort the current editing command and ring the terminal's bell - (subject to the setting of `bell-style'). - -`do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. - -`prefix-meta (<ESC>)' - Metafy the next character typed. This is for keyboards without a - meta key. Typing `<ESC> f' is equivalent to typing `M-f'. - -`undo (C-_ or C-x C-u)' - Incremental undo, separately remembered for each line. - -`revert-line (M-r)' - Undo all changes made to this line. This is like executing the - `undo' command enough times to get back to the beginning. - -`tilde-expand (M-~)' - Perform tilde expansion on the current word. - -`set-mark (C-@)' - Set the mark to the point. If a numeric argument is supplied, the - mark is set to that position. - -`exchange-point-and-mark (C-x C-x)' - Swap the point with the mark. The current cursor position is set - to the saved position, and the old cursor position is saved as the - mark. - -`character-search (C-])' - A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous - occurrences. - -`character-search-backward (M-C-])' - A character is read and point is moved to the previous occurrence - of that character. A negative count searches for subsequent - occurrences. - -`insert-comment (M-#)' - Without a numeric argument, the value of the `comment-begin' - variable is inserted at the beginning of the current line. If a - numeric argument is supplied, this command acts as a toggle: if - the characters at the beginning of the line do not match the value - of `comment-begin', the value is inserted, otherwise the - characters in `comment-begin' are deleted from the beginning of - the line. In either case, the line is accepted as if a newline - had been typed. - -`dump-functions ()' - Print all of the functions and their key bindings to the Readline - output stream. If a numeric argument is supplied, the output is - formatted in such a way that it can be made part of an INPUTRC - file. This command is unbound by default. - -`dump-variables ()' - Print all of the settable variables and their values to the - Readline output stream. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`dump-macros ()' - Print all of the Readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`emacs-editing-mode (C-e)' - When in `vi' command mode, this causes a switch to `emacs' editing - mode. - -`vi-editing-mode (M-C-j)' - When in `emacs' editing mode, this causes a switch to `vi' editing - mode. - - - -File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing - -1.5 Readline vi Mode -==================== - -While the Readline library does not have a full set of `vi' editing -functions, it does contain enough to allow simple editing of the line. -The Readline `vi' mode behaves as specified in the POSIX 1003.2 -standard. - - In order to switch interactively between `emacs' and `vi' editing -modes, use the command `M-C-j' (bound to emacs-editing-mode when in -`vi' mode and to vi-editing-mode in `emacs' mode). The Readline -default is `emacs' mode. - - When you enter a line in `vi' mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing <ESC> 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. - - -File: rluserman.info, Node: Copying This Manual, Prev: Command Line Editing, Up: Top - -Appendix A Copying This Manual -****************************** - -* Menu: - -* GNU Free Documentation License:: License for copying this manual. - - -File: rluserman.info, Node: GNU Free Documentation License, Up: Copying This Manual - -A.1 GNU Free Documentation License -================================== - - Version 1.2, November 2002 - - Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - functional and useful document "free" in the sense of freedom: to - assure everyone the effective freedom to copy and redistribute it, - with or without modifying it, either commercially or - noncommercially. Secondarily, this License preserves for the - author and publisher a way to get credit for their work, while not - being considered responsible for modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work, in any medium, - that contains a notice placed by the copyright holder saying it - can be distributed under the terms of this License. Such a notice - grants a world-wide, royalty-free license, unlimited in duration, - to use that work under the conditions stated herein. The - "Document", below, refers to any such manual or work. Any member - of the public is a licensee, and is addressed as "you". You - accept the license if you copy, modify or distribute the work in a - way requiring permission under copyright law. - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter section - of the Document that deals exclusively with the relationship of the - publishers or authors of the Document to the Document's overall - subject (or to related matters) and contains nothing that could - fall directly within that overall subject. (Thus, if the Document - is in part a textbook of mathematics, a Secondary Section may not - explain any mathematics.) The relationship could be a matter of - historical connection with the subject or with related matters, or - of legal, commercial, philosophical, ethical or political position - regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. If a section does not fit the above definition of - Secondary then it is not allowed to be designated as Invariant. - The Document may contain zero Invariant Sections. If the Document - does not identify any Invariant Sections then there are none. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. A - Front-Cover Text may be at most 5 words, and a Back-Cover Text may - be at most 25 words. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, that is suitable for revising the document - straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup, or absence of - markup, has been arranged to thwart or discourage subsequent - modification by readers is not Transparent. An image format is - not Transparent if used for any substantial amount of text. A - copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML, PostScript or PDF designed for - human modification. Examples of transparent image formats include - PNG, XCF and JPG. Opaque formats include proprietary formats that - can be read and edited only by proprietary word processors, SGML or - XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML, PostScript or PDF - produced by some word processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - A section "Entitled XYZ" means a named subunit of the Document - whose title either is precisely XYZ or contains XYZ in parentheses - following text that translates XYZ in another language. (Here XYZ - stands for a specific section name mentioned below, such as - "Acknowledgements", "Dedications", "Endorsements", or "History".) - To "Preserve the Title" of such a section when you modify the - Document means that it remains a section "Entitled XYZ" according - to this definition. - - The Document may include Warranty Disclaimers next to the notice - which states that this License applies to the Document. These - Warranty Disclaimers are considered to be included by reference in - this License, but only as regards disclaiming warranties: any other - implication that these Warranty Disclaimers may have is void and - has no effect on the meaning of this License. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies (or copies in media that commonly - have printed covers) of the Document, numbering more than 100, and - the Document's license notice requires Cover Texts, you must - enclose the copies in covers that carry, clearly and legibly, all - these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a computer-network location from - which the general network-using public has access to download - using public-standard network protocols a complete Transparent - copy of the Document, free of added material. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: - - A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has fewer than five), unless they release you - from this requirement. - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section Entitled "History", Preserve its Title, - and add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section Entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the - section all the substance and tone of each of the contributor - acknowledgements and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section to be Entitled - "Endorsements" or to conflict in title with any Invariant - Section. - - O. Preserve any Warranty Disclaimers. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section Entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice, and that you preserve all - their Warranty Disclaimers. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections Entitled - "History" in the various original documents, forming one section - Entitled "History"; likewise combine any sections Entitled - "Acknowledgements", and any sections Entitled "Dedications". You - must delete all sections Entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, is called an "aggregate" if the - copyright resulting from the compilation is not used to limit the - legal rights of the compilation's users beyond what the individual - works permit. When the Document is included an aggregate, this - License does not apply to the other works in the aggregate which - are not themselves derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one half - of the entire aggregate, the Document's Cover Texts may be placed - on covers that bracket the Document within the aggregate, or the - electronic equivalent of covers if the Document is in electronic - form. Otherwise they must appear on printed covers that bracket - the whole aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License, and all the license notices in the - Document, and any Warranty Disclaimers, provided that you also - include the original English version of this License and the - original versions of those notices and disclaimers. In case of a - disagreement between the translation and the original version of - this License or a notice or disclaimer, the original version will - prevail. - - If a section in the Document is Entitled "Acknowledgements", - "Dedications", or "History", the requirement (section 4) to - Preserve its Title (section 1) will typically require changing the - actual title. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided for under this License. Any other - attempt to copy, modify, sublicense or distribute the Document is - void, and will automatically terminate your rights under this - License. However, parties who have received copies, or rights, - from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. - -A.1.1 ADDENDUM: How to use this License for your documents ----------------------------------------------------------- - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with - the Front-Cover Texts being LIST, and with the Back-Cover Texts - being LIST. - - If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - - -Tag Table: -Node: Top1382 -Node: Command Line Editing1814 -Node: Introduction and Notation2457 -Node: Readline Interaction4081 -Node: Readline Bare Essentials5274 -Node: Readline Movement Commands7065 -Node: Readline Killing Commands8032 -Node: Readline Arguments9954 -Node: Searching11000 -Node: Readline Init File13153 -Node: Readline Init File Syntax14220 -Node: Conditional Init Constructs26156 -Node: Sample Init File28691 -Node: Bindable Readline Commands31810 -Node: Commands For Moving32869 -Node: Commands For History33732 -Node: Commands For Text36858 -Node: Commands For Killing39586 -Node: Numeric Arguments41730 -Node: Commands For Completion42871 -Node: Keyboard Macros44417 -Node: Miscellaneous Commands44990 -Node: Readline vi Mode48353 -Node: Copying This Manual49274 -Node: GNU Free Documentation License49506 - -End Tag Table diff --git a/readline/doc/rluserman.ps b/readline/doc/rluserman.ps deleted file mode 100644 index 932065e..0000000 --- a/readline/doc/rluserman.ps +++ /dev/null @@ -1,4948 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: rluserman.dvi -%%Pages: 32 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMBXTI10 CMTI10 CMCSC10 -%%+ CMSLTT10 CMSY9 CMR8 CMSL10 CMTT9 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2005.12.06:1546 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: f7b6d320.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 -% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 -% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 -% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 -% -/TeXf7b6d320Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand -/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen -/period /slash /zero /one /two /three /four /five /six /seven /eight -/nine /colon /semicolon /exclamdown /equal /questiondown /question /at -/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X -/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 09fbbfac.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 -/TeX09fbbfacEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla -/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam -/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon /less -/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright -/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l -/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright -/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi -/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: bbad153f.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 -% -/TeXbbad153fEncoding [ -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /circlemultiply -/circledivide /circledot /circlecopyrt /openbullet /bullet -/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal -/greaterequal /precedesequal /followsequal /similar /approxequal -/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows -/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast -/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup -/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional -/prime /infinity /element /owner /triangle /triangleinv /negationslash -/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur -/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection -/unionmulti /logicaland /logicalor /turnstileleft /turnstileright -/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright -/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv -/backslash /wreathproduct /radical /coproduct /nabla /integral -/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section -/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef -/circlemultiply /circledivide /circledot /circlecopyrt /openbullet -/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset -/lessequal /greaterequal /precedesequal /followsequal /similar -/approxequal /propersubset /propersuperset /lessmuch /greatermuch -/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 74afc74c.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 -% -/TeX74afc74cEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /sterling /percent -/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma -/hyphen /period /slash /zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 0ef0afca.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmr5 -% -/TeX0ef0afcaEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi -/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls -/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright -/numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft -/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h -/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash -/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda -/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup -/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj -/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe -/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.1: CMSLTT10 1.0 -%%CreationDate: 1991 Aug 20 16:41:43 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -end readonly def -/FontName /CMSLTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-20 -233 617 696}readonly def -/UniqueID 5000800 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 -0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB -4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840 -8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079 -8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4 -B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F -ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858 -C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F -EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F -2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60 -4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370 -52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D -38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA -00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0 -B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D -CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF -B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F -802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE -32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8 -00DE382ABED85350033F8ECB97398E4E0A75D4877A107F6A909D0C76D14F9A96 -8A6CFDE3FD9D79B6FD82693A9F354BD2ECF30C6D99F7AC522F8D6C93EA214F7B -3D0ED77F042ACDE9414264C0698E86398562E2C640DEBBA0734AB4C3ACE3907D -CC79E6B2C6C3C3F9B01526E8CD98237D4A9B403FF8CE3132222FA60C196A19BC -A2393AE6935C0F8B67FC1D1A12A45ED5F28B5D6A266A3ECAA5BC3429F2B2FFDD -70F50A94CACA6AA6B2215B41EA683DF13679E9C950276294B15370256F17E3E8 -5FB8B575E7D4A3FC9BD8A5FAE6FCA53DF678F37701E83F18F1E116E901A39DCB -C05CF72BFAF7FD8CC6A63A23C1CFC064EF32F3F67EE47B4209A5F83A5B2681C7 -8349B0C686E9D9844242C28DEC5E33DF480418F784EF676681D52ED234561B62 -4B7896DEC847A783789BFA4159279438404D596C9E6789B5C63C749AF0C3FBB3 -AADFC022B8682FD21F13460FE480C6B8CC1FB4EAC8E7AAFDCFDAD39508EF9B61 -BBCC73F90FB40E94EAC04892831753F15E06F77399F8ADB508F411A89A0399B4 -240C28E4DDDA98B9E771FE6AA0E2C8DE04DDA8AE54BD1A90DAFC1B0B66964F3E -31475DBBC3D3BA2CA2C3D55D91917F6E496EFBCD5CBC46A27DB7E3FD229DE5AE -A194E4B767F933C434D204BB080A5C24805A23E477BCFF6D19DB22FAFFEB97CA -5445129773D40A43537F15EE90CC399EF58C31253BBC0177D05A1DBF23EB26D0 -159FA4D20E5E5B04A125FFF85CD1154B20BC5BFBA18F87670A2BF1A32A696A70 -4E82EBEC804D798202DAF537B468B5880FCAC75BDCFBF65FE6EBB93A1309D343 -09CCF1B81155761809E4ABA53CC9BF8D3FEC5602A6F3561CF2AF6D0A35B8876A -8BE4CCBCB2DE4E4D07F50F9C5F831C499ADC35827F7F7BE7E1E0CE1BF2E3578E -FA292C0CFCA10329156FC79BE3D80225794DE7062B8CE232355007F53F9184BA -93F2C8F0EC8FD88F01397E1EC2ADBAA889C003AE4847BD08FBD9673C4B4D20D7 -53D0FD11FE4DE30AF01AF0141573DEB0B054DE244035E6161962D9BA836D42B9 -8B8006A40E357E28859D867052CE7DAA86F32641C1764A51F631CBA3FC206667 -81863B28C5BEE78C574F1946253D192C50CED9746B01CF4BEDDB5AB7492E36B0 -FDDB90206C5410551EA2F44E427B6A254FB2E965932DFA8A4465B509276CDAF3 -CFE6FC9963F801813A03D434B74273BC4FBA6FFB8545A10B453F8AC8086DA9CB -49A701C500FD3D1577A215026EEB1AD2616223CC65E34CA84D1BAB896EE60C08 -7708BB0E5FFAC9EE1A24F72F03C13B8A275264CE267728084388365FF79B895C -B65A33011BBEB2356016786F62EBCE765891CCEBC5A57453AA1AE771147D23C5 -7E289B67C94A4C7DBB3520A7E5BA938DDDE360FF69484CC4F31D57271BE2D19F -7E689DD8373EC2CF7E3874711F3E3EDEEB09435AA0909418AD76074944C06BC6 -10C087339F57A1C828E1DCAC8B6F7D1F94A25133D72E68BA0C15586C997581B5 -957F59D0445D39E0F8226D4C621E9B12256EB583A7EE4A5EBD15B3E6BC9F6687 -28735EC4962332DEAD2D2A28714FB8F606B358E3E9ABC868E169E3FCEA409A48 -6998A5F444CE13F65F3F9D4B2A90CF483346348E4E6B4868C442C83726634EA4 -D4917AC8ED021012707DFC72926B58917264925482CA53A2BB96E2FC58A6083E -4D7193E39B0B20EA7BC306FFBD70D434795176E77DC76C9643560472AC2718E2 -9A70D6973D0903263D1DEC1E82752CAC7AC2EC5442D9151BF459C27D96A28096 -42ADFD3D9FAA7A42A2EBE9CA3D7DC90AD0A6BA1B9F5224FBE0051352176DA443 -039B52443A0031BCD66485F49B55D7DBF4F4EB7E4A87DCF7A1F3F345EF85DA6D -30CA6E389FC39930850B63E8EF3523AE1FF188DE5E26766C160A2F1631E1846D -6DAEF695D585909E1F9A85C551B864046B534FDE0A35E54ACB3EDCF34A87CCC7 -C6073D2761CF74B07D154A4C560F5595A87250E3549E3706A402F3CC879AB051 -796A168E1197187ECF09AC42398AE4085F4C70EFDF98C387C232E3C323C6C496 -5EA1A799D2EC3E9E6C8060ACFFEB714FBBF8210D285D871A40DE8C39DF37FE1F -241491B1B483A0B7D95DEA6E211954DCF49DA353F4A71CD9E0D144E84CE4A426 -8558F4B2BC06A7D44C961B6ADABA9759D1FF06DCFDE125D0947BC6982C375891 -72762550A44639B5E5E19EBD541848342C060714443D5E96537E1A214E9843F0 -5321B2479DFEE8DD1836B48CDDD5A117E20032334F18267B7323BCEDE5896BFC -F0D91FA4B1AD0C4E38D9906ABD7009FB69A77CD280BF9BF43772371975CA6145 -A96F562D335A5B4D1366F728243C521B01D9008E655890AACABA0C45DCB1F45E -BB6CABA51B1D31EA51637D0EE279B49257EE30B587E17DFF959E000AAA048D31 -F998B857205295CBE7177CDF44CC9BDA33CBC918B0AE72187BBB0BC23696F7AB -1BB5A7D3705FE0579F20707008CD2A88D110343AA8B827A5EE6118F5D846F250 -6FDBC37270FB344E37B33F5F6DF16920CE3518BD459A8349CB87F8D9A61F36B8 -B1D26717D4BD4B8E76E283489718D38C66D0B4473D577F373F9A938705E0C620 -CD56F9B105C4E65B56E55CDD6893B3441F8B215C17E35E3EE4E734AF17C48895 -CE02A9B55C7738B8836EFEBE12AC9E6488CE6C828F2422EFBFDB4EBE80FD6E61 -0D0B85F1DFF9B8F319B0B696E90F60312506934F212454E10C673DF013C6F913 -E60BD6301A9AAB7DAFE5D6193731260024AFA425D46B4BEBD55133A3BB27B27E -8837C39FFF999C01E9A3EB8905D2FFD482348BC97C07E7B2256CA33303322A5B -587B1FF198422716A4577CE681B120C4D074EA2B3C275646B853360FC134D674 -0CF1007077B35E3A1D100A3C620BA005BB9F80444DC927E6AAC738DE5B3F87EE -190B2FF31CE1B1A0AD34C19B28DE21136462A3591002EDB5CBDC06E09326733A -8498626848549F36B077DFB2A2FCCBB775BAFC2C46BA20811049B7AF4F34C009 -71468C3641D8ED8616C21D1DC90E21A72AFE14B5F5718A42F11F46F2C3CF3FFA -992DAAA3A3BC90073B3E2765C75F05A5EBDE85F37826131DCE2967089E8F7E69 -F16B41BCFB8914BF2F0B806CB35B133564224C0C9C1D6E3032D276D5464873D9 -0D17CC512E5CFAB6570D61E8D023D2CFE020212DB7B0FBF3D324FA5B3AFE7951 -E8382B7A8FDEBBACAE4B02CDD3D1791C79A78B9D49F20FD6F22B7E55CE36836E -31A5B619B305CDDC722F6AC84CBC0D49835647204BDABCFF59D9F3B5EA22D533 -F316DD5EFC59A7F645AEE0BCDC07193111510563159EF684A739CE67EEB77638 -54F0C3D4E1A54801F4887BAD58EEDA68539B2A43B5B5D79369F74035966F07E1 -3FFD43FFF05F7EBA48DB0F988F34A44A0B15B028508868EFEA89F22C61DBA74C -E04F9DBFD28DEC1EBC536587EF7A8DDD7B0ADAF459C0F22C24DC2D8C797C14B5 -9370504500422265C0AEFA2A8C367AD89ABC057E4B6043D991EA59564C1ABD06 -6C6E9147806C79DEA43EB8B7D0560DEB9C81766B9D79608A91D7AB606A7CD6C6 -276BF4F7E294BD0D0D3F94B321434B1A9CD4206E3146B3CE1113D62E7791BD79 -9AE322A997557EDC27045FA4521AB379253C27A4A234662FB4F73AE398C4C9E0 -2D4B3E7EF5F1E5BEEA50FE62B8AC0D42C131FD507D6D1735FD79F8223516E84E -755930A2E30B80E63A6B24CD4244584BF7E93083EE46EFD9CD19A71A4B8453AB -233710DC0AE68FAB2B1D9E3A17DE97AE09935E0056589BB7B3AFF3672B406CD8 -E914F786600C5B7AC4E8C57BB65B580A02BE8491E0D8E5817A99C4695E1D3A27 -12E5F7A945BFDB67E2CA285C3ABE5C15C870530F588E0B8686A4C551941BB2C4 -9E9A8DA9A4D4834E09A78F824F60A84C4A84B6C5748BA8D752D0CAB8CABDA89D -8E21E4FC69C5994E3E100967DBFFA4D2E12BB0E73ED53EA1AD925855DA1A77BA -1231422722DA75174ADD0F0BD549B6BD08114D32BB6E728DC5DBE05CC0FB960B -F1D35253BA31654C6E6DD306285953AA681E9E1414D5F23CBF08E29A5B38F69D -99C6E44DA0C42FB260F1E6D4E947215A0FF41F756177180D3754737C0BF59083 -C47C302D87268AAED752370EFDBC276D0AD59C5A75CA13B292437DA5A90B1713 -723728166637A3C4805B4A2BA8CA1F20B4FD331043FB69331E485BF48025BE08 -6369DBD8FAF526B08E633223D011E1E81BE662D98BD64917F09BA1F4277BA164 -4611705F5ADD316341366D3BF8CAB85A21C88F54792D05EAB91D985A557B4C99 -0BD3B4C020F20C860A6ED0E8CAD870045D69BC434F345EE42830FFCF7468CAF3 -93BD5666598D5CA7ADEC208006B7CF38AFA1A0BE24190E283841B9A5FD0696C2 -CB6FB04BE6108AB9E4CD3F772D78D7468EB761444A5B7FC8995D53880BF2616C -522EEA33E0F27A5AA1EA25347FD12A1A95F11CF2F3625D56CF8A9FA23A4EC609 -035CD02CA0934BF6CE80DF59E1B60849B9B4A58C11E83D03BEA42A1A4AC10893 -4B92D0B99362180E29AFF2ACF9E0C99A156725071758399F318D720E37FB73DE -9C5958CC9471C424B5F8E0C76FE28193D2C6514D0EACFEDAB7B76B713BC3AE3D -57DA9D62396F7A7675CDBD164CE3320EC81A1ACE77EF63CC8FDD466564B8171F -2157EC631437182AFC083A1B29C223FA944A54930A41824F76E35E5FEF17A836 -4440E9BB793DCDA897B938696458A3BD9C3DED24C2C638C3603939AF44DB144E -5BCA51A7D729DFBE26E0884B22C0C4E3131AB82CDA170474168D89124A65B0BA -91523CD1D67475C9D43CB7525451A27B62723867F123003A99B98F2C3C2A482F -68FB4C42547AA6C4B9B1C8A4259A8A27305A2F0B147BBE39264F510142668128 -FE6610D8D748A20B9F75D48C3692FBFA1EBFE73A3279BD4C38DBDBA0CD429439 -F3C0FE231D0F381D369A1E356917184A4DE9CBB64F400C28B41DFD35F9F74FC1 -57F46400574ECE064CA9AAEA8D70A61F5BE95B5FDFECF87E04D4C45AC7D441A5 -88E6CF0C447DFC832179C012B46B19A7B2542EE40727DED27E08417639D6FDF7 -901CA1AF7385704E7EDF49D8A9AC990CE68A8898B02D618F8700D04426A5692F -24640B4311C917D9D0B86E45D9D43B99DC81836AE454C14242D107BCE8E4B989 -D8CAA8C401A56CFA611923072B72EF56284AE467BB8E2B04AF81D1C968321611 -B4D1A07B8E2CD4ADA29A8DBE695BCB6F022C8C53E9F0210A0D08F9A531FBAF0A -902E31DA6B2A3EC290F1A0EB4A5FA4FD504530AF768C15E3EB857849824EE965 -94E2F1974A60615DEDEBC4F4D8D70CA6A4385A45ECEBAC78C945ABFA42B90EA1 -17C59E615272A91488161C2B7B23A8B1F2C7119A49EB7226BEEB3A4C7CDB67DF -11F945CF22FFED4DDCDDE1E9AD88C63A6A271883F9104CD7F596AA77CCACA8B9 -D5D772A3C0ABDE3F7BBFFD678744DB7540FBF0BDC9D00A0C7E9170A127D21C72 -4B81D78F949773598921A5D3F756CF5823ECE57613DDBEE58F3428BD29BFAC3F -1EA57663472AEAAD48260EAC5912FC7273F102D1217BF43D6E52CFA93A991B74 -8C6489D7ABD79227C82F85E06D736602AFF3F497C64644DF79F460569F2C3BA2 -250D48D0C0EF5B4A3668BEDD804CD134A0E26FCA4BF071FEA9EB46D5AA52D66B -4F954E3AB2BA1EA71EB9BE254AD0C5C39A408AF4D287AA24C533BE9BFC0853AC -C31C43D8C419F5CD294ED38E56645A31FE4AB2C60D4486493ED8199461483F82 -EBDF44F1792BB87CE851105BF44213B35EA812CE967FBAF7304703315F2D126F -12460B0EB045BC8E196C7816B105259BFDE8C8EC49A751B0DBD7367C0661EA7D -1A79053C371DE08C233E1774998F8C86F78E4FF7E9239524A784509254D65002 -F9BE0D2A40488E0BE2DE6F336BB7337750F57F94B20764111594B2EAC17391ED -3C20C8F3277E1E431D55893EA0CAB659ADBC502D85B75DE299044985575C09D6 -C2D275221C738B967F1C92E73FE4E43353845D74B103D6B57B442DDAB3A46B7A -EF6E776D82B5B9873EF5B3AA77A18FA7069429441BB791123974281B720E6EB2 -6472549EB921883170FCFE289C00A159EAE56B9A8515482CBD5161B70B643718 -92D7BB3FC8E9E45F3635B242BD08FBD958C297205ED7FC812B7B70F65E979BA5 -73E7A7A348FB656843988DA4518F13814A14C336A4F2A610B5D9AD65CE1135F3 -3ACB2594B4204A0A852841F6D3EC52B4262AF8FD7B1E7A860105C85CB95D94D5 -C3BA8374B1DA93F493A25920058409C83B7529FFA6B3FFE79D7EA6F57E2E12F2 -A210EF27BF52F1A366C1B193821BD775FC92335B42854C7C11B253A653A74A7B -D213A63B69BD0B1FFB4DFBAEBD66C1096C6F2C9B065B5F20E9B02478D1CB8595 -0F68DADA125FA3EB8B7602E94A31750DFCCDED8759E4D87110D7F7B05EC9604E -364A9BE1D94E15B807C74E2ADC03047EE296179FD4F2C8BA93122598435D2D5F -D3C824E327629F16631BEA2FEABEA5F49E5A9C4AE2F44D5390CE0628A6915660 -C177B8F431D31410DC7709D57275C7FC45F5EB14F71132FB3BC77C2A7B2EE446 -CEE143193419B97A5B25D1756FA017E17848159CB5FF55E5D240B4E01C83161D -F3DC8D5D72000BDFE5F53F037CAF57994ACC60FF66417D6B5B6C9287323E201E -A13DB21DCAE0AFBD2149E8620B22EC21144BFAED02E1B16980897218538DE59C -E9B8009A4E0708802905AFDB35CC605097EB8CC6C48C73243364F184861B11D5 -070EBA71620C255AE2FBF270941222C302E8F0DA166423B88C3854C352B9E792 -ECD12B40F0B0A5A334695B6DC4360B0476E7993730524AB92DC9F8A74DBEA699 -F9F2C31D4DA3F4426595E729F9B7C88E7B46CC3172168F00EF3F60458D5475A0 -F1B42CDDD171E7E8C98C620CB5548F7CEB4E5BB758C197A09CCB3893D3117350 -F42328EAEB3F0034419A838D5ADCA8483BDF72F02E8821CFADC50E9A09A616E7 -4CE5E6CF698C3F919FD0110F5BFCA55E98753C67168AA91EFCDC2A4AB4CC6C18 -1DA72667621CD578C1E449F0E660B35F43244F09DE26C4ED62360AC69C8F8DAF -DA76554E6E0F012CA451F0B946462FC564B1AEAB508EBD2B1A1E43D1E7136DB7 -8173F6C2D2837F0FBCA8864AB719C09898108A4273ADD74721F47AFB2850E12B -CF897301AAA1432DEC0080B2D555BE3C4CE6E652C4806066CB2C19262F219291 -EBB6206B25A12120B1FB077E4638D675B3C50DE867E2C69D9B6BCA9394CA8B5F -AA2D002D9FB8ECEFA144DBD51905024AB54D6EC3F82A0D625AFBBEEEF6C854F2 -7344A10BE1C8CA785D8C3B2DE606D00D19CFDBE7BF781AA177E651EB07705E1C -2DD4A54DBB0ABBF1B57A1BA564FE5A9B12E39E346A387E05C4C3986D9CA23C2B -B2E6A3B4CFD3AD177FC5366B55F11CE924691A1B4DF73830A44E67D750DACBEF -1893527DABFB8970C3D8ADA24918158142D3EC5730F9202A7B9F61C4FFF4B09C -C09DE278B71CA6A061396C3671D3F48E85D1E958E7AE94C0706B90B6906C7587 -CE5DC4A9EF4882C314CC987BCAD4A789A09E4D51F370DE4D4484652836363966 -C80CEDEA41FA816AD86C2D792B5B8D04489DE99F06B3C5CC0110C9F24BA5E95A -E2D78D7FCAFB013BD160BADF4CF2D89F37EEAD80702E440CA21997CA213B96AA -531A385C254518FD23F710EE0573E86499DFCAF6F038D74C9E617446DA8EF87F -0861C3BB2FDF70EE95BAA0BD6728E9B4D9381C2B33E17D17BA54AA45DBDB8413 -CE1589C3E63AD7217F9C6B44FDBCAD121D3219A978EA2DBA90A27CF814B313DC -58C578DF4381F5235499009FEB3CA7D0B4EB8F0839602341D676CD827449D24A -D9E8223C40B5D34B0846BD9615090EAE3CB77D0B8725A3BD5B0A46558BDA5868 -3A00194345114644BD144EA11F49478FF77E259534791C200B0F98B2DDFF2106 -BB10EDDEBDEA6910C4B897B2BC1791DA -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1 -0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095 -B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53 -703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024 -61E91C6D25FD6823CB24FC863D3836C77A7D349AFA8525388E252386788B28B5 -E463F5448C9A287140C4F5FBE612C8F2C2749196D12097233794F702BE49897A -6DB52147CE35CFED4CC9F38BF3C4AA917D990F007357194F51FF6B77E97C5208 -AE6CB3AC6AF0B5DFD252847C5F1793F5896655EC8D617DFA7FFD9CD861631156 -D178F8C3B2045AE1B4D702708822F2238A29934A870273858FDDD2B9CC74EB9A -4F610646943F34ACF7707568F66F7CD9F3293060431C2A7AD92904FDD44E8079 -80D54755DFA1FFA2A42C954AC6DE1CBB7BD95B11999FA46F57C467CC5E4ABC3D -965925F0572DC4368E8D5F5777A11255BFFF91E833F42339775D1BAB2137B328 -59666E88912D609777309A032B3725AC11BF5CF5EC760438BE5303A48DF475FE -BB57771CB82751F8AE79B3D72CB9B65B192D21E1E3388AC0C9500E132F4017D2 -B6A8BFF48342C94359DCA32D9CE12D6C30011EDA9E28A57A854482FDEA0B6D15 -4574BAD94C43538D87E8DD1FA03AF5FD965C473EF1371A3F125592A0094BE7EE -CAA3E94F48E86E66D203F3AED59CE58AA1EFE006A136D55545B506172CA14C70 -6452DD81DBC1B3721922DDCF2DF6914E354FBBE00D3CBFE8A0AB309FCC3B8B6A -6F9F858984D90E731C80F9B050F48E670CA19D05F5D77441E15F304666154B53 -CBAE581CE6091CAC6485522E795B76C9FC509705F3EB4EF36B7CDF757A509617 -D116D7B97C1A3B7334AEF807C23F9F1B150C895E12F73265E5578C24CCBFD2F6 -3BEF1311E0E015D354F3D18BD4BA1757D95C9C583CD60057385A8BE4D14A730C -BA4DC18D4494D7E765A4CE24E17125FCBECA981F4C2CB4A360B6441A6DB73363 -44F62B470EBD387F1918A814A7B268623F7ADE9229AD314BFA0EC784071190A4 -99FB32985881E32FAD162E8EFFEB6B33E646F97FA94B2AA53F869AA563E519A4 -2EE643CB14B64AD6FC75125203E17826E81F352F5AAA616505D10F7F123EF3E3 -8BC7C41FDE75F110629B87ECC42A3CF2A13308A737D994DBDF999E7496F9B78D -01BC7889B7BCC46A95887C4C5C34A2BF484068B2B5A40FB408FA8A2F6BE6C3E4 -672116535B37825FDDE04CB8B873D9C022955F4AD86D33E836264BD2B918E053 -077B62508B1E19989B0F34364074CA7185651F8B4A09EFB08E1EAE76D1A7704A -CD2F19AF79339F10290C2CDD0D22E434D10B94911E89AE5A6D1EC446A6E10158 -B94ADF5D2256345D3E12FC412EB146A3FA8D1057C2FDF8936ACF6CAB616DBCD8 -7F68597110890808D8A7B8B0DB4EF58D94CE66621E6AE94F767FBB379A8C1FC7 -BB3F5CEDA10DA42A7426629946D82358B47E112F8DC90390C0022058250322FE -01381959BCD7C9F82D72E117DD401194B71956E6FB62D6EF6A6E3E99734014E9 -718714505F1C323A5AEECC3D8A4BD0DC8087B05B2359359BDE1A404FB222BC2B -7A2611E334F40434920D29EDE60A8CCB855B119095EE13D4F466AC051FC9AAFA -0EEFB05894E81302698CB995B05DB1457FC4429C7B007F1F68C316F825BBEC7E -D26D8F263145FF277F33B0F0A233E979DC55E3716EB74CE4A8AF17C95F898AD7 -FA00B3078DF01971B86BA81B12C34DB36DD717715636FBF4B0C3A98627637832 -F2656939434A36884CB5B87BF60BB1D33BBCFF921A453B951E554591968CF8B6 -7CF75C2074E99E3E74A617B349627F87149A39AEA2667C6BCA08FD8167FE20DC -558D5421F0FF41DD537FDC57F927370DC9ACFE931F25C88194565242013F50A4 -936A04B07476B1C95641CDF0803AA856C03E75EF26AEAB5297DCE8E1F208FC5D -B67F71B1385557B46E871E5B80C325F7B6C794469E8406BFDF7D062E8B997BC6 -B92CAD7DDD04237DFD5486E365DA9482291FBA96476C2788AD7F22C041E541D9 -970530FD20AA6DFDD5DE2906D086377099DBA4D248B16BB210F415B9BFC19573 -8B4C4F0595CD6FBC4E56A0048BCDC7E89EFEECB9336847FAB9CDBD4C63DFE80E -4EFD0D137420220645580D04AC8B6AF55BE073E557BFD5539C727C5FFB608C24 -2FDBB2668141B864074B52A94ABCDFFA1BE05F0BA690BA42FD08302B2293D3B6 -4323B03DF9D140B5C81FC4330BD45738562BB2E1E0D5C9F2588EE6BD7EF1CBCB -6E2847E0EFA21E81B2A25A683B0547DE37AA98BB7D77252496738BD7DF46C732 -805BD61643B31BCEB0338BAC90AC0E9F33EC31DD606BB6DDE8A0262E8BD9975C -3F69DE26DD0180BDEB0AEFBD02A7065432B7EAA4B8F44570A42D47932F2E4E69 -47FFB773E8DB38845002A35243055A7ACDDD444950786B2F8D3D846B2F21E029 -88FECCF0D29C2343C8D2BBF09228144FE75885C45C1CC2DBC39C17690541F268 -749D0FD2CC5F6DBEF25F5C650DBDADB4D94FAA7F6DEDD4CCFC65FF115915C565 -8E2D6900F67A33E21AB6B1205355C17307033433B608B0C59B02A2D159D7D640 -E84FE1888929C108BF5A8EAF5B097E9B68A0D7249E6AF02E6EEE19504DBB8AA3 -DDAD7267F4C658875E484EA03E24A9E22AF8A202DF0A2B7F1DF90E3A4BB3E9CB -D92F5B829FE88A8F1FA809A7BEA85D4915E0B148F0B7528EB103CF60C8D5BF53 -8166666637E869CC89C2263CC907DDFA754BBB0E88E85CFD5DC22C94AE4E07F1 -75FE51AAB02173C813149A6E3EC7A945D0EE44AD13500CC9E95F994EE84EA4C3 -66E32C90288C7FF17DB07A4390F62060539B4FAEC6FA2EB1EEF37CA3147C70E6 -23334C31F11621B2FCB989F49CA4EF99FB3BEE46269C4AC0B0DF38BF2BBE406C -B8FB866A8EF77549D0AF03E506014F6C5638234110044A8CDD9AD95F32D4F188 -6CEB563B2579316097A2322CD5C1B53C9353A9883AB6B5605714BD32CFD06C58 -AF805671082037A0F1A9B60FAF8B019563ED7F4EEB43D4C9F0DD2F0579DAE7C7 -E0AEEA4A6E82F016D2760C8C52969333A0897457364815014A8DCC5130AE239D -D222DBF08605B5FF6F3AA2E5ABAEE8D83C06F2F554ABA6CF1E8B1C32AB3BFA9D -C4BA7E94DBB28D580E9AEB12A7C44B2D92677A857C726EE9A104BAEC8BF31CD1 -9E16E35284837AA729B3F33D2F2796C641C3EEA45B9A7B55907650F73C1B0569 -903596F1E38909D4693D73A51A7AF674FF7E054C4EC4B2FAE8714ACE3B1D45C5 -7F38CA444C753D8EEA1599125E36FEC9C98A1EF3C7F79FCC249228D176BB5A14 -169A79ED3CFE76B37C363736E085E963F7094E83B19C8D311E6CCE8B42854E13 -11171AADC38B1CEBD6F60CC24C14EDFAC5E85F923B6FE66EEBA89D328504F512 -DA21686DE738CD3BDABFDC749D6F1293382C559566B5F17883144D7792D9E537 -F223067E95862EF03FB9422C0EB90AD1A92FD7EB633B5BDB580CF6BEB9A8D08A -1272160934EE2B9E51E9A1A6D4FD9AE946D21E9FE7991C966F91B74994A8746B -AFE34642CCB1B32187B8BEAF6E3ACFE324A367E7D3DA9678FBB2F0D608B7D498 -32B003D4B64A544BD7E549804266ED89D31021A5636B7F479924446E5014C052 -DDC648CEC64CB0E35348A445CB6E0A6D28E58B93972B01F18D213B9B73ADEAF1 -18CD31B3E2467D4CA65DBDA1A3BA92A2089990DE5224E35464606FAAEDCAC303 -E7E5FCD78CA15E8B0EA13A445C24811A9FD37AA854B81E6A536A9F4FFAE0C1C6 -7F7123A6BA0AD4A6DB880EDBC0C0827433826FDD3DD6967F197484F605A97B5A -AFD236CA0996020A580DE7DFB71A8B1A046BB9287E82FEED2B40A69F60BD7C01 -12ACC976ED18CC315B1ADE4271271C96679A18DE3244F8CEF43FD8D0BB06028E -5F007FEC31F2188CB98E29D243FBB182C5DB35F7609762C74E8BB66B7CCFD846 -6636989D2DC29ADD6C559E54EE9B1F15B944070E5E6500CFA1D1C3AFDB329A0C -C95F565C439B1BE06436B9105EDBBF82AFE991FD456288ACCA35CE1ED930F2F4 -26976A2B8EAC3BB69222D25D13A077F65A1406DE955A842C976826B29398E078 -A9A896DC9FD9A1FDDBDB51F5F00A77D01B827A9CD1CCB81D358218C8BBB14259 -CF7A2D1520342BA34CC967A7DA2AAC7C64D6944A2462981D12AA0C3E6F74CC62 -443C03B799735ED747088BD2E5E51D31A3691C709000B7C131546418C4159AB8 -BAB4C13B24391FE6A573EA07C344FE64E03D12D35F991309FB56DDC12B3405A1 -187A8729ED8E52D4DD7796C90F024A20722698B6C3BB05FAF2C9A3337F206E2B -E4FFCA57B8CCA2CF867AE0F9DF70226CAAB27C984AE342FD66D644C0423F6446 -9DA63F726A0398B465468A24A25FF742604A6DA47FEC0C665B5C1B5DA830295A -442CFC8AD5784CD77209272203C21A33BE0505E5C0A73109F44F4011458196FE -645B5ECDEE8101ECD08413036AA4CCA495FDE60FF3ECFE458ACD0D2E676A9E14 -F1FE485370EABEEDB0E963874291064107E9356FF9ADE67D0EAE96890B9990E3 -ECD36CB7A002F4AE56C772421396E267A83847596105C7A44CFD63F685098A98 -EBB582D5A709FE04B00A7B391865F69143217C0BA450697CA2ACECB98D325F21 -C54BF4CE5C46A552BDC899ACAFD41393F4FF02B1FA52463566957EDD7087E7C3 -8A5F2634200B2787A20170F7CBC3D9DBA2CC7FB9DE07F5A185FAAF21C82E8286 -BF376D348DC0A23FF953690CA25795781817B3129CE3EC01E6696BC93EB37D38 -0CF92C9B1762F849EFE96578318F46C0AE96E9BB2EC9AEC24095A1FDF34ADF4B -C04F13EED27A0AF8F4CAEA7CE61AF2FD165CAA2110015D4EA46CE4F2EA795C77 -BA7F3FE7B1CA253BEFEF75EC71E529D4B11967D2948D0AED058AB8E3A5C59BED -627E102A8F4B59396833CA7B1CA154DD8EE4D657B561F668BE5783EEAD7C31AE -73A42A84F483E5B999DE1B7A627C3FC57A48AB6A619BC1895EA91BC48F1A649E -A01FA8E0A763181D05CF487EA044635F03DCBBF6ACBD17E5C836B276825E6AFE -4F84FD8A37255BB4ED193662D900A06CD9B00834F251F38C5920A5286B08310F -59F98D4E967760134DBA30663B661ECCD2CC94B73CEFAD0BFD88E270D0C00109 -AF4F73B0A629107BC951DB46695B32FD4F2A88657F024682E1B48933784A805B -A1E2606DDB7C037CDE81C4E9CC78EC6174F94A8A709352A77245FFEF77D25127 -028ECCBEDAD43890BB93BC0E50A1974CF341A6C2B5B8DA3A2904DB66060265BD -B76897F8074353B9B4FFAA62A063352B05C89948473B7937B009D38356F6CFFB -2F248CD61E92C32912AD133033497C7B31B282939B84DC896546FB78A5B9E265 -127E0E558E0E9BAFE59DE05BFB7A8228F680443B4D6BB12183CE70FD61774D24 -C11D787FD82B0CBDBC152F1BC51096A0C039B9AFFAE1129C0FFF8FC6BCE2172E -8F3BA32C1D1EEB1771824DC03242474CB5F1354CD2FF980C009BF41204CB5AD8 -F3C2D7A88E219CC92BAE8DD464A445C8A7EC22B309E36B14E55A487EF9A39C30 -543ED96C21E86B16A6B82B8E0D3A6C95A1E6DEA2B81E756311ED895DE5F66352 -F771E6B3DBFEAFEEB11CBFE70D6ABDBE7A3882ED3A3E4D71A96010EE4975CED1 -F5D59C749B71AD76F75B7D1C652B4EF2FE348FC0CB3012AC63FC0A9EFA6A4BB8 -354A6CDE0C3289F6AEAB6F704DB7DE9FA74C2C640AD4435E23F75C719D3901C5 -D882265847C6BDC085B96C9CE7115B601DE61926F2C57EAC3D66192214E85AB7 -5F582F475D40E1AEDE50080DF68A6C08F856DBA303FCDADFE2C1C1CE1FC47A6F -602EB0CB950D92AB2507B9F1E0C34A88AC5444CF4D2A67ECCEA80D11D6FDF087 -B7EC6E38981AA47EFE6D4AEA5EE85F0972E1A73E33670075C391D0D53324C3AF -9464D44A29379B2DF734527A0BAC7E9A99CDCDE1BF17008F550AA77C4C6E62C1 -D11B88AEBDB2515ACE094227103C12F96BAF7CFE24722FC9F31E22A856934A5D -704C868CDB64192690549AEB22599034FED2AA24A5EFD211547C033F46DE72A4 -48FBF3FF10DDF6E7479492C6F2F6AE8BA099706255F9C8CAF643FAD38CA50B58 -E1939EBC0C5646F07EE886C5C944B455F68C2E180F1D710096F1DEE3F3744248 -9EDAE22B8CA17FDFB290E651A2701568E89B8CDB31EA8AABAEC0902C4CBE6495 -E08D9DF60B708B03A06D616CAF22D3D57447096614AA86B4C658ADE36298D882 -F049733E2FBC90D231D7577D26D7191ABD22E1638726182BD65A592C53C87966 -44BB12CCCE5C725142A79E5238D9C66BCB576C17F2455845B0707020B6F7605C -BDEAC1065CDFEB4F38A3091BFFC7A9FFE8F045D7FA929EC4C50235B8C54DC2CE -BCD3C02FAAB0590804FB27DB9EC1BDB36B650C73F47FC931391B9022EFAFFB0C -24011BC101D4D1C24F65C93FBBBCC40EECFF18958917AD7D9206E9101EE5BC42 -57935BFADA884F7BD68356C640E08EC8D919B600EA8ADB39B52437F3432308DB -3660076F7718520DC43E4F468D14FC80DE47604BBD60DBD2E61A08EF0BAA5D04 -DC3153AEE166AE8AD0CDBF07ADFA16CE542F014E72556928E0A0C54407F1F9F9 -903B0A4C9DF49CC2D3C0B63E067C208412AA95E91714A40AF7A164F15A61AFBD -56D389A455B8FDCBB845C1D2256BF78B9A5EC6C72A86186166F2F11A1D60BEFF -C3D62A39CF841E1C386FFD20B2A07B1C677FF21D757E6A84039FBA4D8AD1F403 -C5AAFEF35E73F22F886D6E6477D1DDB779BF4E1C9748E7EC54E933A38E973499 -48B01E95A95C47024F541BFE55C474F4928E7907B04C0F02937D7E43FF899673 -B6139A251BA976D8C3DDFCE8F765692AD10EA49F0B0ADF74D32289138BAA0AAD -26CFF512EA9AA4FC5BF33A30B45C0AD2C965DE7B2EAA463BB6959D0BB22CC72C -F9151C0347016164F7462C4AA8306DF6CFD595A8981B8A8F4FA7C7D47ABBA083 -CB6C9389BFCA410727C7E5AD03501D1EB4E597F1E7D322FD4409CFE1684A88F1 -DE9A665889D8FF7ACBE38DB9A0E50DDF0DA896B8AB4E0D6E9B34E27AFF82FF90 -959CF474A820F5AAC0A6FEBB8458A257D7FF5F681BEF169CD19BDC5784178A8A -12584EFE77035842D21B3C2E8949C56A5C1A9819C686D55288CC204E8EFBD615 -324E2A11755B27BF32177AAA70F4D01AA251DF804E40C6E0B1E9ECE846D03B85 -04466365BA5296784601323E37BA936745E4124DC4EA11DE9BCC91770ABEE465 -74057B938AF2E274C95E89F02C05FC31B1E2E30A71FCD4F80C2A0C0A7E534DD8 -DA59C06E68B43A2ABAF24018FCB6C1B31F50D8E91F940B75723F4CFBB366AC50 -DCA82E5653ACC4E5A7EDD686F890918274A106F360EB87BCC27C2D835416E2B4 -CCE5E160F086EF17D94143024E11B909658DFD541DD5AB7D6564695DC73E612B -81A673F3FEF09E230861D9D69A6F57F1608FF3018F36DA3550EB26D3C682F6D2 -A79DD5D61AE3CC93B444ECDAD5B7EA65123FA440F33B571ABE86FB1B7862A78C -A4F2468D18EE362665B727070918802C8EA3768DCBE084ACEE8EC46C6219C600 -587B951E654593A02A55BE2BA54A74984B75570A816E3BE8AF9FBEA0636966FF -21A43F97BD9D992E505EF289B36B0B735B99C9346BB2D9B0E0A8DB534232E909 -5ACFA7947CB51377ACADBE38FD67128BD05664F06A1D5E695C9A8D55E63F8655 -23FF5621368040388F47269519F98EA63F09766B356085747B30DBE70923983A -87AE3E85BEC8E286352E33D2D0C628E42040E3873DE3ACDA3623E8E6022494BB -746DCE68EAE2CA088DF76809E56AD22762D565D2E6D73E94210DD1A6B764314D -EDF8316156746283C7C65A1F18ACC4ECDD3F8B288D4D668F103C81CAF8E5ACCC -01AE44593582DC4FE623006D2D289CC2ACD59D794A8A4184C031D2CD79743B52 -D25082FC542BCAF7A14AFBE6F8B08171C074B06AF9CE9D854B300CBB44317B5B -2F890D642E16ABE144EE8FC96A00579C3D205E3E67250D9D97E9284396443030 -CAF310778C67EFAEF3D47436E697865C18D6D1B0B5A0D0F46D6DBF676A7DF0E0 -C6FD35C376A855DF52B51E82021C681F47BDD6A34973D4BDDB718FC43F16E1EA -0897B49D97B6F90075BF28EA0844A4E7FA10170CEBCCA20237DFBE1E071530BE -F6FD83FF046C465575CB793CD5F632A2836E66799CFB786700D1260C65F7447F -42B7CD141245B723970942C0FB3D9D351BC8E06438A0811140C6CC0A3F093FD0 -85819BD0C648D8EEB4D3AEF31936A85C7CC5C975D954C02A7703EFF0A3F63A0B -118332CD91E706594A9A44E50504AEF5E71F7733728A3CFE399B0E3B14315330 -F929DC0B23CFFE39EC90E45D4F75A5ADC691814140AFF8CA420C5A5B6EF58E55 -322943C976319B16F835D8018B77324BCFC00F5317F14C3C695F4E653824306F -CC159B9993BE887428ED0DB7F6471226293D13227538AAD9F761361CE9218A2E -0961425B97CE18217C0DA298A96ADA6460DEC77961C853700C9FAB6A2932578F -69234DC3930E401CB7CCC9AA0256835EC28856B92C728D0CD8FD8F357EB69FD2 -28CEF8415C7E33375C183B6233B363723F63000243EDDBEAFD00E64BBDBBE515 -422F368B229170DA37D60D3E3DC2AAF8790C922F95B6DD2704FDBC7781099ABC -C46C590EA1D80F718C030A68F94B544916B3B41078077E5DDBDAB5D9ABAF1E8A -602AE5ADECBAE6438B58DBEB3F1C7A5820F6162DB79E650BFF1AAA0BA5EDB8FD -DD620A6B43FA34B23AA86ED30416D5AE8849EF2FD85D2FD65D40FA41B401A786 -09CE2907D1B4E6859E363BDA759A6614DE124BD0416A23F3939EB0958E7F96CC -316AE79DF7BE418277815F39DDE41B62BDBD3BD411CADE04073354790A17DF44 -E83A9D8D25D6739E11481A89E0551C383DFE28AC7370B8382DCC0DCCC96B11A6 -A4B418CA0ED782C21E8A329C8C29BF746F259BD551B7C22236DA6FD78367B51D -2E21471B89C57E910D2697AF88EEE54BC29132A9F3D6FBE34ABD72B65F8E452C -AD3BDE991FB60607214EB8884E04AFEB781272BE8E8443106004F7FC46C45176 -86FC103F6C0F80DD7145F01F3CAF6E64AC12F089CAEA744E640CF8816614DDD5 -647D94B97C6996E3A0206FF03011769973A157CA10FA3231747F497D822B6295 -F5D76144AB7CFCA4E206D0C2FEE03BB8263C044886790AB91C57A386317DD25E -7B992E1A4C56BB0BE1759C5261D91FDDE70EFD84CE3864988DB641F6359460EE -E32175EAEB08B0EAE04E4547FB5097EB0ED36B938953BD5F5DB215F7539E800E -25FA5B4DC4A8A618C4AA896ED46523F6D6876EBC783C9DC00A817BC857B762E4 -B5BDCA5764CA6DEA14E31C22269A3241E8033591AF7DC82BAC722B3580D4B6A6 -5250A7C5DFBB2D677A0C15278C93E480210504FD17FBC4A4F49243F7C94CDCBB -DE8EEE03B699CDB33FB45938BFBC6FE6D04D8CAA88FDF0274AF9AE69DF4BDF5A -5D458CA363E064D6ECBDC346CB9B22D88B85155FD636B43CB5844003DC168E7A -AD1CF958D74C256091BB3492FD0563FA123BD9EA61E5483DEDA7AB76B0198027 -389D271264C57148F86D07B8284FE00CE9A61C7CAEA15B7255 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D -E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 -337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 -0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 -472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E -A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -3318B32500F76B1038FA6122C2AF6261B025BDD519D349966A067FB190E26763 -A5C6B1AEA2A47EAB8EB272BAE2EE33A622E85A7BDB149A6C7C3BDDFB840280EB -3099FD3BC4081E2426D68C12D6D360F1EF8FEC18E227A4D43CC27E05ABCBA6DE -A980A2228625FD33C772C6DB7F803DC69A967891E8D28BA667D8B04CA8A788D7 -C7C5D84B37DD98CCCD946655A12B8B5F9C3B590A001F1EFAE13F739F45C8C6B4 -257C6AA4D133412B2F9E25226E2E9CA4A3C4D31884E143A6207CCC7644C7C30E -C870AE94C8DAA632A8B3FB90E4A67ABFDE4904E8417CD16EE5D8BDC5483E80AD -4DE4AB6F0FE123427DB32A8BE5E0BDAFC6281D56CD83997354829EFA338991AB -0F4ED89C6941BA491B68D608301AE9E608C34A9A035DC3E86CDB4A64EE6F4629 -315A91184FCBDFD727AF7F9A9EDB604A1A13DAFC7C46A730E8CFFFC3FFFB1E89 -9A06F637911BE1BA30E4FBF5A0C5F504004672E5609BBDA6D6308606EB8752FE -AAD27C809B4F0DC9E5B834433115EACC92A17E214C5341A5C7D42375816F5083 -9E29261577500737B690F0D73EADFDCED50E6482414481F24216C2E7DB0677A3 -991EC0F265B919B8651C16CBB83B6016DCF8071C6E3A8D627BC4416109CCE5F8 -EA954C91C2918D804CA758C5F70551CDB5886FCC4785DEE80412A6CCDF7CE64A -3328A3D3F38393DB98C4D02F36E0E162C161160BF721AB1947FA3B8C7AE170E9 -61AE9F8B46766E2FCE33DCE39622C4525B4F48B58C2BFEA8E96C5637785713E6 -5D550881BA5DDFDBBE0EA786C8DE9375B694ABCFDEEE060FD93620FA2FA7C80C -CAAC497C0433736D80221CA7C96B72E2494F1B3CAEB1FD27F83682F04DAA0A3E -DF102513E3303337E028040AB7B4117037B72AAD9A1E491B705F67361A557B57 -FE15839A3B1664CCFCC8589E2F144E7FE28E3DB055A7AF6B3C329010C2AE8FE5 -D6C32C3DB0A2FED004AF13C6C7884D921DEF0C55C5E8EFD765299C95F7869119 -DEBD617AC908DA15C2665B025BC4D5FE081B2F842C3965F2207A05E21BDAFBB2 -8B8B7018EA48AD4823695C944AA76189F8D3AF3459E1EEBFA9442AA9B845FA25 -3BDB2D6842EC70AE87EFF1A0A241D19BC3349A9F04C5A25C966D2350DDCF5C0C -1F707723956D01B3EF7B09C7A37081AEDD0DF85D1E4392A73EEC493C85B8F1FC -C59B1B2A1B91CB642D968B09D4178D36300E85B5E2CED0C18392DC2D498ACF2B -45A1ADA07CFA3C0F3EDFA7B39B1F8442144C4EEA714A67CAC59A76B78C25F6BA -49712594A8C82D3199083C9237A69B55678013A886FA4A6E5296071361E4B780 -467CA1EB1838818552E1E03256AD14E0AE84CF2034DC139ABB2D29BE20EFFB21 -4338D4CE010F1BB45767F72088554BD33BEE2AF94ACB6CE894AAAD575F2BD390 -9F6D3DDF9BA8A4EA17244774F2648C9F60464136B6382485626854EBAFC4A2F2 -996399BF2F97C7381BC50057040537F19967890E69691B6BAFC04608DF8DAE15 -EA853EC865E3A88E16276DBB11983BBFF5FBC013AAE53FDFFC0F884A82AE0701 -FBC6B117EF3A45B6959E93D0F811A85243DC3FB13219CD14106B12608CD7336B -CD26EE6F3A13AD6EAFF464ABBFE54515FF2C44D27EEAD7FDAE9CC5BBBC71F7F2 -6B0F21E1D28B7562BE8A81E0B942467AB3AD918209A02C85048149633794F3EC -9A4170F3994042671B63BBA3D7E1562EE494BCF10A46B5305D9AF0EDACDD6D9F -B31FB080C264278AC82C9683EA626A191AACCEBB88E2CE31FBD5D0A7A32C90C9 -03C17D842450976AF1FD86B29CAE0ED6104E017723B18B849344A92E348C8AFB -53DDBB08E31AB5F82283DD8EE248E691C1FE0CD9E2E57FC66D42856393B83207 -AF58C7265445940B8CF8C3A9F6356FA06255CFF230298068D0C0B51173C10B95 -90134D7CD4F54BBDB4F9FA66FE4855DAA0CB58962DC9EEF28931766F866A1F15 -0A80FE86DD8B38343A03BD67489B7A1D08A28B5E776405DC35A11D4EC08822F5 -DD00FA83DFC9EFC62217E5DCBB775AD0EDC26FFE1EE275E496B92A6E0FAEB92C -6ECFE9E4F778ED08D0F2BE1571D988424DE1B50A8BB534748FF1ECB464C9A085 -206EEE7A0DE7CC4D5335A40AC51106CD3FC6D75A5E400CA9A0BB610F677D1816 -1BC717F63E3FB497800684E212F8DC5047B00E0F8EDAFBD5D3F1ECEB1F951B23 -C18E0CC93DE2B369B21950C4DF4981DC69725872081E9C1B4556779428603DFE -1339BB8F5569E649CCAFD9F354344782498B8755D881B07E9C0FE50ACF956141 -6E4A36301DA057C7078D52FFB8D213D3E9086F91BE387CFB33C7744950F62C97 -1589728691863E297CF0894E6C69B3C2981664F69F095933762BFBAA6D5DDD1C -DD1D090F0C4381B28F07E61403AB616858A86E9BB765D09B30B28277EFFF409C -FC8009CB393B3AE2D2890A808CFEAA804FFE8C42C0E05C67959E5A23D4B2D3D6 -7CF35FA9650B37A25EC2853E9259AE291DFCFEE4822B9DC9F68EC86A1312283A -9A789FD180C3ED673D706352785AAF7E8DF79EB323C769DD86E78FEF1D074FC7 -F501DC0D268040A74C54752A5FB0648BBD0A7D3A594C2DB890145C6B74ED5FC2 -D41466AF4F10D74E161BC5EA1C274D222AAD86F1C0EA9D51F6CB7D5FE1A6FCA1 -BA0DDEE4588814A09E5794E6BB1994F7E5CD35E3649601CE6466C8157C87377F -3D096CCBAC9DB3B66BA616BCE5B8D44062AC65236F294C199017CBFB8BD6505B -AA7A22D146DD002D36772C4F5162D109227CA4B92E9EE314E43B52174C593F79 -C532E1B4C5E72CD0872DC9891FDC532CD5774EFB23F82FA10B6449FC05EEE066 -2D083C30C5F288B452FBFD5BEA23B7A19EE07083CBCA87A2503B6AC0FFF65497 -6929F65E9E88B6388A84408CDCEB2874BDC72D06B033B886F448948AF3F9E581 -C4EDB3DBF7C4F22FCAA0C54B3C9CBFF77235D5E8F6CB55B48CCC5B7EE1F56358 -25B9E72DDEF7598FF08036634989CB8A416205A8A9532E2F3071A8921B2CCD4C -370B29DB1D9406BEEE4C93C2022E3075D4D5A94292212EAA9E260ECED28A438D -2CD8711837287D130D76A5132C8E6E09DC1AAFA65CE31C376A7DF9062AA3E3E5 -F7AC561729F9D3FC358DA3CE1D296662ACCCD3AB2779F13C8FEB5E2F0566C1DA -9269FAF2CFF44AD65F18BD6ACE9608898139AD229F73B4C1A310890BE0775C52 -A51486A8D721E0BA5E6C2126EADFCDE9AC9CF25EC0CBAD7208C921933EF4765E -EC4172C9E2DCD6711D770085A752283C785124317DBD66DCA7384FE9764A7CDC -A4109FC5278C13E2646034478D6A1781FDAF21D9CD3104A2261C412E9072B617 -65294BF1E3E1994BE3670A0A51E4C8AB05B18E337808A386E1FA85C3FA4E9108 -3ADFFE6AE72E28CBC0A8DF3BFED6777390591D1261F774444885730A5B3E6C67 -5CCC8CF984129C4408BB0EB714EB4DFDCF5F8EEF9F4872518F54EB58987CEA33 -F4C2241CCAFDF2566DD874D6050C094A7969BD831EDE4E40B138824196B460AB -15E6014BA2311D103ACF26DB9CB79CAB968943F4873D92370D367FFA082C93B4 -B4461D199ABA8129AFFFDCD69E98F5C27E1F849EF22FF0FF625D561EBC90F182 -8271DCC654627C1035B5DA0E0BD56830AC185520533EE701638D74FA392403D6 -24A9350C7A695186F896D514AA511063B2B668D8E7C1DAD8EFAD88B78B90986B -93F59E3F3375CC2F5A84C17D43857455404193CFE58DCD7CB725C71B24844B46 -8C63970C22366756B6B0CF8AF0F5F78080CC6B1E96207E232918719B23329EC0 -0171C78C0E5DEAE224C9FCADFB6A5AAEF93DB384F44C35B5CAE6FB41736B0DD7 -77DCDB5C06CE91E862327056CA27BB2D512AC904295188EDF9DBFEBE4175F55B -37A3CDFB2E84A9EBF74761A345363A7F10F3E99DE38D1F3B9BBE32B28588B40A -9D8A5267B485E38C489ECC00B4C81B92DC72B5C7051448766FF9D1FAC49A7BBF -28E672021BA5CAA75CFEDC9A2439D47D0936DD4E7D870ED4B4F4FB7A85EB21FA -AE2A93065233AB5256BC1B97DCDADFEEE49B4317EDA13FA14F6F5B0516535981 -046AA626A560CE8ACBF67EF302115944EEA6C17E6FC19EAAF1E46231F9B8607F -B6B1CFF13E0F2B8CB7258151CDEACB85FE82DE96F72347E6349AFA9F4DAEB0A4 -AF8D5D14E2F34C4A9C51AB1989DE4C4B164D356C30302C77053ADC1CDB5A55A2 -A20957CC440FDECF7D32C208E3F2840D37D65E817D1F677C812CD16B67933CC5 -F3DA679DC7B150CD17BF41F89687EC6B4FB201FFB8B819C5B990BD7CE655A4F8 -DF77295082E3087AA86DAC4C16B145E85ED81D45A504E39389DD1EF62E7C5432 -B66D9BA1F8E2FF7D85F83DDF43FD9AAE7E60AFF215A22F79BF128CA5019EF7AE -7DA8501754C0D1FDF05FD87E32E4FC3F1A4A681A7CA04237B072BF59FBBB75C8 -69F6837210B528BDD8F9E9788946458347161F55D26B52AAD431606632884829 -B3B9B60191C15E89FA1F20E9CF10A1158EB130E937E79EEAF943B747AA3A3554 -01F3C8F2A7195C32A85BF892753C0AF336ABFDB001C178D00631084D35257355 -44413849A5D963EDD74F7BFE9A9EAE9B7BDE07F3CBAA5B9998F792C6F4BA0055 -3406E4839974EFF70C3774E63E317636594CCA6C14A3772CF8B4032281B76F77 -33E1034E27BF474F0968F299C17DD2C2B8A0EA3ACD5201598B41518B14CB7092 -D79F08BE6870DBF673F60F816C69F440F112035C6BD22126CB013AA67492D9F2 -126970A7A8A0F058BF7588AB4D8BD180B8CF063623AAFDD7879E98EABE7019F7 -FD0F80D4002C7258F53E3EA9B8887D9D5794A7B3423200143FCF2DB62DFFB0D4 -B58C2C91A112924AF820541F7C4D85857926245E47EE4D1A08F9CBEFA442A8B9 -46028B56C398406BFAA30BD67421C96E096E870416A6C2B7E0A2F4A61294CFB1 -568EF5C36C6F91EEFECD67671213BBC7878455DB996EA4177790E5CE860A6A1F -38B82FE2BFA86436ED46E60BDD900B4674358CBAFF643901AEA043F330790F9D -E5257D95ECD588145CA9CE752EECCBFAE874AEEFFD9EA12A334FB63D6DC6B0CD -E0B86A4889736F24BBEEF7FD381AE7C4A3337BB08C650B2A8B7C89CF13D9B620 -C5149075325CEBEEF152A4409F53A3AA3EC9ADBFEF6A16C7CC4671CDEC51006F -E5C543189EF555778D3581D735880162627CED42B13E4F2FEE33C419AA518884 -E2DFB6D6F1C9759B260E7346814DC0A7A001F33A6372F945D060222DA5D7A57B -440CF0C215F125B9D327FBF3742C7F74A850FE6BAE73CA89B17A598CBB738AC4 -564AC942698A45A9F81008164DD56A6497751C55F1BF3D1F90851DD8E2F8C43B -542EEF57CB577FC9733C254D44E9A1CAA3102503031F638E68A59BAE6AC1C7BC -3A34C7D84AD76D55C7B096F6AD59E94BCC1674FA04CBC0E549C968A814632C46 -C632C393FAE776A024C3262DCF08347C4ED40D259ED7B0DA5E89B688B3F35E02 -6015A9303964EA2D5F4AA60ED1A39BABCBEA725E3504741B5E36D9E63E248F05 -A908DCA18AE5D6ADED8026CDC356D70EAD9BC7690B632752079C0C45098DF5DB -0E3D771E61D21B20B0360530DE3A32279D16DDB6B16EA1631979CEC0065E1B28 -3C4D59FECD235B616737229EEF4F35814A51D66E2119F6EAAC11BC90A26FC3F2 -804357330EF1763CD4B456B179D133533DCB37AC701CF7E8E0BC088A154FF096 -CB67B3FAF7E2580BD4AA600CE885F7BBB02327093C1FC596AB60981141031792 -EBF76D709C573F7202BC8F8C5F19876671062C7A3F13FEB3E1BC9B4D20B0D1A2 -D1CCCD0D8AAC6490BB3D412F3DD0740BFEFE8C9EB8D8303957D68688DCA33166 -6CB2E1E15CF38094933FF947E357D9759F240006B6B64A8B8BA46A6E43D4D26E -7A54531E3A3A900FC427887043367A14D88D5D85CC010193DAB07C2D4914DD8B -8BC94F066A8680337453DCFC19207627515CD5B3FFD2A5C6EB109B503B353CD9 -03BE5110D30C2356D9F751A4D777425ABBBEE997A0C37809989410B5988AE768 -8F1F6E76709C1DAF36C91CB44D3DFC812D289D2F470DEE365D2F3D3A8375CD7B -28DDF31CE000B7F885DB7286E06975EA1ECF72006765EABA9F75EE34D138E941 -80EC363FDE8B122621A1C18124202F274345C2D2DB2E7075541860DD2531A66F -71386B3387C2788E5F0BC9CC472CAF6A8F7BBE0A0B004D85A7A5BFA067EBE167 -C5B672A4DE0DF0A39467094774E472854E19EFB3D743ECEB342180E5A97A9254 -44FA677D4440CDC88101A4113CBBE7931433D7FC85AC2FB59AEE3175F22D9270 -1813D82E1608629C5D62E5344D672B8604E7206ABFC39F00A66100E4D560D7D7 -ED8FCF0368E48F3F8551B8CF1D8011C079E20F93A37840D969583A12F4632E63 -8273C351C4803F0E1E99AEB36D69E7DB704365791F4208139FFF42CC0C355812 -9AED12F62F6F61087D7550CDF95A5DEBD271F415CB72A13010A792F81D0A78DB -E7E03325A4832848112CF0F4DE539A06FBDDB6CA46B78E59DAA89D061F39463C -44B80A9B8283CFEA9C258D2F2CADEB36BD58C5DA2EE26D4E08F39C48E0204E64 -536E8078BC73D3EF26D9D249F20628784E3C8CC40A54B2C25555473CF727D387 -9D3F2D4BD0CDB02F41F597DC51B74D078271F71806E48EBCDE350040F8B76174 -3D4E6C8202ADD34E5B7319733EF19BEBA4BD57011A60C954FA1ACA3B14CD28FE -7BE9B4062277F681EA3F10AC9F9835B5FACBE7B918F2C93049B3F23CE9D99E51 -B1295363F246128C2923F8A7859FCCBB211B7426B3B19658FAD95E3467B89165 -630A85BD1542B5AEE76C7D6EF46FCC2C933407ED1FD864C9116F2F1F3CA39BC8 -32C0DB66A7E31B9C17BA34EAF0C64FE043D7FC8B512C8A79AA3374A78DC6D558 -602AC803FA2833118F5EF378A54F70A14B6DCC65CFC0760870E829176BFCC9D7 -F9F6B3219BF6835B42EFE93141C72CEBD230657B1CDF41F74DAB153694FA2FBC -039FE701EE119540F6E7C7F7B5A303A6CF48696495B902A8EBAEDB378BF291DE -1D9BBE8F9F82C20EFA58EB948CF5D8EDE0F1C18484534CCF51BCF65CFC833C27 -0DA24723ADA64769F7A9756B57409B3A8D0417CF7379AFC924D683B05BE96319 -4595214CC1203744C828F37B4A03F0345A3A28C87733D1A8D80F8E09C2E43A7E -AEA179623A29B4DC070B700D3EAC2B00555DC2ED46C834D80690A64E14A8DEF9 -17F06944A47B8C800F25CBD3FC4AE700CFC30459755D57EDBEB3AB92A62F5744 -B5D19C2B6E5EA782440088C609979595F13299AD237A00CFCD8B05A1569395EC -8D152AD848EAD77EBE4DD9F43E6A6320299823872D2095B90D65FCC36C3A28C6 -81C54FA91BDC185A6A4DDF63F76D68C79052D4B73A5DB18C5D867E69A446F4AF -7768F227B3B85D336EA06C78535D44AC8C862BE38E135477FF0E13DFA18D957A -5C576AE1D3290C6C79B7D95C201D1FDE254D9EB2494B3EAC175EAA43AFFFA682 -0C0A0FC25E362525154D9A0E869E2591C885E2FF480AF885B115956A5197DD9C -D206EE00C4742D4AC78B80A6B7B3503050093C7E4E00685CBDD042E9DF3A416B -250584D8849B7DE26A378BDD8199BA91295C7081F563D65D8A768A936F3FC310 -A98915827CD8F40AA0DEE30A63B2CB9FA1FDB58B1C7DA3F0F1AFFAA6226A13A4 -56A1FCC427844A3BA1EACCA1964E9293D3EC2AABD04E5963F5E3B1144B0796C1 -A12FB28FA42F6D68C4811582A79A341F84343DBE17B6299F538C89919C618260 -CF0D632AD2F14235BEE555BF5F70BDF168AFB7DE2433424C4124B9FC314B5F37 -8679077441C0FC4F8B2D8E4F13243AA1952E8B5A3A035328EE7C8C09800B531E -0F70026C7E68189D7C94BE0BDAA917ECCA799E1405CF618FC6CB26053DACF36D -DFC3ACA8EB6D20F2BC5E679D61505D23047A7C93EDB79034C2829ED267E82A82 -49BD89672F310A69B949AA35FD8CBF3CDB387C48646F81F51B909B3B86A8CF51 -1FA1637F574722576198D8AECD2CD9185481FFEFC722D929B573E1FD54B7B8E8 -CBC86FF89C45548CB06014E68CDECAADB8369B39A2ACEF79D964FAF4D821E4F6 -EF6810D72718708E1E64CE6936E58A4DC928D3E9E4AA5FCF04BB2E27353DA3C9 -7E84D43E59307E078013700155356B5F134F1D5FEB290C6EBF21DDB7E46CB54A -5E6D4FB62C00950B02741D5344E0C265211BB6F6C55E83C27348F8D6D2761DC1 -2098A0B68DBC1C5CE163A21ED18BDFC84144E364FCEAE6A9243609DBD1B4363E -877F2E26AF42F34E13B6C2E1E485C8BB9C7F1391122A682B9E9D5F00868EA0F2 -8080D7EEAF14E89DFCC25942E8BB917A5DEE2246DDE18F485667B2430056AF40 -524E708DCDB14DA6EA1269AF4BA225AB7BD49C86EE3B9AEBA2C8B1530A8D72FB -7FF7602257F185DC18F8C41765CEA7BD9C054DD0CAE1C7E725D2D8D9F0195516 -555596010C69833A45506984745E6321F2C7218C07828F2D52D9A54D042B0673 -9EC77314B4877225EEF527056982395EBEB7BE86DB016ABF99C941914BB8F89E -BAB0FBD6D390D2AACB75E4A1C0E81BF8918579E91BDCDF21DAEBA4A3B7F1A144 -C603DB6B498B5639BA86FDB53E381D3BD62BE5FA1127DAC61852A980D26A6794 -D1534DAA3240798581929CED645AC2D5B0B64850B1B4CCDEB7F8E5116990D862 -430A4C5A282AA682FA09EE612E6912405EE9B7A1AD2F329A0068CFD84E3114C0 -895DC2A112F482DE127F4825FD0C0B1A38A548596431E23099DD454A7BD9EEEF -24DDF1E299A3C0AF869AD77DB0382A32AF58542903E9E773CB7A2847C0598855 -C372BCB4BAFB7AEC7276AEB101602415D50C021A3144CAC78EF339CAC4713A34 -20C435062AA9AD9088B3F72CF88D541B8A2914A2144D4E3BAAF8FBC29ED32C52 -EA0A4B8CE949610FE35D78D1A1195D64EE01AF77418C9D49FD7F3DC2D6B6AC03 -0712C54E2ECDF64319343C5A544AEA526EC66F956117FF7C7DB4B171F6ECCA9F -02DC60EFEA273E3EA814B810BB44BE1A2A9FCC6126DD9312F55095D09891ACE0 -42839B6E743F729BFCF055EFEF6B49395B39A9D937AD3DD6DDC133AA88421EC1 -38118D5339EE09008149BE8D2CBD7D522595D53F0A7FCFFB00D61FFA185F653F -0765F9C61C732E1B6EA5FD070DDC048C1F9864A31886C0E68BA6616A34D3FF27 -49922B75F719EDD3A2C083C973C5A5756016393AFB68D0E8759628170B0641E7 -7B851DCBA6090DEB21F6B805EB66234E6BA5A3D1FECE2721648747568E01D01F -60F0147F20EE9EFAA3A5C6EFA8B72203836467EE18382EDD8723ADAC84C7AB5E -ED8774E3A3A94CD5D6806A93CEF48CF1B50EC9B387B40C2A29F0543DC9F70425 -1C18913567DD72E7811B907FE0AB9149AE3540ED2C51B6EEC62A08BB66B29C90 -7D09797FD3EE73E9E6047DB4A02A70B974F0C1F65E94D6817F9963A8E669B036 -0ED7655B15DA44DC802AF0F667EEE2C9A0BCBD3353F6BB5DBFB3B6EEDD712274 -2DFCE6BD0253A9F42CCA1A3DE7C49D39F1FB313FBC823D21CC2B598BF4D5FA4E -9BFA1E4DE80D12182C38F424C271F8BBCDF82253E448A59719A13E80E3DFB1DC -B0A3E4540043FDED9EC93A66287149B751883044F673492E625F4B09F79236E9 -CD69ABE887FFE13FC076DE57C84023C77673D69E2016A8343DCB2C60CF457A85 -086C8B6602F7F1885E1C21891BA9046E0396707B7E6C28CD4383ACE90D189077 -312C10E3E5E72BD1971148429565D3E87FA4CE5D3ACAF4F8D942CF7D6265E11E -0AE49A2DCC9A25536F272EE9E49779B158A4212F060395EBB011FF00A86070D6 -5B25B9A7028C12B7423F50F7C6B42316DA90A769B9AF0A954AB962CD8889CC11 -41CA39142313F4B953B79261D7F0BFDAD9F07C17E8B82A5E0CEE6CBC357D6E28 -6CDE8C65EF662E95B9E3B86B97DA7FBFEC49766808FBB0A8DC78B81DCB8332D0 -E47303767CC0122F4C7FB3C8749A995E72AB1D31572D4D3F688F685C32171295 -A71B398B524E50C59C64F3E8AC9EE15D7122A3689DCD293D7BE7E7D42E508150 -31A359793D72EC27ED3F367F9777587CAB3BEFE14DC2888E1F43B828618DBD02 -88B10C7EB71DA8818CE5407101D00C4E457E53A2FEC98707F407EA519BF1D45D -9C4184939FDA36445FA204D572FA795D9FF4FB7797D50FD67931007A73FAE4C7 -234A28CAE7EBEA14B545EF35C08FE94D5D75463B8FC02ECEEECB9D65B418F2BE -B7C6AE5C12943265ED0258F9B06E7120A59575F0DFCAA167AC38A306F7C67875 -5A8AC63E125DD07BB43909A3C6DB9D28DB0B89B2C76A007670A22403FD8D47B5 -AF8FFBF331374F803A164A0A52EF5F4380F30BB4D81C892C46A5E75F6B10DC44 -FFD825A545C957EB39F4662A5C313D2A4609E680B46BE4C1F6EE4C0DD44C9DE5 -9B03436297794A81473D9A5E4665420C6A392E98E62258155F63F5F4C43638E5 -60FFA20829DF6056B10D647F1EB2CB956A3208D6BF939A646700958F2E2DEDEE -DA5259D90360BD586FA73F0DC23DDF7640578BBB4F8ED37D19C5AD282DF493E7 -5E1CEE7F172221CB588EB3EFB4C2F1F6889C65EA47242250B28E67C86FD054AA -946335046D1D686849FCC3A6E1E3142BA920303B1B0884648CCC03BA7C288F3F -000304F1BD486DDDA1D6B03E6FC5F8D98A0702ED31E043C40CB6F8FAD751CA59 -EE49D32A26A70D96AC1D18F1FF57F22F0DF11C7A7596AC01814BE9F8569BBEC4 -80072664548BBB66EB0AECD471408284E98A297D15505E8A09A4A18687B0292E -683095D5868329B4D1BC6D44D8ECCE3E0CBE1BE8EEB80BC8CC72DE4B8AE3F4E9 -C946BD645857CFA918545309318A9064DBF3E706909E1BA3B05082CA9BE71186 -99F9E5723FA347879A8DF1B90AA81920F4784CB2B812B0666C5143FA24DB3128 -B6DC3ABA582941AD2D087063F470E120DA9410F8C219CF0FCE60996175F85FE1 -B89BD179F58D75440D7354410B03BD566AE2E5EC520B9E3452A6A71FAFFA5C28 -8AADDB077561CA7429AEB1F6864C06E5707962D4A1993D445A587FC5BC497739 -237635C313B9A65D1A6B53B129439D42C31373AAA8F7D687A4F988D7C82D4C81 -932A09B76C29A27716BCD438D4D08BA2B467FE0E2C3B50E82DC04A4B0E351B26 -2C3D421BA2C7403A5D587C62DAA65899DCDA98BDF2BE0554AEA617CFAA1298BC -1420CDE9EA38C1EA87DCA25E25F6BB1E6279258A96BCFDED6BB2F98BE47354CB -FAA54B69E2E74E8B7D09F7E43E3101CC7133B51159B971D566FF27B6F4EFDB38 -86C3CA1D5F2CD03D0DD7024F6CE4FA5C8F3298F4C3E58F086DD2F7B0DA9CE34C -B0477FC7AD5C1A4ED5B94EA6E145C0FD195736527C9A2727655E134CF5EC08E5 -C0ACC6BBE2D09FD95EFC123A77D1428765CCB7F8A8529205CC4E1EE8AB4BF3BD -66448CAF34110D7A84EAD50BC8D60CB3C37A86DC0045F5F3B87F08ED2D4AE659 -94A75FA7F021997AD683FFF284CDC8A5D2F0AFE9827F6E28BE008EB1F773B7C0 -B161996761142A37673674F1A6B0AF2C5AE6B981FFA447F1C4016CDCFEEE533F -A95296CB5B6D53F76F3F39F01ED4552FB98B24177E385B26B180E6586A63E815 -E45E2FD4C49E9F8E0238CA0701071C2B65580E0477683257F5167F5AA91051D5 -90D70DD37239 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 -08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C -30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF -C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A -BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 -5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D -43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 -374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 -DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 -B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 -63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B -89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A -5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 -C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 -7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B -EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 -4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 -7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 -30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 -2E080C10DE923C18AF86D75FCFFAAC63768D4F985185710865FA3225EF531068 -487FB30531B1C2A4B4AB83F8C1494E6D72B1F6A012E10A2A4ED6658E5B081DCA -1A3FA683903F4354E3F6808212A7B2765AE1F7BFBA912B153A0C7051A50BC080 -C9DFC891A623F1F8EC6223CB3B1F2F7CA0C0E1922A3BD031801B31F970493F3A -9954C467A04D1D826C9C17155D6D441F123FA232B0908F15EFD9BDB4B8D53E0D -0ABD89C56213BB393753AA61EA26272566D164A8BCCD6331AA9F20393FEBF998 -E8EE3A54FB522C5ED971A45428116679B75E438CD522CE02F372141B456394F1 -D3D9B8B226AD7911D9B71F419E6B4EA2680F41EF3835715528C2338652222CF5 -07EB1831C27272592E0D7FE16F87710F2C50AB7C4F10626F7203D68FF23CC4D7 -B81B3922914942AC520B3183603EF0198C0A10957302E97A907F8CA7D499B85D -1F849566DA34D8690ADE3A4DAF7A97E1BF2C2CC784F97F4313DD69F9F06255E4 -B15E5FF86E48FC4644A59BD7D396B64EC5DB796D909A75711742C6706229DD25 -D775B208B14D7E2C129AB980CF9359AE105504F77BFB4ACE3649995C8C5234F9 -0D312AD195458F9F751C62901AB81EADB1762D31C769D55E9FCDC64A7EE3C59A -A13401859F5EF336EDF438E85B8E7E0EE5127B59ADED11E4075657A5E7111067 -50243C97F57BB93CE988C547F4370BFCB852D4571A3F24D0DDD387F8C366F031 -1C8188B7502BBF0DE92C5E1A2425ECF70E4F8CFF80E60680903871D565CB9B73 -12AAF237EECF3F6A4DB19FAE884D02436B2A4CFAA75B7C0787AC2C4FFE2A0CEA -522EA455BB048CAD8C89A42361C81475EEB3C2AD1C4104C3CAB9E94C1C932A40 -6B6A582FB7CB0C7776630D3266665A275A9AA25939B6ECD5EDB28A301EA5C475 -C9BF1E6A1841D887358166BD353C506BC26D813DDF90271698E84BFFD2D71FE6 -39F6BCDFD90D5127F385BFD9C0588CB64A2D6EC213FC46DD481B990F022F42DB -7CCBA22C48489FAF12E89524E9990C5BB71D6A8DBECDB453D4D85D3BD7BBF72F -33D40A451DED6AA8AC14A6AEA2E0C2B300F96DF9E94ED2CE865224C5E8DFDE38 -BCF426323F00E47B62726021CE7991089BA2327C8356C32267EBA52AD586CF82 -E9A7B46857CCF56CA461B902183012FDF684C649F656CFC2284B5B7C315FAECC -AB4E9F43EBBB945DB6E0EFD7ED536D672830F7B588592504BA5D9AC1DCFAA3E6 -94DDB28C5BDDCF3B88C6AF36DA732C2F8128AC6C6363D2AC2D62912F5736DF85 -20F2F403D712BD25932EFDD1158AD393676F41CA17F624619FC8D45F6A3A7754 -5ED156AD3BB137B036E5ABC5638260E6EEA46372771AFE123F331B4C9B2CEDB2 -C3F2196245EA2C5CC76800F336259FC8BEF686AEB4F3B1EC48BD2BF903985988 -5554AE3D7D810E2C12A6667BBB93F5CFDB223D1594E37D680CF0EC6A49F2F13B -590B9376A0597EAE084EC0742B17C52D0214E634764CBC2289B072A7D7BF7E42 -E21F3F33DBB9B3F0DBEE1D9B4830F3893A80A6374ECD4A265D13C2950BFD73F9 -ED3867FD35A5156DA284BDD6D0540FE242E72EB708480240F876C66739EB8500 -1285AC4CCB214850B45FBE616160EF568F3F7E2A905D3D7B97B04429DC4E6E3A -0CDB03A0238DA527F0E53F72ACA15149AA4BC4245B13BD2458B46C286C8FB1AF -F2B8536B90A608E857B522230D32CFBD0677650DF1F48E419634A288D5120D87 -AF8648593973A460DF22B9DAB20966754EBA97A8ACA98C1F95C6C2B74E390536 -3FD20B0AADE98306888F17B41822B5FB6C7C0A9E6D7B2F6B4AC4387A645F6620 -0A24144292CF6DC22C80CC7CB653D804A33025DCD98D2856ACFBF6B5004205D6 -1AB0AA4C3AA1701897501C53291787DF77700F153E3F3FE9AF8CF7C27D371B74 -DCE77974D266CD81CCAEFF573083BCD7FBDCF9030D08D9A903D4F302471D08EB -7A4C9A356821D436F9D612FD574ECD6FE5CAB70A1E732538BE79F53AA7FBD568 -F6CC89149DB8BB9B7427E8894DA272513251336D74D7FCB5D8B7F895667DE628 -7888E5E1EE45019B86966913C5C81ED6531649E4AC3277AF8732D51B1A0F26D3 -30DE8E8F8575F1D13348F08D76EB61275C5BC636A81A462A65E23D56C5487157 -68693587B3505F4FCE2AFEDA2E10BD7461C276BBA43DEC9271AB4F814915414F -F7537E32A5A53B636754F1DA3F3E14DE5D18D7D57332C2F83E70D9D39450FADF -A6D705C4A394E0DF31BD26C1130700579B61E2FC30A10ABB11098EE70506C68A -1A1B03AEE61C841063A9ACF4A64B44B1168527B7DA12A00DECC26E9122384782 -6A8D34002A244F5BFE9D26A9ECECFDB475FFF537351BB0CF5400814B3B0083E4 -6C83B60EBE0C106125A5D95CA52857847E7E3EBF983FC00F2026E51BDD81D015 -09DF78C69D2D842009E05CBD4CBC40E1B52929E73F01922E8416C3A8DCE65673 -06D8BC8A6F08C4AF791D0154666D7945CC0904247399C216752EF57113DA6AFB -86463D3E5820EF7F73B6459E160BD79B509BCFD02E6346F42A69B43ACCF56334 -71B053140539FDC4F1DA19CAF0691D6F81C21BAFC0B173FE185FA352E7DB9008 -AAB5F0E00BF6DB69CFAF548F51DCED2B737949C20CEDCB5A2DEB72A9BCE98B24 -3610D1CB43A1368044F7DB21215BB899AB3BD138D0DEA278F27FF808F37CE15B -E3976C5A54C69D54EA7D5BB5E9785D8064C44DC4BDDA4F4B8B1AB4450C6468B1 -B2BEF80BE3329BDC0AD7D12F53C4AF12E248CAD37C709982DD1C256AC8B548EF -9B2CECA35089376E92731458C5BC0DE099F17950D6F04522093D2B7BB5ACFBD3 -993A0D4254A9C70820A5D894035A8850E449DE7ED7912273F19BAE6244EC1EF4 -AC66BAF2950ACD6714252DB1A0DBB64FEB0E65F32DC52F541219D73EBB3B66B8 -A2CFCC124B4710CA9F0D734057E658040A42D1724E5F6E3DFCD83DE7BAD51FCC -B70D8025C343242D7176F5D733DF6D439A33DA3834CAD95DC7C992FA6797F572 -FEE1DA81A9DB18F47C780F06AD6CEC736305AA41F8BA41A0F1153E8283BD1E17 -FCD9C2AA203F3835C9328FEF20459E58C595745F872DE784E8547AC485531D81 -EB2636D7D630F28D83B9F0A77CC9CA5DD2FFDACA4B178D961D08D2A18FF05D0C -0F7CEAE2CA6DB6E11D0CD966E496B2D234F253AE97DABD9F55220EBF886B6DA0 -D60108BCC2AFE066BCBF51E69514EDF5528ADF86CC9534A6BDE291D6BEFA20A7 -F293FBFFA1C0F4A37F92C064D5F3B0623575D1002C6F70CAD0608A67E2840827 -4E9E45AE544ECD99B9DC909BEC3A45C8279A3A971BB17870FF93BD3C1ED35D3D -E11F99DCEDB6FFF77FEC6DE3734B3607D4D49DB7DBFEA7E3BD4E9906B7F99FBC -55309B394046AD63F2E59D568113C109D9CF04DCD2B1B0C15F71763F6C531B2C -83B7E96E0DB04952A9241E71B75DBA88C19109C4ABD60FF7DE9B23E991F14A63 -8827593DBB7E248992E302D6C4AB51B665FA7F66520D67F15E9A221324AF89AE -8C67B418D06A6B4B6128B149F8069DF7CBE3DA963B110442724A9E16BA691D72 -F3613865CB566D7B3B22F19292C7F39F70BA29D9EBA147B0A72D4F7FB6D07944 -33721F94B04FF9507E82DB7C2E5682A2441610C70D9D8672F3F31ACD9BB583A9 -D1585B5D2D5229A1C99F8CCD16B6CA6C1AD5FCB0254D64EBCC72867CE6C9EEDF -BDC5538AB3E02C835C2A135D8712307A338880EA270661CFB8E03EC3944D8247 -2CF9CD961C3C0B6CF8FDD8C3AADF769FD19E357142C793D0FBC6D5CBD69D9ECA -AE8A3F266932466EEE0DD3D32E9913BF8699F2014D1442DC5BF61A3449A6D366 -1B7F4AF08B5DF7072048C4A2DB7E527259AD046C2AC08A202D3741801C6768E9 -3465CAF7CFD73C50C019C7E60C14510FDC51832DDA6FFE385A596F69CCD153D5 -3AB08D09BD5C3AB6BB5908E460921921281F8CF6700E66BFAE45F547DA7E109A -2526164AD366CCE796A18E73DDC09F0E0E3B480D27E2049661E435564020935C -EBDF2079886FEEA8B84226936A59F4419F4D10045509C17A8602AFD588080586 -ADDCC0B401D1600247CC2C9A482482883192A4EACD89D3E37D475B7067275175 -399CB330DA1B148686CBF57D8A8EB10AE7DEBBF437EDF24E2ED1968F0C03B91E -45EA897ACD82550C2316D49017655061D0D92A21FE8B23B23A895CE16DC9528C -7624F3D349982CCE20ED8DF66446742B1DA0945D87BDE9905865BE3CE8A7B41F -03066CFE9FE10C2A84751CBADBED2BD074450E130548D58A07FD4119160A081E -987F4CF71B68DFE39A6DB5562E6368ED7D2A67165EB605E4F7B50073B822C7BB -5568F8434880D1835090D0F0737B0726E661623A2971F6AFB2BA86C82051F794 -1035D35D34FE0071AA2BFC13ADEF981B63BF6F647422A2DDDFEB9900FFA8DB91 -06A08010A9428D1C52CB2636BEF03605BA3F148851CA6262B4963BABBD015FEE -2A6F888BC9D19917C5DE5F730725D03E95B951B2DB240A74883123D40CD2788E -3F22D9F517664D4E20AECA03AD05F6481176E37B5E68383D070A9EE5CD5578F6 -713F5720EE1BDBC20242BAE097C55605A9BE333FC2A67DEF096A6EF03723D702 -562A8031828B4A22B06C4B31626BAA2E90DB509E1FEBD522F2F288FA4075873E -2C2769DF4942DF150032010767DA0984A2EA10FFC05D5AFFC654C16B4EDC812D -EB8DA97B59B28583D7C7C5981A704B25886EA32D2094006AD52CE372D211A51D -D34E86C0ACCB53966B3E4BA9793DABF6E0AEF06757BB30C141982E55017DB1F2 -A9A0BF2751B1C03E276690146B5A6D5A664D74D597EE88545DC5132C61ED4EDB -51B4743C6C9777CBF428C4FEEBDA8D860D33121DECA25792BA03125B3A8BCB82 -8D33D87B5F0AF0DDB979A79240BE8B99285E8CA00D80570457BA6154B711D5F4 -613F0F48C6778264C938B08BDC0416510D0A17684593996690B86A4F5FF2438A -1377231FF3B1E27E279BF7CEE12DA82B6E7C45B86CC5EB311211BF7AE6B51A51 -F84E990B2405C9EE8F9F3490008B9E6977B1820A13FA829507D9C6B9B1CB5EF7 -BDC181FDEE7C1A8E48B48BE985A036B153A6A486084B82AD3E72F919BBC149AB -FD4346DDE9C577315A7A8C498BEA3C5C4744B9E35BCC7449F98568794D9E4F8C -F1A6FC967F6EFDBDE2D3BA012F12771843637DBC36CD96DCFD211A702E316152 -E9B7A792F94C50DB2CEF650588CF1BD3A612227B09BE1FCC99EEA4DB9266001D -DE800C3DFCF92F1BC2CECAFEBD6E0FFF8CFB71D644CBD75EDE2470B25DBF4382 -183DFCF9AE2B6E9DE049E17FD7CB5D5E75F69D2A5E1B456AED863F862AEFACF0 -B9A18BA25125934D99E1D68832376640271D9BF3BDE78191C286A1EA5EB52684 -3EB6EC3D1DCF031584113B0EC8BFD77A85969C11032745A8138F0C0E46ECE1B8 -A14D8FAAA919955A7D476E956DD11556EBBF0A093B5493E631BFB38DAC211615 -EDE56ADEBD3EDF75BD1BD87A90F273D4D0E221A1458552A0414A82FA53239798 -85BAE93A73DFA0C78B10F726E3D8DF94BBFA3FBC98817851DD701C778EEE1557 -26499A30C842BC1A194A764F995AA7043F7F91065A2380C846393C7CA6B9274B -B15C45F7FC74D449769F20A7C57049AA4925158DFDB916872120333C998C496F -73731B7B055F642EFE27DABE4C3A9411929F78C4AD869FA00E6CB649AD915206 -138C6EDD92F116E34EEC551E7ED1279C454F41E815484AEA44E5CCE017269AB2 -6430C6C3EB0589A247C163315DEE3BD11525FBE7F17490306CD1D9E68F574AA6 -37A1459E4C44F1B7963A7726357F42CBB30E5C2C4558EDB9A5BC066CEE26F18C -63C0B37113A4481EF346C46EB5160CDFA6F8CABA14422FDBAD2C21E91F697CBD -A2E38CC8E4B64A00E4A4A046EB1C10310EFC9249DB8303FF599CBA910DE000C7 -5BF7229CF4F475198971421DF4C7D0BF565537497E3E701E7DAFB766E722FEDE -3EFBCA1D24776F14E988CF494CBF99B58CAE07BE36D678305AA742A4622EF268 -5F44347F7312730FFE21993C15E15188DBA3B137B997B7F0DBB323CE9B244ED5 -3409C50DE3F798AE64B703C8160BB009B40A05A6173240FDE6C9B01476D20E83 -3F9108DAA1AB3BAC0EAE04549DB2F8A7AC7FA78FA81A448F6549596BF6667947 -48326A07281D2EE40BAA1252C79FEABD510D72D53F45CF25BF7BE5858926A465 -C71CCA6927EFB422B8C23C0BD6FEFEB66FA1375B0B8C772CEE1C7C72D6DDD5F5 -7702E88ED8BA354A889A171C1304106BB08012428B5A792F9C94B8C43B6F2090 -37CDB8793C95F2310222BFCC7E1A66AF164D524F49D54A206A2E31AFD481F751 -CB4981B6916D0C624657909761348FA49DFECB3E40C22B3768D1949126EED61F -6336803CE8329861202E2E44BDA2000286C2BD8E915CF155E27D22C53453FFF8 -46B15E1A6FB0B360BF3CEF320293A0CAE1F37A9C1123EC78B94999D8DAF0CC4C -A69F129B1206A0CD5CE5C4C3F701B335C2CE6372A8A2E6E07A5D95C10E8D1E1A -FFC85AB9D4D3E5A956E8116D3732001F444BBF29C59AD4BACA82D0BF6C143FCB -E9898A6596FB71747723DA5E1F3BDD041238FBF91DDABC81CA4FC9CBFF5DE5F4 -058710E5246B8469EC1B97965D2E809DAAEEEA9DA2DAFC83672989E2A798FDC3 -A731DC25D33BA638C90CFC36250AB855E25F873981C1C134DE9E40F45CFBE0AE -1656638D45537D94ABA65A99A66AECEC7854514DB7D2EF752B0265A0EA1E503F -125B18BE0E1F2537F4B98DCBAA19F820088AA18752C806B74FF9E65E3F2F66C6 -ABA7B44EC7729000A951C5D470B0FDDE2D774F82D34E766069C3D242AAFCE6ED -1E68D95FA3E18770A99040289DF75F4604CB036A67AE7D158D0A07FBBA7B64F6 -6B1F750191AC9F2291A2439DD398434D84F91C4D0ED3B457E53C7B5D8E730716 -6DB507367FC947C7DFF700504E7B5001FB683ED86B75D7326E16F40ECF8ED7E0 -76ED443BEC5337DC2A776776A0C266670378E9134EB595AE449D0D48F9BCAD81 -7147F6B3203DFD0A38227376F0696D0ADEC9BC7F06B66DFD8116FD51982019BB -F463F6BE6563D173085A1C2A777621801FFC3220F459C77BD1302C1F6BD834B3 -742FDB9BCFB1342931DDE4CF94CD2E9F7A443A67268232853803BF62913B5BD0 -0AD7F4AEF1BBBF89961BA4282D227B1969050802DBC9A788C00E1580C4FA9A71 -ACEA2700E5A71D327345FD65F329177BF2BC1CB7111C6B46ACC4F5795B0C9AA1 -34B39915FB16EF49BCC0F3D2DA4D33F7EDD1E5707B0FF5DAAC677D2DE279A7BF -D034EF78D146789A2D4BD929F59CD9F208236D6FD4895BCEB920A2316B520B28 -87EAC2F6889F9B53103BC5B959444884CA28D37738298600CACB58C5ABE97F0D -D49C2C684A46B04D628A28D519BF0917E1A691921A227403D4D0C219F33CD495 -E15C5720BB584D770343520D00C15BE696642AE43B035737E29C4356BEC12269 -5B3E6D14F37011DA04B724299159BB62AE708644099CD6EB298CA66D1C0DE25E -BB2D83615F3EE99542F0C6C82C9106F9E8284828353D5DBB4B525781F288E9EE -C208F9355958794D41EB1350FFB308094A68C09F2E2F8CBC77385B7337A4DB71 -A37149024FCDFD6DA887243F71F48101B70665F850BA7F733EF90407BBA8CF8C -52ECA8D93406BC12800CF57F1DC12B355A10483AE4ECE41F9EEA5840672423E2 -1D75F2306012063AF3CE75677BCAF8F048756C3D3170E256C2F863BD1E0B78E8 -6ABB9F135BD4F0EA2216B631A392B2A0064CF9166FC9A73EB7142440821029EC -A31BD024C4262BA37BFA3FC5527772604547E09EAD0B23B7CA97FF613B340347 -D7233CEE647221C363F0F534D934CD179DE2BEA2A508DFD1313BA51136C7944B -7253C1AFF379611C58D41EF51EF55297129294D9FC25F593E2092E83F4346A2C -2A5E7FD1AC5823E2FDA0222D4FB31B16CA235005530012EF7DF63A7E1AC6AD24 -0629EBA16DB9943399C88201C10DA43C158D5CEF40821F3C7474846DC44A2803 -321F258F5D553D03F5B171A722CBCE7AFD8FE2F4E29B0FCF35EBF0D5ACC1A7C1 -E25934498D044430F545111A7E371F7E3A521661A47B9D525D81350305653D33 -C35E4231BC182DB7C5E9E3FBFA93D6F29C6A714F2E8D7FF27518245F05B13FE7 -12D77D9677E551F80A65F0D058BAC7E0036BEB3DCB6425D19D9AE6347C0F008D -177F55FE1D89D4FE6ADD4CE00084B944E8F249B421D3D2778198A5AE996DCFE4 -F6BDAD4D1581BC25BCC621C07DA2C8027DBD0211E975F80A0FC73D42C1FA335F -96573E9C69F023200B0FD6CE61797A88DCAE042B4C82CB3CF74309A392DEB8CF -0054009E777DF45B649ABD9E549E61D66439A66FDE06CAA712EAE20EA2233E05 -D4BFC80600F8E1C4EA899874CD019D4E514CF8945E022B3F0288F7C89BD9B32B -F683AA7BE2EDFF16C851A82CA15DC2E9A9FCC3297FFF9117522BD9741201BA93 -F471535EED70599310B05569A4241755A25D080F99F1704321708C6A4AEB60D0 -70AACAEF1675C67086021CCC3AD12979280F8999CCA21DD006462C83B88E98C9 -C785171F08636A58004A2609F4B6E58719215DF7EEABE2E9E2A33D7E38E4036A -A48FB0EE221C10668B482E9422BF3753ADB09FEAE829E35FC8004958C576AE86 -FAF18B1BC2B15E15955661E262D6D7190744DB9105151F2DF569DF2FA2153377 -0D5B1DC947C08EB11951D5CBFB941F1892F2AD72AB54333468C0B5967A1BE22D -2CF668465ED282FD7B3826D0BFCBE569D543EA0BC146865AB50FBE4A4800E8E3 -3E86A443F3D786BDE8FB2FB0313D8623E7895E1FE1EF78835444269AC3B55AC3 -352D7946E6032A32A86DE3F7E315AA09DB7D677EAB2B327C9A63F8FE89603707 -EFE8704ADB66CA6FAF412EB99AFE47C73CCFE17A6C6CD994E542EA044FD48A8C -84D4EA0BC1CE5C2F997232869F0F2A3D206DCB6DAFA49ACCEDDECBC380C73592 -FD44AFBEE9392DC921CC31E8F9181AE15DCFDAD134346E25492BAB25AD450EF4 -BA0FC540E9A26744147BDD9D187B6C1CE6768086894C05017B5A70629C3F24E4 -CADB7D762E9B4168F5340D10DA9EA293889BE0590FB91EFBFE73D51348E505B9 -37A517756A19D1C720566407306BD1A97144C6FB8A9F50386D09321399C0A8B7 -BA893A54C2F514984ED7D95F3F555862A60A6A02881EECF007A59FD8BC7A05F6 -55064C5FE3EF5BA371413125EB92025F144AF939965FF75A59D9D2E154261A5A -2FA9BA49716889B4202149988B1BF84F64AFE278E079C06F6E177AD07011A258 -FEF05A860299FDCA8AF7D6264C4881601C1E30B29A82CFC7C6D4AAB7883210EC -2E9C5E1A1F4340CF1419E015B09B5F7E26024B40383F710C534D721C74C2D5F2 -FCBE7B48928C31D2086D769646222FC2C382C72404BB3C5461D55004B27180E8 -E82BD7C3CC78C6F220798058F15776288493570D177E250005449A6E0310957E -F45B7D859026A071FFFFEA238915639A98B5C79FB693C37F43E4838FA8E4A8C9 -7F5EDE1DC63014DC81F7620C8A2119E8E5828B8D175FF91B87FE1F68DC817E91 -FF01989160665315034669B45A59BFC2F6E17D151476058FC8B4F0E2E2018ABA -053085E4B95E8674E9738AE36295FC923D8F058ECA7467736609B738806DA807 -847D2F92D02E0597BBB24B0F28D6BA9D281B0635079662ACDE0293BBB8698B58 -A80F23EAA8BFC44262F260D932223131B47F3D94218CFB21DAC1908B6A31AC7E -FAABBC90A3C3C3394D86ADF67D227D8CEE1876B2E343923017B1703635D3AE9E -9DB6DC06E52745795255065A5321D22CDC5EC2B2B9F824C23E409B8ECC6B4490 -3D0EA2CC23BCB3CA8A60958541695F97F2D940223BA42C3B49844B628225ADCA -6930D5783B6FA6EC5E472BA243C0FFA71AA738825EE334975A364548853F824F -9D5149EB346E8F2D074F4715B29764F114AC0DD2B777C170AF827B157D02C2CF -199D61FB4566D74CF4FC7B31CF5D3C2353117E7B39233E4B84B98C4535FFAD79 -8FE8593B490B484EC730B9CA552A45388103E8AAFE7E62A86C8B24A642C8BAD3 -C9919FA9619CB718AACCCB0F07945D336BA8CC7478DE959DD738441DEC374E9F -79D2B328211873D480E5CD0ACD94AE8F57FF0E0E3B235FEB865F680A0C817A16 -7D795B8ED5CD3B5EBCBCF748DB6BC52BEFF719714E9B93C5A0800E380542DB76 -4B12A2580D76CF3996B61FCE2C5C34D06487FF1595628E977D3EBC395C6BEE24 -5EFF7388468EE52154F1030AE786DFAE691564EFDD81BF390B9DDCF1F84BC16F -DB2E2BC4ECF193352B3C6B4BE06025BC43D0A97856D66661B80C460FA48BCB8A -F7E7BE633E1CC52EDE7EF01258A3693D8746574B0AEC82A2618856B0B5CA131E -B6D624ACE129E935D8C3674715D542AF4F0084B0D7C993E2B0691BB1FEFBB735 -0C0802658BF289C32EFD28BA582941B6552ABD8E03A4651AAA797475898BF848 -01BE7FEDF3CCBD26C235BC02C6F907DBD964ADDFCD1A5B0FCD45FBCD6AA6D940 -6B955CD5DCE4CFED6DE9AED7019A44EEEE1D64771F934A56C18BD5714E1E6CE8 -A39CA252042D8174B1CC1A93810BE59DD9F203A7D9075FB74FDB5CAD7B12C1D6 -1475E3C78D29D96D84030F5175074C436415A1E6AD9FA26E4C3F9C9F318AEA82 -E98B6B507FE1FCEB57E57FA712DC259C43A1121685948BFE52398DEB4E472CFF -C09DC6C20B0D6415BBD93B3F5FA82C03B7F3E7268F9C1CD8F8A7214FD78AC592 -8391A6FB967ABD42A63ADA78B700FCFC4817C4ACE54D8EE4FEB20490B5667469 -3B105470A08E956A71389CAFBF2E96AB9D445AAC58F5597990B0FB65A8306355 -37921A387625F7BF046E9D4D11A18F6FF8E664FC1326E9AD1E4E7696D17A4AE3 -F2767EEF4968983FB8DFD7F731D2065593488D21D2CE61DD0F106E0CA36C7616 -376464D5847B3CAF77B257C6A3D6805C154EB81B614E9DE2D314E8664F3F2928 -7DBBBE43A95B071CF577FC1D4700514C0FA042ED08AA4FEEBCECC59B730A686A -75072DBE884EECB3B6056A56A7EFF016290E52CD4E6926D0E631D454AA21CDB1 -9B355ADD5AF08D01F58A0EBF61D137CA9DEEDD270DB62FE952B457D65AE2A9F7 -70BD2AFCAF5F02F24B3B1AB9A257137CE6AD6C8415BFFDD7EF318EDA8F16C04B -92F3BFFCE429051D035726DDBB9BE7560BD44294D6B5AB3D2D470563F9221728 -25327CE19D7E770536AFA9806E0AE707BAE02B2F1D86D102EFE83389CE027FF4 -432C4117D6C8D253C17B49871015CBA55BD6046119D7A956693B2F32A4DBD2C5 -7501EF1C8A277A4FD42347F07CDFD37EC54FA6AFB26742671D66EB4A746DBE28 -791B6E63C25111FEA59E1A0F239A2E041148E2773A491E01DB47D67611F40C4B -3C862975C0A379DA1D15EF87A840008E02305455E6E13847 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR8 -%!PS-AdobeFont-1.1: CMR8 1.0 -%%CreationDate: 1991 Aug 20 16:39:40 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-36 -250 1070 750}readonly def -/UniqueID 5000791 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 -48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 -9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB -0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB -8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F -EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 -FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 -9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 -D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 -9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 -ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 -10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 -83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 -2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29 -044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49 -A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0 -23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413 -19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42 -1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39 -8BF6B05F0B97F8FDED86BDA32D9EE6204BEE321529D58F28F7A9B3D04A4469E2 -775A8B43DF5350CA25E95F1794CEA94B99AA02F3498C608E6277595DFEC6CC7C -965B69856CB2AFCAA52F66F5A019C999A1C79906EADED8AB0A185F84F5FC544F -B289E583A8AB4726F9538F4DDEA903CC1E623DC5EC25CD02353A4C9A63CCB7B3 -483A481AD7220714EED8EA179FD74724C7D1F7032527E25A43FB59367B10F3F9 -4BC23E2AD9F5744EB954C8A0086C0ED51450A8EE7DCA2BC27081C4F49FEFCFC0 -DE75DFA3E620747E85ED0F66EC590FE6CE40D08497B52B89FDD0EF6B1D4C0A8E -FB12E7A909CA56C9A44DAE837CFB4515412DA996C9E3A430D48B20671F04448C -51A14CB5E9B2565D33A0C0992D9456F3272776BAB972E4AD37CD9538F78BE951 -9A5898C0E3F68EBE589967254EC4E10B6010E386ECF44C742D37C64502DCB250 -E9CCD2AF341A18836489360B950DAB980CB0621155E647B6DE953A6DB1AF51B1 -31375114FB8E6AC909DF17A7362DA2ADAB0DF9ABF040426957B6264BA0DF2B48 -1AEAD8B9068A3E5A4D85166392CD12ED01738931E5683E83EE999C08C54AD19D -FAE794A00EDFFB4F430DFF757CC2163DE77D79C3F0ECDF5D42A1B079729E276B -DC2691D6B29EB3C37824D4A5C7A452C10C98E38FBD2437BB29CB8964ECB475F1 -3DF9D1EC2F4723CFC914DF067470AB81C22F69FF0A615F693C0BF7084FF67DE4 -741E765B47E222EFEF6DDCBCC5BB5EA3FE507959AA9CA4FF0CEB615938095738 -AE8107FB11FD1C35A85721CAF2FF491E90F4F15B4A8F8CBD72EAC28909FBD231 -B0A45D94469D2C03CC351E5C4127CD2334F94A1EE91FAF19DFAD50D49DDCA165 -1CC936EAC431720FEEEC3184C1578EC4E9C6084EF6C6A30A327A455DE14E72F2 -0ADF4A1DC4232577BA25B75DAFA460FC1E018DF361AA3A8874EB6B445F973459 -83E3C1D441BCF8A100C22DD2B94DF2E3EB57C2C792A2C789137911DC67926D62 -2848C29EC41A771243F46D48FC17133E004F9DA9202364E74773A22999E03437 -1D34277B9724E78020DFE394298E990132C6647546B2F95CC2B336C40A335EAE -85E5CE36670AA9E28C37E43AE4D5CDBE11352105A1A23B2B781A88EAE094B83F -D9FA26C3F500B5BA7E08758777F11A110679044B09CE57B64D1EA9BD4BCB4E71 -E15E27D15A83FC12ACE44971B199C9ECF06F20DBF062B6654DC6E15DAAED262B -D645A7B0B9F6A4159201A1650DDD4F74EC78F5EC876A1F58F351BD3AAD7C46B9 -076F73EC8972CE1DA144C78E629FA13B34AF57913B2101A4A236DDF2FCFF1834 -1C24D8360B9D8A24CE3AD889967CDE59D26511EE57B2C06F05AA04788E1231E2 -854E0A2EE1A5CC34B44547D9EBF87FBC6D1B9E0E5C0323D1BC82EE7358F247FF -6EC3C4F7817F405F91B5AA3FAD663BA2F7E28FC7B50427449B942D0A3820D2C1 -A10EBEBAB909EC5072E37106156859B98B0EAFAEFB8E13A4EB6A1E004B525C69 -DDE72B04661C425A7E03FE440008695D45934CB6192B6A30A5CA8A3FC61D1EA1 -CC2E1F17EA42F6A562E063C2E66B90189D123E6570A485D5019BEABD9C39F639 -6601DA48143C88488B0484E823A382172B3133384336F5369928B5161B7AE927 -710CB575FD233FC0908DC203D3B9A8ADAA0F454054BD29B037F3FBE0AB0F5A50 -A3B80660E06E62CB7306FE8612909E8DF7A1CB7B39B77524CC7472B3964C7C21 -7F59E69BEB0EFB64AD1F79C38D246CB63F61BB31DAA2BCCEAFBC1F418F2B6DF0 -292B5F8A4763BD8BBAD841D0A08D3145064510D427C5978470067ED239D81F6B -0A10477AC233C934CEA58FA051E7F1D915CCA135A0658BA7736574DEE0887216 -CA99343D134715DBD2A5C46B3BD995A4B106DFE5A24347DFE38A14CBBAE8DBF4 -F8B7F782BA8FC181C3F8FB1DEC2C706D7DCCCD97EE254FAE1A9FC6B2466C04AF -626E2A59C8B4E96FFF0DDA9872209084296276E54C5E8BB93E043BD9C9A36AED -2C3E82BCBECEEB0C2DE7356F71235D9CF94EFDD4098B0DA80ADEC47ADA99A946 -B79DCE7274C6DC92757550B7FBF608886D3196206A3ACAAC643395C000541E5D -19C9EBC62BE7AF3F3F81BBCB0476BE81B2083E8802DF643E0E4A8C873D17BDA3 -76141A6F8C990869A3DCD7AB7F46C701DC92ABDF4AD9F38F01D2005415C1BADA -9832C0888E5926C5344B85F4830C17FC928A585CC745DC25A7CEF3B4D41C6680 -219EAF65CADA5524F5FB1F09343CC28AED8FB7A164C25F9CC5E8FC6180D08D88 -509A93BF0AC28ABF2B9C27D5707C4F0188E843E3E8DC73A58D74B4D88525F699 -5B98C71A6982D6DBB65B105B2D6E65E8171D915D8A1BBD89BB160C96F478D61C -EC0FBEEB9AF29705CCD13061097953825DA7354112DD72F1AAF30EBF508A5A02 -6C7680AC7583974BF6A82F4AB9F35260EACEC1C9036C12C88B28B3C2467E4FDD -A22FF5FE59355DD4BFD849B5AC6C9F52DC51A3B8A4CD1AA7491E785B0DF81C1E -33B610B2F1B3595C0D82B86789D548A92C20F5177B17C35A961F858D7DF0CE07 -CF9A957E2FE826F2C6ACE69A2082EEFD86D932C9C3574160AF7784CFA05C1EB1 -A881D7AFEB71668F1DEDA3F8055640E7CB2E7DD23139FDD37373FC6DFEA85C22 -B59330D72D6331B8A1D28A9B3D2172A177AE5CF0D22D28A1911F9F3FA700D355 -F84230610E2B79A735889C5CC591347AC17F9E65C03C0A1CDA2CEF75CF01D6C7 -C6D5F727258F499B09B0A042A97F7ACDDD7B188A5B917E3D7E7A411A0AC84F59 -B96A7DC581B81019168C31F7E5F6EB8211F1F44B785391D41E89565385D15D9F -66FB6986A66B2460B4C8229E244A322ED81FEBCA8E2827E4A5E54236E33A788D -0A06625F92AA6347A73A477A6A37292BDBF2DF42D5FDB1027DCBC8E481147AB3 -7779E5EF008A67808490E7904DFC740E38BC185CF0C8F0C9002606D31764AE5D -FC5F6E9C330D43ECA95380B988084074E8C268FDFA357F7045B7603DFFC5B0BD -01B257B0A754A14A565FA0D8C89CF7C4C9FB69445ACF7ABEDBEEC24C87E89889 -61DAF3144291D4A8E7ABB3CA95F9E89AE84649419A20ACFE872E8BF81C523626 -6CC14EDFE5565FA25E65290EC272E2DCE660A916D60C07C4C9CFBF539C7B5497 -C55F8FA22CC53374F6E07374A73B0F6F68FC0376703B6E73B319312448DD1CB1 -962E16A84A3873A322E7B3C737B42E18D53B02BE9EDB07D21663D0ED6443538A -276EC167D6DE7B94625C6254FB5555DA81B5D6CC92191D15C002F813A73E19A4 -A7C63106EB5C5EA7BD9E1FF3D4C3BFB6265C48AB48CC4A3FBA55B0D2D8795D55 -484F3E387BB56602B8C2EC4D04A8E123AD02422D1FA04809A7F2884957E9DAD7 -EDE67F91D63FD0D73D89D9BB9126B5DF3C1C09CFC81A7C60CF6463ABA6197D2E -CC1E8339E2F5A26569838E66E7024DE8BF50BFFA3F1E6A923D363DAFE4751B48 -D5ED2CD68C5C8F248CA0C0A9B9CE506BE17B4044FE73003395274498928E081C -450385B2F2D9FBF91871109F137E52CCA8035C9B30D3419901F342AAB26F874E -449F214DD406C210DCC35EA89E6A0397E5AB4725586EA12B8C10F41D292F9140 -115A57DFF19496AD04C0D9A640F7AA25E9E22A05B23C7A6FBCC115E3DAC7A34E -BCE9EC19AE54BCA3A7FEA7AA0C23B24870FBCD9BB15AB17F7002CC33ECD6F0EC -4D43607C98126E7FF7A59EA187F3DEF3B6B1A174926B2D0CED8159B3741C0F67 -A16AACD009847CAFAD44B338D2A4F3148D6CA437A8F7709AB4D29EFC4A37C256 -5A3A52282ED1B5114C14045D2A3806C8A7DB6854EF7E158DB4CD6C4F84A46047 -098F6158763C0049A17CFADB12AA198B74E7AB62805556BD9DB8424A1037136B -5AE30853446E67EE01770DC8153A906FC71DE0D8C85B86DDD62E6951B77E1709 -900338A3CB40515E0636185392979B2BE52FEAC763930A99019C675FBFB94041 -DC09D119540CE689EF7C3ABA5D62573F6E4559B44F3F8AE1C3D04540525A10F6 -501588CF0897D767C84E00896EE7CEF9FE832E772AFEAC08B1700F8F54056E19 -F05D44DA94063E497FA35C720A6EEBB2156BC1D91E68101C366AA5BC68CDC2BF -90CB15EB12AE0F234B370EFC0B4A23C4E503EAF5529A032838C87F51FA806214 -41BF8EDBF22C89F8905D4C8F7260B2269180C6E3127ED31ABD878D74EA7BDE87 -F597D440AE923A58AB02D27E349CA7CC043B946D89D81C8AE4264863989AB2AE -5061880897F46E6CF9519548AC8A01431C746C482F4B4C6166788D372CE9C997 -E233DF9597857AF04E493EAFCE780FD229D04F4FA02CE51ACF4BD4CE1917F19D -12C4B25B1A3575F0B41317EEA24DE1BEFDB1BC3AFD5F61E512238726E8E3A31A -8B2F3BE79948C8B1B6CA815AEFE34B90DB93B7282C775D1FE88632A41B4FCBD2 -A05A9A04968293E79A8FE18892B806179790119BA3FE378B2AC882295A25C7FB -59C0F458CB0FA4B103153A2AA534C24ED96976843EA8B30E30E6DB279426C24F -DB7D8ADC3FAEDDE6F204824C5ED8A31E10FA0B8DAD46E1BDC4E80436148D1134 -09D08C56667DE58A1E78DA8103A4E9D6ED7DEACF7561BF0C85039468226296AC -861156CB0F0FF2FEC76D2A32E7E49C48F06A95D61A2FE40F135634BCB99FE538 -1F8492A5CEAC9CD4AC76533C237259E077AF4F1F26B3D1B0EC473CD56D3BAA8B -CDDAE26E7CEFBED818C1DD83AB0142EBB928E6FBC0697FD81B7A73B5CA05A16F -11EC2428A8A77674D63707F0C91D78EC64F8D5F648199904AFCB27DFB49FC8B4 -CBFC4869BC0A2FCFC7AB259DDF59A941CF4A1D4AD4F451CD7FBDB168FF72038B -F1578D89C8F938FF72D408753AD113114460BEB902B7A0EC4F37A6FE3117E4CB -625A664D7FC480E986681C7E3055036ADB8546EAC44B5F12CB4001039A9DE56F -A61D523DE1B0F83609E46E38CFE4146049420154A9C7C75622032404970B674D -4F79BC99A5F3F720A45709338E8C6A529257281CC880C8C77CDD0F7E6B495D67 -AB139E3DA9CCC3C99306C3CE9B0E53D77B1A009A261B8A22B789BB67934EE7F3 -A1CA8C2170082F18903F335085FE5219EB3CD0ED4DC01C9A45426C26046219F5 -3CA60CADB58F6ADE1FEAB848184067C6ABFC365553E20960EDF70DC319FF9574 -654155F8AEFD9864A839EF5E0327291C8784AA2DADD37665FD8A2D70066411CA -C88205E79FF0E2C2FEED0661FFD3736A81A26AEF35599A7463B9F036D6B22AF5 -A6B0C9254F72BECE010800BB32100A745954D96F9A273D5BAC6658B5433BAA80 -22B18397514F4C3DA8D0AFE9ECF437788CF11071BEDBFA9D5FCE42FB0896FFC9 -629971DF9C78E9C40B065C909971202797E90387D12835DF3D305370094E9B37 -4D294623FD09CFDEE5CA6F75827A69303D30026AB518BE812F021C7B25AAFE70 -6485201252BE6AD4F19F33A18844904890003E57A763FCA21B0744BDEE1473E0 -CDD16D4A0A20DDC9B9CCD3E7146C95696FBAD1D1426C6EFF8733219106B56B58 -42DFF423398F878930F85DA3245F6E248E98674144209F1DEFC9BB3D80F4425E -F6CF06E89522871DAC2865 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY9 -%!PS-AdobeFont-1.1: CMSY9 1.0 -%%CreationDate: 1991 Aug 15 07:22:27 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-30 -958 1146 777}readonly def -/UniqueID 5000819 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D0037D33F24E2FAC2B0009AD3C8350CDF8CC -65BCA87979C36D14CB552E9A985E48BE4E88ECA16DF418749AF04FDD2B0E1380 -D281BB2476BB45FF30946B247DFD7F57305FA87E50CA338121C71CDFDF927A9C -77FF14CB4A1D6D80356FB1171ED38C37702350497B44E42CE31DB2F493807DAA -15B887C671199A54C4C1294BC520F5538C15556BC43C9F62342B121C6DCD6C5F -491DA47FF360201EE21C08A781ED0589A6DF91B99FE118B9B29E4F068672E52F -1A06C514D91C4C937D4E642503392B1CD1BF5AF0BCA28EBD840AD76CC39AD7AA -CF2C05711374F7849708E1106F88737C9AA60612D384CA8C173FF1031EBF6EA4 -176136DE1B9F29E40E82680A2CFFDC24DA05853307F1D1F6537D061EBCBCC5AE -E6316380ECD8E63ACBEA9FD1FC28949366850AAABCBC9552CAB2CA3BB934C8A2 -14C9DFADE24D9214858B1D42B2171DB18A475AF78868C2549F19555AAB07F586 -58B28541C74E14F28B68DA42A9D46C031CBD74FC09BFEAA3AC1DDC68B7B71B81 -6003C9C6AC8EDDDC046D247A2B8AFA63A3B1BA1F12AE0B4DD07327F0138BF470 -4630E4B5DA55C194F454EE2E872E0ABE6B879DF2E87CF81F75D79F458F7D3F81 -FDB76C15EEC4125D18685E1D8591C54C0B0D069E2ED73434617B9D30E64457E6 -1542E4630E848948FF2747D5C31B9C314AE108931003DB9F76644DB43D245499 -2D28E8452E50B1945E13A5DE2A8B93523D3671D1C7ED07EAB6FFB559E5A1F828 -B22D2FAF349B40C3B31FE806595F67C5E75260514F456FA0013668D948619514 -0EFFC35C1AA131AF8578A254AE62CA75A6631489C78CCE633A3B302BFACB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMCSC10 -%!PS-AdobeFont-1.1: CMCSC10 1.0 -%%CreationDate: 1991 Aug 18 17:46:49 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMCSC10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{14 -250 1077 750}readonly def -/UniqueID 5000772 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337 -900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA -87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98 -076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518 -9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A -FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD -B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9 -CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30 -40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D -C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B -7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5 -FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC -81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D -5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90 -CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6877C1B3D2 -24030F377820DA58F4B95CFE645109F3F1B80DB5FACFD7D05AE2909EEFCF95AD -9CB286C8B6C075CA2267C101B736139863186C193E31085E7C9FD88EF8BBECE3 -933542C85309013325B4BBFE9A5B606780C8580ABDA2F5D0064EBFC23939B307 -08568C3B7F5F053BF367DEBA349FABB9F760C44D100BDEEFBB01F27BFC61FCD9 -3BA0C4AE0FF4F03CDB67A59BF0FA3EF565B71B6B46567F47386A37B73DC3EA3C -83D600659CBE5CFDC9B84CE11D659D83352F5B6E9FF599E0E25244709CF94999 -F4490F79C766FA55136CD85D8BF793202FDD810A61844BCB7ADC5736C338B72E -F6B6EACF402E22501162C7B985CABBE5CD653BD4BC882F3CDA306B8D82F8C256 -D66F86BB8D800556AD53683E35812ED61470F11E8444F0A97CA096FA37EE63A3 -BBABA37D240549D95D6FAA5EDE9867EE2CFED7EF929B833EADEFB9E4E9DB19D9 -2A013D3884F1A17AEB95D189CED0F4C80FFAE18F71733697202DDC4ACE91E6B4 -600332FB49F953444AA7005E65DA787EE3953EA2B0B928726553C7EC1309C5FD -7B0B7AAC5BD4E2535866540043F5F6815D7171AC447EF63D8B79471B41F50C94 -7F405419204A80C33463AB00205F51545C7C6C723505DF68238D2591C25B7627 -7FC0F4A215B2F8F225A11763A97BC2AC25E060ACC4D3D6D3DE9065A8A2197F78 -EC0CDC9AB6036F8E6E83D0D099E78029C5A755C00A5F24B5F6EC435558707430 -C6C966526F7ABB1CD635BAF4BFD9904282239A224EDAD8330344A1796FB18580 -965F34F885F28CAFBD5519411FC833A319F8265B8E9A97AE064B1364B9A5A3A3 -C59E19620A53F82B108D9C48FD240A5252D2ACDBF4498973E31C9FF3AD4D943D -01A6F9DEDC0060E9AA8EC38DFBEEB5A63DA4A6FC9981F3ED71818C4F3BBCDD6B -4652824691C369D1052801AE761EC8CAB9EF46C6F820F88874B1ABB8FB907C14 -03C8990FD8106C3DC14882C3F651BB89B9E479B7ACBB958E39CE4279F8173F2C -50369D3EC79B5679E8D3BC42B40C896B2A73180E94302FFE0AA5A6D6066CEC3C -116115189CB0FE5B0700E898D624CC772E932B4ECEC87AB7DF9B71471ED7CBAC -B8BA84825E9B2F69040D31CCDD677BEA51C6B718E2D1B86F718E3E4F05F1FA1B -5B1426412EC3539F5499D3F31C78CA1F8C72F2E7674286A9F9B20871A0C76CE8 -E89CA4111EF6628FEA6FBE7D20853111EBC40167181B8B5D97391502C960AD15 -596D6B0D81F3B3E92A2386D378BC5B236BC35941963E587A08EC126F7EEEA860 -89CB644FAC8E77EACED049D7EE276760AAAD684E68D0126C7D22F180A132F942 -5F68A03E7EF07C70B50DC802FAA05BCF9E2EF3FF8B3D3F7C5963C4DFBEB9D11D -899AB25979042DE940F02561249269A038B76EBC29ECCFA0D44C055319F4792C -2B7B4CC47AEC4C83A349F0F3B281BF62B62DA0FB0D8F24A8CE1F73024815A802 -E08B9BFD14ABD611C7A9F764C5F91AAB5BAF2A2E46FC269495B2366129E3DB47 -D09E707549900C0D1578FE601E8EB803CA6BB80CC5A488F9B7F1D923DB5D06E3 -BF1E03DBADA701639A21B9CDB67BA8BF62D308DB4C460DAF18D4622AC03912B2 -4D904D416FB927600B42F271DE15F7286E52E53DAD4F2CEFC545845E1B7AFF3D -8B25FDBB6E7215769E4225DD284F6D37C785FDB0C7DF182B54C443100EC58DFE -18164FE653B9E5977148A6BF77BD089EEB8286024A719DB721F5D9EFC46E1DB5 -DDEA3CD883169686F0534B35EC91BB2BA6971F9FF44E8691A9D8C8E8C0262A6B -F20B1497174C8A8FF6B3AF1323C59CBA4E3489BD8527FEA652B404AB552DBAAB -F5FBC44D7BCDE495895A50516C6E9A10BB8691DBAB29506D703167134D567F83 -951418F611CE7323659EE60EACC8000F6BB0F7440C65BE980D82752CC3823169 -D2C934514CAB71FCD8C8FCE139BA03DB6BC7B9557E7B0BDC14681FF3370ED2EB -A1B9C315C03528AA381ECD389EB53833074668FDA5DA2282E7E4433FF7B94457 -C3AA2874BFF73FB21A55441D3DD11489B5E0A4E8946D3F273EDF5A845587A422 -1915696A0D1B7C8CBCE3D3031A69DB3101AE7F547628BFF38D8E383DA16B52F0 -3D42676AB459769F2BD50C8F3CE7A6DC0430AC385636087783E98E6A4582291A -F34E3F6120E5E2282C765E97F8A99EB922BE98FEFEB86587C63E9B10399F00AF -CDABAFAD8A1EE367149C4618582BC85DE5D57FE6B7E8254E8B9ABFB9F4AB8635 -74A449F2AEC35A84ADF4ECA4940AA2AF136DA60EB8797EA726763974376893CE -8F799E1F75FC012D4A41BD5A9A766CF23BE98CA3D31DDEC59F26E9E6531A3BD6 -3F4DEC954168D0CE948329C0DFC1F212F781C31F84484EBE4ABEA55923C9FBDE -34BE6DC02B1A9E0EA6AC9F0D0710B0E88AB7E6D87534522D98EB39B41DF9D960 -CEA4A65D6311C0AAA6E189399222ED5B2F1728C7218E45E49923445FCD858633 -C8019929170C50BDF8411822AB2759A3CB38908E1CD5598DD89F68DF0B905204 -030F15C16AD938DB3389026234AF4B069B9EDED52215AA2B21AC72D505F1EB58 -88EA6D61E815EBD83D1BA7A6DED6F45A8F6AE0039AD41C88C4049299C1BEBDFB -A464C2F55EC061926DB93DFCFE19A33F9EDA3971FF1681FC001AD37407FAACC4 -56CBA2C45031ABFB1E96E5AE1F7E4645FB6AD13702453FB79AAE8EF6B5D6CA9D -1B3A37D4E80E9ACE57BF6249E3D1DF36945D9493FBF83AF7BB9F038AE96D364D -73C2120587CC6AE260329F0786BEE3F282ACF41FD7DE5BF8E7DCFC3DB19E09B3 -85CDFFC5D9608B27F6ABAB2A0CD25FAE183D06E7E55C002B3A9200632DD9D964 -E8109EAC946C4C272006CDBD6CD8C2EDB0BCCEB7C5C25C9B6C7D881794533508 -2029A936DA935A17802F2EB438B5425CEFB51CEC94A7AB7A1558F0B132F57DB5 -ABE34B5ED234DB394D5764816730714AE3AFED28FF069789CD75B70CB7ED1C7B -1D9F547BF6223C89F97C62D1DB03221A7984620DAF68EBEB934E2C1EF4E99038 -0BC9DBB60B893F8078480F5BAB81A981F849FBB8B6E9E64589D4BC777A493B08 -570577F541BCA84CB0AAFAD4DEFECE229C7E507EE332EF7C2335E6DC0EB71F79 -38EF17EDE68309834527EF9EF92C61922E5621184D850A97437332FB6CD40123 -C56153CAD67A63654221BDD5F3D04EB25D370A3CEF597D5EC664831DE2DF99F8 -CF42B7E665850C30610E9347AF7A8B2D2F6754E2C8807CA049253949E63C0C9C -68FCE32046493B2E9E1622AC65F30AD17CBF3984F2DAE2B6D115D08A23B0B2E8 -C0568E23543E93C7480C9D73A7062B12F70F0A556FD197B92ACA0FD60D157236 -FAD51D36A8B8D1E81C768A88B2E9676E453F89231DE805877EF9A71B1AE80699 -1CD0C463EC1596B32B985DBFA9725AB31D23C40012B48BCA5D992961C1FED5EB -BEFBCA7952AE46892A1DBB8C25DAD22CAE4159CC9B9CFD26BC91EA9E4A8E50B3 -6B04B3C75398E4B3038BA8DF88C51404E52EA5E9BD6E87F35F37296BFBE0BEE1 -07289BAC29B72510F6DE0219B636008F9D506249FED3D58B33CB47F9754089D8 -477B55E61B0FBFC7164B40B2FEA4E45F9966FD7BDD758B24BDE96D7E8FC5EED8 -9FB91D03A510EC8D2063C914E227497A4252C00554D745D35C7E2E59D4A03B9D -66E72D62597C1FFB8F9A5889C1766E6701788E8383A0F9287CCD75E72EFF20BC -702B606314BAF95676FB696302D25F1B1BF9417046A37D53858D2B8A5A3FFEE8 -FBC245D6F93DFA01460F98147E2D159D09C62E76B67E51383976C7CE861D4041 -075394791016B1EFB6429B4FB930792939820AC1C553F2B3E6691E09F0632689 -F59A1A8838AD3F8F758C0B79D5DE4BEE864633264BAF10EEE0E6D501A5EE9EEC -3750CD6C91FB9F7E679A0B02885E8437764797BCC0613905B9CDEA87918D9E31 -EC63F4F1464DEDE470C527174B079979085BC03430CCAC7A92F7DF83DA2DECE2 -D770949B3F3FC1012C1EE7531E8637533507AFB20869F1323EB98406D8631E5D -EDDDEF57DAE60EDB26BF66DAB185616D4245D0FA92A314F3995E8C7261443165 -A81E250357D84A0642395D09A017E324A381048D8A9AC7D42F7D1DC471252E26 -DCFC25EAABE8C12E59045C0BC2F790C8C71A7BB6C0FAF914940BB78310C38A52 -74A6A3D3B19382171B8E7AF8A9CAE10512E942D928A52F10D4134FB66C60A915 -FB663A6BE31AB27F6F7AF2F121FB6BF1AB79C76EEA3BBDCA392F4EE64DF93EC4 -AF5D2528E66ECA77E134EC3D4368E0AD8055D782D5BCE2E43F5830F34AD1D64B -9797DF1416046326290DCEDF3EA07175381A8C1D268B5A6E7C7C864AF59EE9A7 -1E1042EE5F23D303DB1B0A940D7C40950B4F7C60A78AE637 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F -21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 -06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF -55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 -B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 -0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 -1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 -7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A -7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 -356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B -19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 -C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F -244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B -AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 -5C43C8942435D0AAA3D9055FF808F2C3C887A3C469BBD98F026D0A59E26BA9F9 -C2144CFE49A9AD892D4D31764F0AE3A10644AE3966B0A790684B14D11FA49785 -EC5565D2B2E584CBFD85125F3FAC133338DE35361943DCE9AF05FCF2840CE512 -998D42CBEC52B57B79DD63F00985881E8463396ADA47189A94DDF951A78866F0 -B8A3D9197E39335277EF2294308DA70065D910943A34F7D5F2090FB4AA42ED70 -CBA469A9F64B95A6FBA4BC89DBC93765E3AE4723162DF3F9D6BDE77DD5870ADE -C8900D6346957B84C3CE88A8F9A12D46B8FCA50DF4433B0B8AED6A63B3DA102B -6DF94E62408E24154BAAC66B2B249C695BC0FA37A28699D9C0F3EE94AA32E3C5 -8F8D7F803B5D25014D43A353D719B14B247A87898A960DF68C0C0BAF70C83917 -6E9F7B3ACC64DBAEF3FDCD3A80C0AB907EE342E543D607556CBE5A9089B86D1D -E768F27D74A613F3ABF883222A8596B542EBF54E9DCE327B5682AEE5F6BCC38A -2A052EC4018AE3189DC1963BA39ACDED8F0C60C83F8873FBBF0302010956C520 -A7F3F8ECD0F177EDF5F4D5522C5984A3678FF32EEEB570B69C142AB89467641F -917155D646DAF3352E27BF2AA0746E062E48532256AF364EFC0F0AAE376E624E -9AD3584A518EC3FAF11CCE2A784CACFA20E5CC2C563F050108E5A31F24C3CAAD -39530C986207419E06D062C04A796866A389937AE12ED688151DFAFF76CFD9AA -3DADB718D5F830EA5375F84DF1B5E19FEA8EF52D1331E2BF8DD5BD46823BECC6 -EFD148B90FE1EA1C926BA53E29006669CD65F2B8FCF8777C8A08C4129AEF556F -823B417C1EC60D4D21DDF63AF64FF17AE30B25E7056D40A9D0B4EC3CBEE5AA29 -9F5325AB65F2D0430631AEA89CFFB2226A629CCAF7531010DFA691A870B11EF9 -9C2A14F7B974FE6AEA62166984E6BC9BFEBE3043876197DB36A0681E77916977 -A02E621F35ED732834D4DF8CAFFB0A66CCD1A00F744C3D7942A56B2CEDDC4A39 -6C401F31825A8F6A6B701F8A936C6239A46F05EDDC26EF113D85A2735ABCC8CE -3A610C9CAB64105D274753360D39279E773A5275721816E6E90029081F401732 -3E3454BAB1BDF5764E24775007201E9E1F1B4637ACDAE0C1CF1F9D4E9E138FEA -3475AACFBD9577A7642DE946E674104CDA673214C5C471F0428A288C3EF70F77 -1588D718076816F0285AFF8B99B7E67C15F9A2D1713AAA308517A5BE32B913E5 -5B79654AFF3B1477BB62E0A2ABC19A8B8630F1DEE1CEFB1B0DFF8B7AB7A2F83B -5034ABB0A2ADD6EE05A65A4AE3B10532294636722DA7050502ED45183CD9B6E8 -46962E396F3651909C0834A863A42CD67F8B2B728116C04215A66C8AA2E9B544 -CC29B88F87E3F0B1D90EB59B1D1DF8527639B04E26968CB432D00467BEBB6425 -BE3259999F836D20FC9A1AC63128F6FBF55DB8A5548EB9E005EA2704B3890DDA -E1E13B526436C48CB86DDAAE2DAE2A44F6C4DA89423A78E2BE66B1DB4644F89D -5595DB6DE697477049B8BB9B70ADD0A8B98EF241F29D13931D766FD7828477CC -43552BA4730645EA9DF1C81454B8A249DE76A2E8149151E06A913A3CD6AD003D -07596F163982A0B61332B160F6326B8B6AB35165911756703A7FA51DE3F501F5 -452A332D0BEA905E2CA286A8D89180EA19F7F9A3EFBB039E2F6B094E28B2F250 -29498F6247C39B03A584931B476385536EB5B6EC4AD830A03342B04903E507EE -8E8FD5077875C4F796982EF26EACC99723DF26B5BB679A6E09C02A8EC4B19B40 -D8C2580B4498138FF17D83E27B09A7CD31444E0ACD690FD079DCA6B96D302AC2 -1BD12425B5C7B1E4F342D6B8BF9F8BCD7FD798D711A171E585F98362E3C1E099 -3BBA3D27AE611A8FDA9BAD5A3A5626B394676E6EE9BC512E49051A20C1C68366 -B68E65CA1CA19AA94B9255163C0239A1FDA8E13B6552967E6631447CD24FCA8B -CD13CEA20CE893439B2DA75CA3F6F045C717F4E77ABF30EFDA7A6D5AAB19B574 -F4D9F6067A9DF203AD7F413BEE2D6A181C30072A0984D7403FDE31D2C67AEFE5 -70F4C9A72111808B5FBAF3FA5942DFB78A4873C7DC2F3124B1480D54830A87C3 -41B7E2C93075D463D4F5387355BCEF0FC770DF544B64D57A6462FA93B392F764 -684AF3002D6553E550BEE1D3D19FDF7E52FDD1C844F28E259B94A70333A6F691 -B3FAB06CBBFA69239700BFADF0DCA7B045EC531329B7F2428AE94C525FF6D2F0 -C31BD8BCB343E515E26E370BC857B6C1611B51884E468777D40C10631DACA065 -D35B0C058863E32E406F467029B99359116E1E27ED260DDFC920358BE0D55434 -890BF7EC1AF88BCCEE677B6A2E187E9D95F2ACCD8FE60ACDC09E3FD9A86171D2 -76B3A03012676CAE235860BF1BD6D036F8F12C13005F02B4386D345DC369A46D -0237009413968E46C9C7316E3DEFB1DD5BD26D6F3BEA477C00D78BC2BAED119E -372A67B5EAFCDD31DDC76E0925EB049432B306F0EB8350215B532360227170A0 -42C352ECA9023B67371472D74334F658C7B72F3DCDB7C2C7B4151634DF7B9ED8 -54E890487FCDA8D6205AA6778654F1FF87373C4DB6D56B51BF3B92A28C1968A1 -61C3266C66D5D2DFA341AEEBC12B1F5FDA92E58B721DE0714F53ECA05B15D7D2 -61C3EDBA7C1A2E0AAAD90035A5789B9B893BE52B734551707A92337FBDB8FBBB -CB4D2CFC01E733C5ABB75632D92A204716BC1ACC31CA8F905597F35668AE6D5C -54AB11DEC823F3F6B1F8FF744F454F2D5083157939A3FF1614D091862D6F9DC6 -38B007C3B968EBF674E224E1E20046E15AF1DAA96471A61114B9C5BB4E876808 -630B4F79AC2B85B1D0DF587DACBD9A55FCF2B05CF4769547E5B793BA86E7B150 -253D1547EBD10FD4529B6FE7ADE487B9736445B32BFE539BDFFADF3CDABBF446 - -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBXTI10 -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF -E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 -BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 -3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 -F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 -C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E -BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 -2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 -879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D -141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF -63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 -4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B -FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD -395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 -82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 -763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 -165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E -57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED -E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 -178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A -4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A -CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 -890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A -7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE -82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 -82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 -C627A8BFEF75B4DEFAF34B44B356A516B765AFCDD3F5475B1F928731D09D2170 -B97E40F12CCEDF4F6BB3756C4734F6E98D74B7E942A954B1BAAB83D4AD727FF6 -DF6DC50B2223BCB5568A73A112E4860AD490554E64E780073FF3399CB4688D33 -9E8829667CD6EAEF25E0C7D2D44F2BBFA40E999325F9561514844221B50BC8FC -4C7AD68CA7220D69125C2AF06849A3E068D18733276F0C0A6A2936D3C2C87CDE -59CD1AF148C44F85784A5DAD569F5FF53C061056C067CE29AEF1E3BD1FD8B0B8 -71A0A638CDAC6AEEDBD5337D4683C084BB60B1859E600F59CB4E19C5FC5C6327 -EC544A68134496A9BD0B87D83AF6FDA3CB62FBF0B54FACE1F0E6A2D84B467AFF -0F62DB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27A350233112B0A339366B7373CE058456E0E1F -139936F6CC9B50441C2F5994977426AD7DC8C717E737F8C201EA55AD94908336 -FFE9568C0E6EF3202D8CD7B7A6CC203EC601F9A7E2A4395ABA3406503DECAC56 -B03219CEBD0E465EA0F635F26D984F5942E4FB186AB874F3E74CC2F2E378BD83 -57CD1B63C9DE9963587B7457D56024D95645ADE0D95DEA748A6ECC6809C2A7E8 -6A568F83BFB184B31349A771DD72ED3FFE8D16E3138EC49EC6D7524E611331C6 -DB2E16059C9A12512C7208E3B30F04273E20BAF41EF8C96BA4B17F31572BDD15 -3FB7D15CE31684D721083208D7698A31D07160927C9A7CF8B7EBE81A83C0BD46 -9CA06245FDA37F0F2DF7948A20D121660A73E079F4ABDD8F90367BDBBA323957 -062438FF3B28A3880380CDC76A055096D30FABA4AECAF238ABC2513F089A6C4D -67EA0050A34F5DBE5FE32D9E75E67F4C87AD8115DBFC00124DB4D3F4CB62CA02 -59BFE46E90DE9ED306D6CDC51005C233BD39F41B264E2892AD23E8F93C8C61A0 -B5C5CC1021411DAB515039DCAC06E1FAEFA259E6AB07135CBB345E90E2BD64AE -37B9A46934BEB383D3AB1787A2656FCCEA6467ECC2582807E7DED181C53829A7 -1818C3FB17567D81D1A833E0559798D06163781D7895C31B1D81CC439AD51CA0 -5E33E96253064B684F3261EF86AA8452B32E9C5907153BBD692BF8BD4AC45E3D -7161488C716CEFAA695877B03781F64840D49C9C1BCE9D5E759BF1812712F2EE -054A34F2153AD6C953E795B6F40AFAB115C5FCDD1864A85C1AEF5DAF40337068 -08730BA7AC580213881F8AF1F76FC830EC76BE4CE6E090A1F91618595AB6D1FB -A885D04A4E73C9C7A923D813275810DD2B2A3AB4FAE4BDA24FC170A4BCF46E05 -572529A19B09E5ADEAADD071EAC20C5DA884C7D414F5AC5206E87E53989B7378 -BADCEEC6FCDD4B4EA03EA994FDF6A80A2E232B1A007B7554471FC1DA24901896 -9CA84283A02FA1D9176026BC1529147F19D07521A4997B70258FFC03821EED0C -D44BC9C2E67C3CD9971954C58BF1775D61115B75E26AFCC3B7CE6E5ECB8CCDFB -640DE440334737D63F539385F83BBF603B631AB2F750DBAE707F5D008591A05E -9D532C165FA35B580D690138463047F77F10FD4FDC8F724367545C0F5B6AF978 -B6AFA49624EC2AEBCB2D19E9652CC920EEE40ACB479E99C7B615DD7300225276 -D45A24AA2A607E5C90C1835AA562597FBBD42465DB1AF4867E8A1A750F1E462E -D2615B3A9E2AE194DB25B21527307997F12B45F442817D221773CF53AB0063A0 -4B188C90FC3C03EE095014485F988D8663C0EC7E1C7B99FA1CC791DD44C7CECA -600806FE76707EB7D9355A1CF21C4325E2C83651A6FD8399C79CEE9816A4BB2F -FC454A4A800E96D4E964627ECB39A108D418DAA5B57E6C0A3F191BE83A4B4BC7 -48A4B83F4EA66B0E2F6AF0F99FBBC9BD5A53B06967B36222AC42F2F25664E39D -5BBB794C37EEF11E43949250AF8F207CAF47DC0E02E93F9B41C9C11BBD7146C0 -C8994D6927D054BBE65A85AB565027CC9581619D26BF75C397AA56BE2A8DE89C -7A0E4B8E05D6A74092C5625E59BA23F65F1404A17A9DC4843A08B58234AD7592 -7BD68D345385E2B005F2B983FFCEDCE78417C904E181F3B6CF8E5CF236F23611 -D9CBE545AA643C7D1B28EBFBD2E1171057A3C8FDB9D7DABF20558C7ADE8A6B3A -FF9878B26EDA16B0F9DA421281F849A44C76D117F4AB566FE241B0A6CCAFE2BB -9A6436322D1CC54CFB602C0466B70565F9A7F9370BDB1C70F0C33E529CC280F2 -3C8E23EB2C0D25829496B005E711F5BA8E4680EB3CDF115E4D0F89C4B5DE8842 -12CC80649077D5B844B61BF557D316A59513F58FECE657F2A7EF3B0D320E4C33 -B4877334EFC38A29352B0240EE736EDF805C434ACAA59F32204DE64B85CF3D65 -24F0AEACE2F703252AC9A3FCB2F628928CFAA788221C41B6AC639655E39188D7 -A8118CE6697A20F3FBDA3564355DA3DE10EDDDD22BFF4690630E99A77C663AF1 -5D38A0827E81D805507A1260ABA8374501A2CB4F07E2354B2DB7E77921B6DC57 -926415E85A35379E6A0016993926231AB1DE35178E16839574A97E50DE7C1179 -0946A61E65BE962E7AB2A584F8972A2E3CF319EE4C59B82DFF6CBFDCEE8004C6 -1B7BCD417103A82B34665045DAD49A228E9A3F63F1194B952B67F89C32E68814 -705CA69F88EDEF44916D40C22C16F58BEA7A0082D4A579B7562319750BB14BEF -0CFB256E9EA333F3AEBEDA8665E67809576D7F1892260E43C764963B70FEEBA4 -1EBAA29B62BC37AFC35AA6BF57E504ED00650B4EC61A82B6A26EE97D71FDA25E -1358E3BDE969F1B4D04009D55D1B19DB3C8BD1671280394A19D90893347C92D0 -E4D5EABBC0E5ECB168D32491C0CBA1379E12F1E6E160290115C60706AE8C3355 -A88DDB64EC5CC2FA7539E37CCF6941F66C3275273D38DE8C370034D89BB92D1A -B965CEE8D92E4BC4A2733E61B8C766EE4E8C5F5670DDA0CFBD8D2C76B1F9F174 -23B97C475C8B9CA7EF89A2BE521F8BC3B8C8B3AF782AF6B1EB86EEE7A64C4314 -F1E2801D117BF864C72F04BFBBA8D47535772CFBE2EE0F14D699AA33FA7D3EA2 -8AD0718637E0C3027DA0B4EA7F3CB852811E620836A18C70283DC59D90F28CD1 -C6A8668A33304BA0B01C7AEAAC07DF77EF7D21A60CED0347A0C763572CC62DB8 -6F471ECC67B78D065762D99B540F2B45BDE96D18DD1F21B52EF54C3FA1F59C08 -E919E78EFF5EA634394A90131E66165B2F5657D4650B7B716CEC85F70EF33260 -72789B321F587D277D458B6EED9010B8C29B8FD82BEB1990A0C7EAF5A763FDF0 -F3AF986BDBCB86834412CA0929D98AB3FF21D401E9A6E816587F4F98BBBF78A5 -95DFE08D14A7B4B922A49AF62B6F1852F01A593975A06878D34A3925F1650CFF -A8232E51F57565371E0D28303F6240D95D3D948C0A2E27DC60EC9159502709E0 -CEAFE520F27409FE135DE680EB730F3F558F36079EB4189E4750B46154AC9B70 -13CA2182E44A20F4CFD8FB7F8E2FB368233040997C0E5659DE1E0619EF05CBDC -1D2363243BD573BA0A80BCADA2DEEFAE08A83CFADEBEE198C34F76ABE83FA5C2 -F05C1B86A1E1171071975C56CB4C7C0EA35D8449F6D2948F38DE52E67E136311 -51D137A1A58C1098336E57B1FC0A17067CD6689206E12E3AFC15E3577C10CC6A -82D177CB016609881AB665B0B5F6A1A3A9488F3C01E834D91B38DD6BF1B2B044 -837ECA3D07B8B512B4394E28B24B7477D710C8B0CEBB46F703EE77D5E56BEFDD -1F19BB594C69802B39DB67169EC082340A20EC63382EA62A93310E58C201ED68 -D805355BA00FB8695160EC7CD16F3208E69C32BD6A0A965D0EBF2C8F4D54B096 -A82C5571064EED0F461F5A6A88F1A81A30CC9F9C8FC6CB464EB348261A5483EE -1CF21254D894FBED7C83867CA3868DD97A273411FF8BC1DE955FA12BCD72C16B -B5C7F36967FC770FC35C8B8E8C91C2045B1EABCDB0ADFE148E173503195BA1B2 -435323775EC6E37099C6ED935DD7E3737AD6F112D9890019F9B949C6B20185BA -75E892A5481CC5F8F63E0ED8ADA4E501B451F6E491FB7326539C369A3A0790F0 -2F32ED0E882AF2D05F786E2F65531DCE206DFDFE1A477C71A97CDA763E33F864 -78CF67C33B0FC431BD601225ED92B2B986832A94362A9AB4D49F3FA46A82DC3A -58EFEE09DE84EC7B7246160B867A8507A6BB985261A20F4EDD2D764429084294 -C185B5EDF9F60C4C15BB718C2732AD751549006A5B359C03C15CC605591700A2 -603B101F6A6D1F9BE767D7BB0C1454BF78274CD777525C2966A4C396A3598838 -D0C417953CC8B46A560DD721B2938E8FE23ED056DDCD5DC371983BBDDFC76DA7 -FD598F62B0433936305BC861EA69A4E32B417AB2E9049ABCC46C4345F9669741 -8A0357D30D35D3EBD33CD11D021F5BEDDEC8E62ABC7F356E1C6FD7E1AE402AB5 -C0D624F0E5CBA67779F2460E2808F3ACB78164D8C1F23058C7F3E364ACA8BB30 -49F58FE6DA46AD4241D62EDC34099D29DBE9CBC13907D51374F757C907AC9D3E -113B7DBFF94040600E03D24728D49FBC5E5BFEB7F179C27EA0D6CE7197701703 -44B7A2B3ABAE0EED765B9C57E28612316B9B6D56CEBAECC05D478AB41C685641 -D12AE8A5AF427FA4E4C75E0221B0E2271F3A49BE14C3B97E36E80D8A77D45BEC -C09D87DEB41CC5C1112410901ADA51B2F0852C5FF9CBADB47946B3DED2B6C3BD -264BAF27319ED478EB6A3146C0E50E186FD80E7858675481F9DF4A4BC5015AE3 -4E05A1BECAD22851660E20507E7D600AB1CE3C1AA48BFC5F050ECF2AE550856E -4B99C1D665A6A7FA28A9C329073A478EE162499032FB51E4B3D5830EDAF10623 -DD8D478FA68B06420C29F484BB8DE89763AA12B685462B56D6945401BD0AD7ED -0590DF4EACB677982F261448D1D35C72A1BD8D2FD85393CF57E33AACAB30A809 -B092DF30CA7F7E7B80E423009DE411182E63A73D6D14BD0E47CF571E5440FF1A -D8AEA199831A918E485EF589A422BB7A4F6A2CF5EAFC028277F28016693DD955 -D0B2B171C1803C7FF2BEBFB96DF72A4256F40CA88A27B7C174826DF26BE0E9F4 -52742FB8ED72D10EBC3378C3D4F75DD787684AAC74055930E53AA52DB9212C27 -514134DABBD2C488B047460AC2E9E3468671A716D790EDCBCA4158B48D590D69 -6852E057D4CA5116BC532420BC32950BA2900C8E641D63951163C34CC89C644C -54AD91CDC59660B4AAF0700AC478222387F3DC5E249C62E4433D3C6DC997EEF9 -45784FF75384D73CA044F7A6B1ECC5F1202C2C7DBE5DD4ACD5E8D7CF5A057D58 -0BAD218558F76ECC99251B11D2FB92487FD6D7A3AA8F16FBF489A046487C8001 -64A8FD9C2D0373BB751188335332516C2F999BBED75DC6AD90CE3971706180F9 -55D8D457BF68CAE5F0BCF71EDB20B02A5A2EC92CAD3B971E9F5854BC5ACD0B5F -DE882EB372814DA4E91EFC31FD0DA662AAAA1A69EED664ABB5E418A19A459625 -E12E85E52FCD8ACE314947162767E89D9F150BAB26CF80123938D8CDD901CC42 -BC72035A3A5EC261111A576106798BCE708FCC8EE214F2946813D955535B65C7 -FF875911B2242E7042AB34CC8A722637D8F324C6FDDB25D9DB2FD2C666244F39 -74541C5C716DCB61CAD8423C8B3402D6C6E003200A4883C213E8580734F41451 -18ECB1AF8FF6505FE28D5DB6BC742BFF13C229813196277DD6499B9D0313EA3C -2F44DD9CDA19E20898D6B74A93FABC51BFDD49B5F4998A273C31468BB89BE757 -BDAE0DA6BD022AAA2F0584C916F7C837F0E0883F6B94823180F9FF55EDE706D1 -21CDCC806D00BA61D4A4AE33029B4F640E9D8226B8BC0670C5E6DF2EB062DE71 -2C57FFDD35CF8502B07A52B52D6D14886A010B5567185B790207D5214ECAFC0A -0A55803E08C9BA4B8D002C7310D22F256B8232DE47B30A131720AC4870E4B85B -6F56F74FC851E5709E914E6E46793748CB758DEBF3ADB83DE06EDD7EE36C7A21 -01A5355221898484015CEF9F9EF6F66803DA073C38CB4406BB738F57D1AA4E8B -6002E213E26A1F3206E8B10B7AF2FB5CDFA840891CD12C816E7EB41D1A7EF62C -D92D51C085EDA95874333A1ED73F63386D5A9AF817F7E94DC3BC489A36730800 -8DADACACB5CB2749D8E5F8389F93C1B596242C2B9317E26533414367AE8739FB -3C7097058371BFA929594E972CD18837C892DCDDB4384DD2133622BD0E48B1F4 -3426A7EC61CF550A6CE1BF747B7FD53DDFC95CBC5F50112B97CFEC1406816763 -B2321D3B3A9168FAA4D888BD4CEEF539B4DE1810F77C0201FD5151270D8FA365 -6D58734CDEFB41A6F0F26BCB78F83A189A91B7982F5C16973E407A50BFEE424B -AF4F1956EB06FD15BDED6C6A10F7CDEE426FDFA4B03D15BFB1CBB5919EF8DCF3 -FD3D7CA45C2DD173060FCC4AD5EAF86B1966A449B2BD255759B16D0BBDC3EB32 -9B0A9C7CA05D6D5232BB0441D182E52895FB7BFAEA92FA1DB585C78A8EAF1DD0 -13AE43CFBB182EA0ABFAD44FF4EFA5D3BFFB53945A7D36AB480645046F8A032B -12DD38DAE64C6A6B628BEFE7E3A60FE551E7AB07A65F3C57D4BFCE9A8B5BF8AA -F754FEA7EB86867029836D9EB89E75E154E34814E86036E279DE57BD2DB024F9 -EAE8E0DB7A36D6E01484AE6A42560189A24269CFC2EFFE3FAD0F200411D75591 -52F7FEECAF445BB88C3989B0E095C6C50A74F66221A16D990C5EABE9C2E979C9 -7A71EF59C049DAA808A09955BB8E5D3F5A266F552A9C97FBB969F87348A87CE0 -79BF91312198EC39246CFB3F30EE757AFE025B54C5880A6DCB85F67A36DE92B0 -8791F5955BEEBA9EAA842005D2A1078016D7ABE4E350553A2777E050E769A7EB -2E91FDB7BA1D89306D0D0CB2089DC7CB2E6E8587E71A96B8DA4DD6281E20C1B1 -5F09FA228F6B99518815C0CD67795991006DF4EC59C62F083F11513434C0B469 -0F899EE4DE7481E18EDD0FD4808F0E29179EDCE6A85A87081F060AB738A0B834 -CDC1F889127395EBC582D8EB68391D779D4F25AD0E38945D53A836733F9B4B6C -8874506F34DA3F1BE2999FDCF0D830A01CA0511605EBBA9F5002B2F0065ECC89 -9231086688B187E0742C2745CF291313FE6C95B2A8F09F38686B9CD8F15A3BD9 -683139DCA0CB799A8BBD4DEC071D17119B80C1B15D9AA564187F46DB9DC5C885 -05D4CF7593FEED08AE35852F6F233B8A3888E1029F5F60E39891A7CA92196429 -645CC8545C24A0EF4B71F86266F1C03D578D66662C560B54F219052433C99E20 -C7476D5BB198568B6282908A6B972589FD9DF13B291FAA6BF80AA07EBAE0DADB -2A5C290163EE73C4F159DB4465797447517183D3016560167789B3FB8DDF3680 -0AD0D46B59B05BD0F8E291A970F856C9797AFE19FE207F124D65A987E6BAA0C3 -9824D499C3A9E0EBFCED03B7E8AC0EEB7EC4B26487A864E8514F91A4B993BF0A -D2DBAE348926515E92CAAB6950B867701101DA64B59DA1246441399AD08E8926 -D49440109403612C41427CB4C3450CA80EB07D8674AD84F7899AB32A18C3351A -1645ADBCE41C2B7BF5CFB9376F38F865FB980B94C042AF0D1D8476FC567E7114 -CB300784A257F39D85CC8EA614EA0C48AD378BF4DF1A2767E6842234389AB724 -60AB73BC51F84542B59A5DB53B664D181AC5A1A5CFF2F3971CD910F5E5A5CD38 -D09CEC52616232E8E20C4255EBCAAEF1F9192F10EBFB34AB54C8D5B8D36B579A -5421CBAE787A0655FFACF05AD8E8E8F689B36064F058BBB26D0E6454C703B39C -F795FECBA78C88842B44842049E90883A88039633D876ABFE54202F35BD9F9D3 -70A3E0C31AA08CF8A8966D1FCADCB91EBC5FDC24ECC9CAB104828A931F338C4E -AE87AE252D0F3403E14600B4FA5CD4CEE37DF8C7A901444F70E3EEBB2C4137C6 -9E3EC4FB00D1313C6EC1C2BC5380F3434CF5F2635D424DA21E6316EA75FBA5CF -7EC2CE9631201BEDF7D7982D476ACCABBC5A452B0C1C76A00B1B6AD23001C1A3 -C494E6B82B98EED261F19255CAB52A09448FDE4E523E89F2B2773863EFDBF526 -F6415FD6DF91BCFC3D93E95EBC6A53D3AB8EED7563939DFD84BF364798E656AE -FF4D41430D9FCE65BD2F85125E5E42C1193D0235108E6312C7B97C1FEB7FCD6A -3D79F70BE07093FDE9DC099B282F3B7F2A41C67FE72E86EC7818DD66BCE93E46 -DD9AEB93A25FB47AC96DEEAFD80BBC7114DA109FCAE205B1D08A3AD8641A400F -F2B471D677402C2B3890EA01F971C511FB4DF6F5AF9C68FA87E44977072A29CD -4257AB3F7EC5B6804C20D4B127F02832FDD5666AC4FDD2C0005649CC6E4F914A -9196BE5AC7D85D4767796CB01542EFDFBFD1E51C9C415371E4A5F3D68BE2536F -F8EDBAE2521FCFC34A4274497638D4B9B39C14CD6E31C95F32A2CDC9F78917F7 -0C004ABA38A32EFF4DA64623A454C9755A43047355D0F187A779275B00FE5764 -30E1208D1E12CF6D908D84758F236BA6185333B56AFCB2C1B4677A7B6642D4FE -E229F34ECAC2C9DE021B051C5E7D6DECF456D161EF9E3888C38E7F477CDEFC01 -97920D696B2722340A5951953B2BDDF103C6D0C690CD04445F241CD531C81838 -ECA1A02C4ED91032106D142AA4B899ACBB21177D905B42D04A280C0B61A0F8CD -B510DFC46E922E8FEFFF31EE58AC1BE7AF1C70D2BF11727FF8C66D628695067E -E6EABBA97AA5A75F955FD9E9A1B21E71A8078418766FC4AF8431B4E7C674A6F8 -4E82447B81F15D6703074BE8A13BF13399722CA91E136A552E9764333F41FD8E -2DABA04817F8DE361C2E7BC23E9A963DECE999A6CBBEC7DE08652A8888AA1137 -EE0A0E4032A4B400C9A2488A55D8E25166A8E9805CC80E7D6C2D1E7C071C2E9B -F2E652536A4591576D99BF1DD118244BA09A8255CEBBD18FEE5C0175D4177524 -9309626DE05FF0144BE9F2EB05FB51CE924EDC4A5C6376C758A7138BEFAF9BAD -C89BC9834A8DF3790256119864AE0652E92FDAAE5A132557910C307C8C0C3FDE -EE3E0C17D32CB28B6A21B8DC6ED6525F8D25EE0270704828DB9006F514EFB75D -0671DD3B138DCFB01156B43D5B775B78AA95CF109628F5FC501927741031E60A -D46466203CFA84D9A8EF065C43101E8FE1BA60E82E01A9CA67D7329B93A11260 -4CE84119FA0CD0E41EA3B645CA3F06059E7895526876F7C2110264C84B7681ED -0784F82E6A160B7D3A6C520E430452B18DE47224A861D1CD872433844D7BEC16 -514AA67319F17771D796C88C2A928514D4907A1E58FBC561EE444292AB0A4759 -F809BE67A4EA7F152BA841FF3C838B9725F8F89C5EF28802C586A542131F9B93 -DF668AF74A34287FD1914BCCC8B3D2C698A8109D21BFAF245274BA33AA71D9C8 -531695BB46EA91917C40FF37F46A2A69D0AD619CF7EAE936FA1EF33CB85FFF35 -A9E78CEA2C74AC6148E612E880A58DD4FE573D6A10A0EEECA7E5DFC219E89E0D -90843757F05759785D04F6F3E7DA269888170A90488097B5A3DD1B61CF3B618D -05C68B2940DE15065AF933A83BB9145629BB3759B49F7C86D70E5282B52D3CC0 -331FE4C8208DA7005C2E44E683E24FD0188655DA87D01C8313FB35AC1EE14448 -B1681BD5ED81F7CA640248552B7A3EFB65ACA6DC132D09BE6B608E439A9DD0AB -ADF752BAA226A75986D226714DA5F1AD47B8BEAC12E7E32A0992CDC54CC054B5 -4287D8531E25C390CD8293776D82149E60597DAE8B2E6D332D04AD39A8786E38 -6045D1417B3E88BE4467A0BBB146C04632E5C0B7693B0BFA5512101462605402 -E089EEAEBA41666BA74FC026C200A6DCDC7781DD9A3D184C71CABDCF53CDDDBB -84A4926F982FA96E3A14FC3ECDAD8D9C1851CADE2BB68F88E736B4F6231366E2 -D31364FF60950EE333B36A0F02A35A355B4271C4A6B067C979E440BFF3FC69FB -CE0998138FBE60ACB07A24261DC334C900BB422328D3EEB99B8D01FBEED832D0 -2D44948433DE5A22F0701447E03E7E6280273B87BC477C8C90AABA2883C2155E -F130A10ABB57C94E43AEE5D9D65DA7D816C3289A2FC470215F4F9C42699E52E4 -D3FAD53FE861435C255B887D7AA50176BD2E93418BD0D53BB0F86D267207282C -41E2AD75BF872A2FA4C39A9DF160244E592FD344BDB3BA471DD7A8EF658605D5 -51223D007026DB71F97D9AC1AB7955015C9A4C4317E9F9E219B77E2C46F97741 -78ADE503EFEAD4243473D329B84C60BB96ED07D171C49D2801762C40EA7BD7C3 -B216A1401727CB6E7E7233B23CFCDE2C3D62462FF15AB69568A0BAA15E10FC2C -C33EC5E22A4FFE258E73B59D28BE7AC90A9DE63D329353B165087D8B58194815 -9BD0A3A335E7DAC0C49B880C7D85A242D5D562F2AB1087E1A46DD94F895B074B -F632CC49C3765B417D6CA0DC7A355C672EA4F91DFB751B468FED48090BEB0232 -0959CE3E6E40C197DF33C03DE81999F0435D46E6225EAD2226438A0E19458BE5 -579699FBEA9BE41F3D997DC4CFF1C7591289617BC2F2AA7B3A895F025E2137EF -B9FA6565C04E516228C59DE70340C275670404E519409BC8BAA33B2802992DA3 -A721FE0B5717181621A0161811DEAB802897A06B807B2035297A7A419D3D0998 -B30D68F6B4D586FF370A0EDED183A45ECF4C517B786A67E15FFE4B6A83CA0C8B -6F9A740281F668009D1918BB427D1B34C7355EC2D4833778CF284A21A753EEED -664A4F84173CEA11870081F1628850457EB8AD54823C01DF2D15A1CF4B33E0A7 -4B3F3310011E6625CBBBB8E775A650F0E0631F8897988BC2EFEECB8876B48DAB -156CFD14BBD7BDF14489A025703DACEE33A25C9D9E552FC10EB121BD990A093A -D9BDB0334A8396E6B58E9C9285F88FB9E4E990E347F532AF0827D9F0970FCC93 -6D17A43BF518CDE57DDDC9FA18381304AC09C7E255F76D26447A1217C70258DE -6D3078E3128216FFC5EC01A82BE8D3958300065A227F77D236B6067222E8CFD6 -208EE7ED58446D94989279689241038F67A891614078D312E5F90783906578A2 -C818ACE8990471741AD58A7CF126C552AB44027B6AADC2501AFA286B5D65C7A5 -B6463E73BC9E888A0B231351F9A90E5991C4F0E2920107B3D966ECDE01763FFD -DF9D0635327242732B6AE089A3D7FDE1742A7D74BD0749684602447B490BE0EF -E01BBA07497B817CF0F73D4D2F14A1B29505311D52ED90F0812EEE440D815B14 -CE44F3BCD5EA5B822073A775C137A59DEED383F80C16CF859D8187335220FB73 -217A045C39B0C3C6661A4D536880DDE06366F403F27DD632BF659435E2411A08 -C30016C471B4206531776F98DCCDF313E62F08E93EEC8FADA4C6B5EB22D5D832 -FBB0DE8BCE851FE3D6D70504242B2E720F74AE49F0DE3CFF787E9CCD3D1502FE -1622E86CBF9088F3B65E844145C879B2CE74AE24FDE843B657F9B8876DAF23DF -81F133F5AB4652331126F0ABF1C2CA21127CC1062C06D1C430A12740DE92A00C -B95A50696164F5AE380C643BBC7E4982881F17BCC8F9A8E3B5E38E6F4E32419B -19CD0D69F986F5D80B7620E42509FF0A3E4EF0D7826E543D0D8D80F3D3C0A699 -4B5CDD02272D224A0B02CBADB71524EBBA68FB57FE024A54B9DD7A74BB6BA892 -EC5241A5C20D5BDA591AFE863BFD64B63F02C77B74EC2AD5D39589AAE2245F0C -90AB09FB11A832F0791FB9FD8F892ADAAFB519BD8EE3756E6A5E1FE67735C694 -08E7996275F52F4AFDB24FD73E8F5C1B34296D4F41CF111FF08E88E3AF691122 -F196D4DEC545F68C76A68E4DE57C2CC706D0EB631367F288A4077044979D9E5F -9EEE710C2130FA491D114A742D3C0EA68D50AA44B88C66EFC1F281AB320F2C8C -800B1A4A4708B96CCFBC1B4726787096D3018AA87B2DC422E563BC4751D30E2E -63554771794D0F4F055C20F20ED3CC9E20ADF726A6C5E84D7743B5F0FA99A0EE -4958B8D53948E195ADDB8B8E4F40E387B36C14806025A5D96DB4F6B9ECAF177A -1A0492B360759EF671DD4616E25746919511057F40FE14F69E4F4BD67BF11EAE -E89026AC1DED805FF27846D642EAFC51E37C8E94C6B4141170988E314D8988F2 -00D56A9D1A89D3EAE006C604060B43F328A08DCA73991776A314C20441FAA4FE -077CA7F6ED2FE421E90E83ECEBBEB42187DB5D3EB5003A27D69DE33C56AFCB9B -25BAFF5F4F03E8CE5AB1A619B5973FF9FA4F0AC0DD867F7C0682609FFD7F10F3 -B7E6ADF7A62368DDC8E4CA4CEE3DDD15F02281672E41FD6C2FBB00E08EB201D3 -233E7AF3718BB51996C5EAA6B848E1076A825D8C5B0CCA4A2852A6C9352137B7 -D40F18FAFD9085155798496DE75F33E972B040B6197692E3E6D43CBFBE9FE71B -700B062083A2099E74D90F3E05D60AC091D0EA1B4C17F383ECEF98D6A50B1D91 -A82741FD6D9AFEE053B38B7CE59DD5F2782B5B360CFF78A09DC6C2093FF58127 -CD74355F7FB083746618FF6B61ED1E12E07582FEE7C78195C625BC7E90262C52 -8FC10144B4B6F99303ADDD66CCC93ABB0387E1E61C90CEFFCE16DD8CE4F6B6B4 -4F7ADBB0111456B7C2DAA99C5FF8B04FFA77DBC0D8063796296D8B8700544437 -0897BA71750E947209330045EC9DFAA919E64BCB8F1B56985D15DBA491E8E2EA -14FC8B31CD552DC96FA440AE98D04954D3E7E5BDA0681FA27F32F9BFD5D4C365 -128BBC8AF47FAE2039F90D0F30D3DCC141B99DDA8151E0DB243E6210A1835CF1 -7154C96DBC2C723A7576580747AA18452EC87ECC2F55F41935C8FEB80A690351 -5D3F3E67970FA93DBBD626A519EFFF4756B33641F56F7D16B7712FD09C726572 -0932166A7BAADA3B47E725D74564A155E0BC1CF8E5BC05F2D4970ADF60BFF161 -01F6E31EF577F8FB7560B2CDF775834A2DEB6B337D096EC2BDF113ACF27E2A79 -6E670C2F1739206DF052D43619D20461E52DFEEFD7A7A7F31690B71EF062EF31 -C9FF3205FDBD1A2A3DEA550BD3B6373C59F4CE5CB845F9C6297FE5641EB90231 -D4F6A2F919164779CD527F1C142AD7E47A63ABC26DACAC5C278EF4AB6B4121CF -793443E1E171870E95A2ABE098CE0A147CD373660BB20BF4ADADEFF4642FA1C7 -398796EA9FF642270D6176ABF5DFF5BB002C2C01A9C42DC3FBA1453B6632AD67 -A7EAC9074CD11D2CD46675DA0F910CB13BF42A155DFA30FE582D4FB19C6D45B1 -2F3C92947A8A2B26B81CC97421A1F5946C42171675F0A19464758E0D64A9D324 -3E3C45CE9E556FC942572D4508485E9543239F26C084D0D659D5B301928F014D -D8574A69D9046A2A4FBA6C993341C118E0AA7366CBC7C45EF717D6233B9D3F19 -C46ED705D06962E80383E102896587999E2A9F04F020348A0EE5EE61054810C0 -26C53DFD608E885B6F2F2E2AB9E8FD67E6057D42440102D5CE2AA06982B16A3A -6A9284F59E13EFD3EA8A5B1679864E055A8783FE74E4B2A28C5B968401836C83 -0B94AD89084B0A31B577E1CCF157851885E41FE7FF0D5D218EAECEE2D2130A32 -2FEDEDEC8B9F9223CA33A47B8CE042DD7BD35B5B24BB9F115F5D5204BCC0857F -CE329655D72CAE8C8E15F53740727441F8B2855126BBE70F144E989C327173AB -6996AEDAC678F5BDD16A92C2837C4EFCDCF43804BD2A145DD54170B0941BCE81 -A17771E520388AC4D0E22D6084BAA83F1F4EB1D8B2E0CB84954EDDC8E9B3A616 -ED3A91CEDDB972848E83E3AC3ECE3BA865BEC7C96A4586955682E4680B4C2364 -8054ED58647C18A3CDB8AF5C736C1E5036CB7A09CAEBBC6FA47B698DDF0AC81B -2407B47FE67EB74B7DDAEC1AA8F0327BB005D4E375150D8FC69444FDB6D7B68C -39CABE4C7A0FC3CD161843EEFB1A3003F109C7F187781E19CB060054FEFA21D4 -C9778A937812E8F06DD70C56424D57B4441A8D118769587B1E49F090CD179081 -3C33AA3309F3CBC69108104C7F68BA89C8C1D503507DE3A2FD2C81491DB1D511 -9876EB1AD7E66FCCC675DA4BF25F150BD3D0F622AD73C6C805F3DA6B265CBAE1 -83AEDFF42461D63EA338502AE6261988068E1C52E5EFC5BE1D0E017C2AB7FF2F -B27E42A4A7D8CE86CB6F36F7C218CB880230EA737CC971E8D70825C7520E5E33 -C2110E3E26F51D30B8F058228E5D2C45966D9107725141908E74BBB213339E7D -7437EECEAEBAC39BAD6A5595EF66E6B4BCE2C565596B0FC5069CFC1CF8B39600 -EF3B2BA9222991BEE9C55D4434AD761684DA2B61EA399A2B53A2D2E89CEFB6B9 -D3606854873444F53CE1A2230E3836B1DD652464551AB8ECB94CDD297C2AC906 -35B980680E12A891D6F39DBB7DCADF853394CF46FECCF0C80D8FD0A82009256B -22926139A5CF6A06FFE6F4EF6D1843436DA4F3F2ECB504D3C91961DCB8F78ADF -6A8D05D40225E125F7ACE0530B28BD86BEE2499AA4B62FB53329AEF6D66B1428 -6731C3E6A5AF5926F9D407E9999FCBF9580627F25AAE06DD34BDA8CBA179634C -8558B9E23E3CDE30053F8763BC64CF595B25E8CDCEBE15915E791E7387A2F979 -20A0EACC18A38055AAF917E6C768981BFD94380D7C33EB04086236ED74FB3B50 -56B9892412BCA67DCDD27CC508CC94AD51F7FEE2D6133BB310293BA9E36DEC27 -E014283EBB9A46DA887CAEC8B98E64F9A4441D254DFB203D7897FEA54E8B6A95 -2F2D00B75E4AB45881DC1361C37AC1031AB89F280929DFB9FA92BCD87E065F50 -7D0FFF1309AD49D259D59AFA825F892EE7FB303DE51AED493436B5B0BADC8941 -D5AF414E47B3D949C5411A47E5872731E797B385AA807D2D6651A78E45A998DC -21DD8B1F94370ED46CF165915E884537DD1B64489BDE456028592EF0C6041E59 -DC634B564B96B3A5861497DBEA1F6F06EBC125E74C94BB85022343A2BBB7B725 -C2AE27BA791FA69EEFF1B0DD3BC5B80B7CF56B52729BAE6E54810AC9D00C29B9 -C9455F039CB5EDAABA887F8598EB390D5D28AD387F429321A8D5FAF61BD8DCA8 -A25ACC7130C80D9EFEF633D47BA80022AA9CF477EC073D2FC3CBC4D685CBD238 -28E9E89BE648DEA20B1467FCFC4838141BC6ABFC046C5A80C250663637CB356A -B58080178FCF7B78E552415D071D11625081AF4708E78D843737B7357E638DA9 -501BCEF113EE961C84339E91202E5E2AC57BE8C636141F03A9CE8E97C7C8F374 -6AFA335DCE0B6B68C7D94C1B6D0C73DFF832580B2D1B1193427578DDC1895DC7 -1A9D8B9CE3157FFD118CF111BA33F1FBD445DBEBC1D7CDA5713858CF4CDA224F -38201BE52F2947D08F028378E787A2837AAFB1EB738EBEF4EBF2B34BCA1F0526 -8295CBC517E30CE49B86F196C26D982FFE650BC2B276583D716D1DCAF24267E7 -A551006687684174D71D920D7C1E2FA12A7C8F6B5CD4E77942D6A96A112070A8 -BCB56BCBEF93A1CE255984B93E92AA8854690A8AE7D416450869534787FDCC5C -23AAE383E05AA31581E3F2F31531A41F516DFFCCA33BD147F100CE8C11D3D3C4 -CAB8E10DF7425F2FB07B105F60BBCB8F7429201180B4ADBBF92B992038394E5F -346A7D4B3C12CD9A2A50884D1A465BCC81EDA8D081108DFF1D8BE67BC9C39812 -12B65A712D3ACD7527976CFE1276BEFF410D08043FA52A3EB2C6E363D5E86D24 -3D464A688F9482A7937D9F6F468B2ACAD117378FC99D98238AE59DBC628C2EDD -04B9D0A1199A8979BDC68D0B820C22E65937CE89170483FDF9C4B3BD8B17DA90 -377561E6D1F40ADC6549A5FD336DB23AB4852E4B696DD1DF77D9C0F70F61335A -811EC0B0D8D9C3C37CD98A906F5A2B4489C29DF8F47FD4D3E8961458135F6AA6 -77EDB4F176F23CC16D18FEC0B3911F6C75AC0909D42974887641F376E5B3EBE3 -B20B18FF22225F0C21F795D202B5F942547F427617618993AAA2B32A817F6572 -69B1FE76FACD292337F7F1432236C168A0F0D51CC6507CA9D7C8F77C784C50DE -BD2DB783C82D68EBA9943D389E442D231DDB44F37C185B7957B623E2196CDE38 -7BBE1072868E5D91D6EF1F06BCAC2469686B7155FA86710AF9513641E0F8E260 -464C85B44E51A7C3FB93F99465D4668F996643EB238E3E550610246E00216666 -A49A3FDD0CAA12DAD03A3F6222E97CF41FAD4AC3687CE9311C742E1E7B4988E6 -F6CD130CC8187873CD106317C2217E590710FEE707DA5F2DCA5D913344E2E499 -74D0D0C519DFB8B734EE6CBDA83B09AAD538CCECFB665FF3187EF0F649EFF80C -4498A585716BCB9EEB79CE45FC74A25D59F9F254C0F1901A655FF43F72BEE91B -123E2CC86388FAE4E2B00C53B6137C649650D097763816B60ABD8ED1DE810EF4 -F1A080341F88874B09C1B0693653566681BB35553CD0BF07EC5322228555D459 -AC9C0E77D320C0AFB57FAC1525347AE502D6862897B7CBB9C35B7799D18EFF32 -6DE271A2C8D8B7C0929E69477A77F37858ABC14BCE690230AF617BF8AB621689 -D2C9676B355C672EA4FF369617DD0D36845DB212AB7E35FA521F8F2309228F8A -A8C47A01259D8E4B7AC730D853357689F0654969C4FF6E8CB5331710735672AB -CFE17A87DC58953C778736AE0CC5DB0D7CFE41AF06EF6DE0CF11B025D85999C1 -AF52A405F3081103D5A219ED332444BAB77D418B6080A7A4A932000009A60745 -AF4239B9E19485FF61A1FF624621718A798C370AE385F6F30CB522ABD981278D -A771E952399ABFA74DB1E7505ED748DF4A794333C135AEEA368AE4FB80280565 -09BCEBC737FA30D660117415EBF6D883CCE0B9B52562424D2B874B1B70787222 -BD13ED345A6CB186F1B3686561D4E757758DE9E3A0B3287635BDDC69A3A33F27 -5BD1C166309961307C4C3FDA4D8BDE6E08D03B941FDC40105FFF53226742613F -A43AF882FD2D142187D698B81571374A3EA501F6E6750261D2AF3C737532FA87 -7988FFAFA6A95706BB79E6D01A8114E48DC93BE207CA1037D83881F29591DE1C -AF9098347780DC77F393469C7012C42D31A1D9CE4AE2FAD4E3948E2A50AAAE30 -292BAFA6F980DFA687FFBF8F72B4A0DA16671AD2CFD65DC351D3FE3AF51D666D -3E0D56B5DE2A0AF4C432243E37BCA75428F6DDF078ED501F9190D1B13085EE00 -C65067368012314DD1CFC7BC946F626F8C1339A7922FE1FE7A69ECB6DD695FDD -1D988652EE8707D2909C5D8E0CE9B4998CDD755044450F314D760CE3128CB512 -F852E26DF056F7B5E3A2A54DDAAF6351193DD4BA2923EF40D6388324AA7913A8 -49B4EAB2E6E552DE7829C0CC6FD60C0F9109411B9EDCC8ECE40E96422F0A871A -8B2EBC60F3D77F9F25802CCEBA7418E8C1B9D9B9D64503F96CAC529082AAE772 -2B0A0A7E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 -0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F90A32C4175B6BFB279 -024EAE1B04D721A6C54FD62484F8949B2CE9B87D9CEE04DFF82BF14931B3CA03 -AA5F701B6F80BBCDF2C427C40A51597F0B1BFA25EDD7CE0EAF2EC676BF0059B7 -15DD5462BA30DE78A08DD533DC0E8D85F9DAFC5FD842F417265427E0F1B71834 -D2BF6EFAC3CCC40D3EF3B2E2080F148441BA45E5D0C0F7D8416730AF4BE4FC93 -1E965594E0364F0D4F1EC48004CEBDDAFB1F0EE0A8222358EAC0F62E6BFA3C9F -46875EB4C999219B91E6147A49A668505667030CDF3495682B79C0F614AAEE68 -D976EFCDCB04127C0D7325A2211E49CD316935A0B472D1F9FFC68F7FBEBC7582 -036CB393016193A9783DD08D647E89C5BA4EFC8701BCCB6A5C027C4FA8644C06 -251B9E33FFEBB1B84AC4D4B148205C8CA7AF5EF97F2788EFB0B71473AD0F5EB4 -FC43F46602C53E53F5A6D1E445439F65967C51EAB636178FA377DB2DDE5FEF41 -9E91F3BEBCFBD3B4EBB510A0DF7F4D19C6552BC98F10E25612B1396020D7836F -A3D3C865661DB276E428F09F048A916B4F07D8FD01AC1942A3CA342B0E531BF2 -3E9A7AF265ACE1585E331A8F8B5AE06FF085C1F349215581FC7D68D16395D934 -79B3BD866A4BF33913DEB54B4D00ED5EFF3313FBD1C5E6AC430567872BD935F2 -AF1A3F892266CEAC15DEF43BCB83DB075A69EAD7D2EA53303F65E04C5673411D -EDFB32156120099AC210E623BADDF2991F96813AFBC1126DF53A0A776AF7D61A -6B42225A5AAC1B0AFDDB59C5922143A156EED76E3E1ED01ECC6ED9F61B5711DC -C5709EF5A3CED45628AC1728DFE98F07389777E04A7E407E3B007017C96F6EE7 -D0FCC0426C4D734A0B108FD2BEB48FFB6D107C5AB8EBC3584F13A40E5508AD9D -5A081286BFCE1D5DAF5F3D86515244B4D0D77AF9820A93B7C90420FF4B8D634C -2C5697E3E04802E2CD7B9AB8368F1A9DC214CF893AFC7BA3A8DC24B0E549E106 -F04530708DD03367D8501655B1501645F17E547C1C948DEA7A4814F22E2A1D55 -5AF16C55D6BB4EE9929C9CEE82C4D6A16D70D17AFBBC6551BB2C9D8B69F5DAE2 -5DF6C2187ACEB119EE6087BAF5E79340D115C53E710CC7E4C771F43ADE91D2E1 -1AEF7BB2E6C9ABED010A835514EEB6C9A2C93396FA12E8CD0B2F9045587E51D2 -7E059224A889B3E7620E57AB6CACFD769898B3955661824DD4AFCB9A7B218DF9 -F84B369F52E246723C7D0B26C145DA0AF81C83DAA091143FBBBD2A414114E34C -7C994D8401119D5A46856367EE3FBBBB32155A00E5314641288A6E1FCE47F385 -71C2F7A7602F777C11884DEFEFA560333458DD227E63F3FE68A762CAB0A7308A -FC59C9B293233DFA257E5D10BD5F12B7652C45C4C50F14F17E59A758BD7355EE -A89B1EC954B86642B87F814F936577429C467BC8E97A481ED15E2633AD73830B -DDE3DE50E1EC439204C7FE350C69494823725920719D613907163AD63FE83C6D -1CB6DA81A6C816C747542CA09493306B44A7DCE934B877DD356F38D07D3E0355 -CB149BE6ED646E84DB9DB61859F6FC45BCE13EE42458D1991AC34AAE6EA72320 -3EC6346C38CA87107618ED3C46C331623D8FAACC6CF9292B8F1B407806A0D480 -8F51A5BC97F6B26623BB96E862F0BD7A12B4A27290DCBD439BEF850C55DD9D2B -611638328F5CD25DE5C89CAC116116D672D62ED0082789AF7683DCB07623752C -A93640A3781219E10DA27B8787879A80F9E91AA3E1AEF94D219872981BC0508B -E768152E8C39C99EBC4345BC6EA518F0F902B8F62BE49099EE93501FE6243D45 -951AB62A48FB07A5CCC372B2231D05BD7D07D998954A3EE34986143698A5FC94 -F92168811860C529974831AAA6466CC73E69025AA522454CB788A8DCEFE75071 -F6886C595593ED37ECEA5C3F395CB55D32C04159828F58D003427C382778987B -35D8A4D2613C2FD1751CE461F181F60B3154EFDF2DDFC356B3897DD8D62075E2 -F2BC150C02B54FF74019C7654296A32DF5C14EB68513B73D2A1B014F8778635B -6A0D9982C00D068F9DE5C83D261E0C36DFAA57EC691AE052C37C05803FBF1748 -07351396B9B8DFFBAE0AA5B38E9954B4558BF8928350BF4FED69118897768C54 -2B7E6651C1A8473E9DC2FECF584990F967CC8B396E70CB2323E78EA28FAF164C -5B3E297034FADA9E0E0EE279CAE751FCCC300C8480FB228A480C612229FC54CD -F7EF109D8433B21EF2909661F24AE7B863B5AD13CBE62A1566F936B2AF8887EA -FCED2ABA9A561C49663A1E25BA427315299C68D08586CD27458E0BEA9DF1AB02 -A4163647D20399503BC1B62121FBF5D6A7DD66BC012ADAC610C6DA9BEC03FABA -E7338A6730ABA07D6BBF208851B58A1E90A78D07E841F32F694DD61F7AC3F756 -4357E19B0C9AB1F5719CF3902C1A9CDA56626D116D8D79C37328292EA826420C -46F6C2AB2287118101C955FECEF867532C76D99C7510BF15074B85D47FD79EBD -DFFBBFB40249FDB3D967D824E94EDF93825F9305A5863810A5ABAC136CF6828C -4E05579F341EA27AEC4F52B9124BBF8D83E9D2DCA1A3DB4BEA5F1837558C0585 -9561C081206101E6A226A09952C33648108EE10572BEA309ED0A3626028711D0 -E87AFC3BD3ECCA52D35EC502DEA9AF8724677A419918881C8CCE7A4D1FC16584 -A564470B0DB5490F6506BAF2C883ACF77436A4D48E27106BBE9E75B71400762F -37B814A94A6A9923C62CB196CFC9BCC1090842A11AEC78CCBDAC7F83DF52F59F -02977A96F045A92AC2E3A08DE307301A89D8046F0E46D483F59073B92F442571 -A14A536EA7675294562B550CD056C9D659D4AD0B451A6108C800758CF9ADC362 -58048D3AC7C82915A4DCBA00257695018828169099C58E212C8FD68750201EBE -F2674832C450C18F0620C01965CB208ADCBF46AB35C2ADF383F9D51DED351375 -A1CEDACF8AB61A41252DE6704B222E2DE14452927631ED28A7F9DD2806CAAF28 -2E55CBF63BA707DABE48E3A180039014EF14B6DE8230AB2B85000B401AB04C80 -0D4D9A62C5B632A3BCD13A61B590374601A6A92529BCA946C031C3CB1E48D580 -5FF55170B88F57E175B42EBD02087828D586321B5AA7285F4CD091D823DE9EC1 -6D6119CB6E80A8004F7C91A70BE16001F0817F6017E1C3B4063A3CD11A153EF7 -4C60B1E2CBDF2C806FBE518D0FE1371B3C8F28AE4AC8C8F3F2280D451B36DA99 -351FADB8ADA025E02EDEC48858E3E0A9A6B7B89FC43A25E050D62C2E5AD318A2 -CB0068E95E2A8F360161B634200913DB5DF7153B2BE0A9DDAB90A5A8D8C01020 -DE20C1676BCAA8E8759204D63588B5E0E9A204C1BCDA3BACD8BB302743F8C79A -B19E42ABF04CDC246847E6BEEB314A6C8B4E75DEFFF121F8D3E3D7FF779D5831 -3D20CEB655AB93E01F8A2C9F0E0B4177C7849B84239F8AD122D30A7F645DC621 -F4E629D80E04A035E235C61898A37B12F01DC6DDA64B42F5CB678E5177D65BD9 -7C6CE064A9D668D18EB475171EC2B9B7E521DFC2921E6EF1F9F16E7EA97E4FD6 -4E55038CAF07149CAC035790A4B5EB495E254091B11B7842E9A41B6CB190A9FB -CE474841BD42E49429264E7CA131AFC7671C4BA08139D2DC3487C09AA8DD789D -83C575FE71B12C22D8C8886F79FB423AA1ECDDDFE37AA3C8511E5A56A6932D53 -5D5A46119BA1E0D430716D82D804A6C84E0A57EC1EC700369DF57C53B1722C96 -787BE06E67A2074322A3B002572DF642C6663C2FB7197315670BEFD4306DF25B -C318FDD843D81E02510768CD729D87E8D8C7DF4291E929D46C11CE1447F631CB -D6933AC8CA5DB74921FFD5794FB1ED54650F5A257AD6E5ED58986AB161F9694D -BAFF7F25E3D6B1F4B2E991DE634F1EB1AE609874C80F9A60D48AE0C3500A9A93 -13C50FF156C5EED1FD89AB4576483D78664517D3E93DA13B7E9B2227627338EE -A25736B2B3D828DD349C1CC1A539BF64E3C687BB9CE19078C730E1B5A728FDD1 -1E965BAF73C66005F22DECD760D7881E195DF8F6CDD47444FA9C0BFAD7DA0B69 -01A75DCD0617411ED8E55F059A4B9C1445EDB2BD23663732A4690D5470A76DB6 -43313C91F86826692BB066148382E1BBA4B2304CDCB7CE89E9AC1474207AD74A -6748AC5DF5511E97606CD2FFA73CA34FEEAC677D2367AE7674E3CE45C3F85B12 -0150C32858973B0D2910E809B1C604F7CF60C9E2CA7D8B51D6D1720EE7D8E284 -9E4B9B45D71CC19633063DA34DB83544E0AE7F96F122F9A43BEF88B5C385614F -7C7F68236A69B2D50BAB3CF3D4330950CADBDE7EBC5CAE8A1846FFD70C97AB1A -4DD634B830F4BDDE46541D4DFDAE4916F89DC7A377540898D35A2EA808DD8591 -CC88C2939FC879D30FAF0A81F3A1D0CF7B77FA2E09CB393B3AD4C0B01834133C -0FB10F0D5C734A06DE16E61C05D61DE35CD19102358A4995AD59AC3F1C1F45D7 -9735C2DC9B6FEA6B7F797E96B1C49BF16A18323EAD042DC040C672FD36E98C0C -1CD16C15BCE3E79B155DB1E4486F29652FB8731DCA35F4A3E724AE5E8DFC4DC4 -F5BCEC9E9E22BED23DEF93115C3185A96A8DFEBB98203DE7591E5111BC8F160D -31770E04B71F20467F81F47B7547A97A05B19D2868DF5E9F69364C3629DDC77B -E6AE409B4A3FCA29DF18C8F26400995D664BF1A39F61031B7F3BA92F017F40A0 -F542AD1CD9B9DF2782AA91D77CAE7992A45BC70D58882B64318B026D686BBF37 -1611483C5447B8268B47D8FECC3B6118AC480156B8A083A8C3B45534D6525524 -CB2F2A6ABF5252B2C5007A51B7E61B833CC4F76F3C9A61304347C30E4206EA8F -D95BDB83125D04A4988A79680DAC28A7BABCE5BE7D449DB54EFB9482F5A5C562 -F2D23F8A759110E610AD18D8B55DE2F86E2ABCA985738F25892D6E40AA645C19 -16A308B8061BA570D9E2CD5EE7A65647BD6E384324D1FB94EB723E4D84300FA1 -F042C92D9FD1FDB36E5D5AE68BE5D135ABDED7AC0187B280418638B0608D243F -33E44B3339B9A25420BD4F93394366259CF4629E52610BD350D1646399DDE7DC -9E26F8813F1E7E517D298DD6C35014997DA7C726568D0214428D3E297C132E2E -525CEFAE85ECF165530124C18AB61F5B6D3E5EA1909B4A4019180DBC1226CE73 -5C5716589EAE3349112B4517E72833771B31896ED628404307E642327B07E16B -B46A3E58ED1C6260176E887DCC58426A9ABAA9F6BFFE8B15E4D1F706E924521E -C83BE148DF4EC7AA155F48F5FED1E0088C9B859D36A3D14A8127DA2C6FDB1CCF -BE5E5251EEBB1524210C506D369B8AEE6319FACDFBD50EDF42DD3A1146A98258 -37ED2DC1F34F564DEB7139260EDB0242D5D1F968AF4FAD42FCC51B0F7E7CE276 -AC47511BF6DE9E1DFD14D89113AF2FED93E0DEA66C8FA11E0AF8D7554E935550 -F90AB7C39FC72AE2B979E93366A4FA17EE7F6ADE1BEAF71D1BBE2A229802247A -4109BADAAADC1F6C237BB934A886BE67BB9152551724D4266DBC0AE4E16AF900 -05D4C8C3F165E0AD9B57B7DC1CAC235CFFB47855432ABF70F7B0123CCA859C2A -55DF06A88446C71ADA559540F0375D2295559BCA85EEA4A996C2E58DA9EDEA22 -FD3E893637927CD0D975E5056ADC519F591B3B766B6A74F325A93DA4A03BD01B -FB614A0332C634AF3AE101226C2EEBDDE185FB1B211A134F049C4EA9C78066A6 -598AEE95EE2EAC2FAFFB7ABA657105854E8422F037C4C6EDDD954B13F378906B -E34ED3D8FA6FC0715756217BFEC7B7A5F598720940DF9E0CEC10B7890AE01EB3 -B9C687ACE674043CBF779ABC5829DA7AD6D6E42AD5E5DE77F3EBE69C239C8CDF -17EFA0A72D656BF886323CB93DD55FA1FFE7B15782BF7CCD8C393EA3670D3DCC -ECE6B7BF47308FE26F23C9EE35CA2D06600E662B38A21B49FE6DDF55734183DD -1EB1EEABABD705117C660E37F7C4B6D6FB34AD19C2855CEF032A83ACBB4B4051 -19247698CC98CB602E51D6C698F25F8C59F57F2F845DE327DFB89ABBBD962057 -84103467E0236BFC46E20B71F3A0B6E7E5C7EDE5096CCEC89614FEBBFFB6F3B3 -F2D8E3F9FEB96ABCB698B0E63AF2D18750DC6B9B73CA9AF04D591DCF873B65C1 -4273BE308E6D3B691EC68EBBFE20BF423D38C1E63C591A840114611A6C4C6044 -FD9B42A8B941C9619971A84164DCB6297A209392974E85045F55CE6AB2FE5905 -7CA258456D40CC53B53EF5B145BBF9202DD61E35026476F816297976CFDB917F -A2ED96478EA7F251C06559A55428D8E5CB4ADBCD10B18A9B5C19F6A5B32E8216 -59096C655531F4EC1CF88897B3E73EEC721184F58D6922F9C2901B687A5F3EAD -2A92D0506D00DAE17332014ABCC3F39C3A3590344762AFF7C83C096CC3C471BE -30A0E03C368C52ACF36406045B52C15A9F924F981E1EF18E844AAB1DD8F14FCB -33F3C820BA3D0C29403A480C33829E515B046AB571E1B1B69FD2D2C1617A9903 -B229963E2B2EDFEF0AC90018E750711AB6F30FFE728825F2F08274BAA144D5FB -85BBBD814559DBA0F746125DE106363A4871BDBE36F75B89B6E51F7326EF4355 -DB7EC080F6A8FE54BA2A2BD1B2A733B46B704362D2FA362762D37E07A07C2D06 -9DD8C345108EA9293EA0B7D5AC073F739D081B3878BE2FD6EFC662111602CD8E -9F936DA499E09AF169C1A6F8185DFDE4F812D4C2C5CCC308EEC87E0B782A29A2 -94690E173D7158AA622E84FD961DCEFAF3A1E605AE8BA8E499D605710DF1218D -15A0D4FDB1BFC1DE0E7AACCBED8F69618158F5A55F74DD5BD0D46DD2FC969AA0 -11F42111FE7C1C45E10075CF04EC1B40A75487130BFFD663F12266581FE3B7B6 -97CD203CCA6601357A5CEDAD84A56C918561F7CFD21496A003D1C0CFA348CA68 -5E60F8EECBB1C0B28BE0777AE54F79124E2B45BCC0B457CA50D1BD542658C82D -BB9BC364241F12DE80D9197016550F2E16E4D3CC7C136FB020C37763C8F45558 -E6E3E6C5F50B68035E9D7A8DBD1FA6C132DE6EED1EAC290DA84022D5CAF6F63C -5B846156281F1274BA26A18A4364C9766425181EABCA1D1C30C44262C3E318FC -CF982B209C3C8A2287F78E6C13126D15F6E01D713CBA0567987FE1E40C7AFA80 -26B0996CC8D3832E5F15136ED4F38A94B08533F77C639B1A6C36B044382E9318 -BE3EF27CBC4F3FF095ACF22EE237B1B1207427359FFC298CE8772B4F3C91DA75 -CF78FB0F32B9270379AC52546B4FD55D5F5534057FAD104C8D9086D732B102C2 -C760E67CC118174DC431140E72CBBCE806DADD62F32D9DC5B28656912AF6C421 -9914E7A55D2F9050EE3EF10F1DB19E6F9CBD686EEB7AA20BF5D805ED4CC2066C -AB192013B1EC1455631A62B1BD379B923445FACDB242F238B55DC89C11FCE7A3 -F779C34D94262C6771702C32B030E5C27ADB2A137207A2744F03F1D431E5BB48 -C180DB065F94092EB9791F951AC802E4719723A51039B2C1187415BEB8CB6825 -E756CFC336527039C10DE521F097B8A116A760BB28498682049DB6A677F8F198 -AFA1AAAFE6297B03A290DC022D14363912918569F633F236A3395A13EA6F0C66 -7A5231FB79305DF854CFC01D870FAAFE6746D6CA8F3EEAE43C106196779C185A -8EA75335ACD3E57B209B1222BEBEE5783C60594AFAD59009DF17A90A69F1C73C -B6D28AF7F578B26D4528C503C3E0752BFB32A46CCF766C8AE94C53161ED6E80C -7E11DBDBFC2E851B9A6C0FDBBF53BD86D81AC53CAC82E4BB2B0C3B0AB65F5045 -9D0FBC1393FAB38F4DDA130C7641CB78D4D7DF5C4752CB8385EFCA41D4279DB6 -5F107D970A6F0BF9E1199837B134848894314638080D2D9818E953ABF485AA4A -9B168FFD567D4A3BB4D422232F7784E6654BB78105D3738E01D4DA5B3A8E5BEA -65B6B9651E3DA567B898931A0B09B264CBB038A5FD5B258693E96102AA1CCE10 -2111FBD5BB6A6BDDFEE10618D8D0D69C37C764B9B8AB75B41469D39C66297E7E -9437DDE52A15474015D19243209DEFDDE03294791ED5E93145AEE0AAA6A8D885 -F2DABFC697C22D1D95BB88CDEEC9BF45E9B72DF12A6556272A9ABAB51AFCF61C -1B6D91C6301CDE51E8FA16F7C190455698001AB223DEAD7D2D0FB85B9851BFD7 -659F3FCEB58866048351345F58A100B00769E8C63728FA17E884C23166D9A449 -E28758E1C71D67F4FE8D16D4E6E745911D073ADF8E53E4225C1000F23294B89E -1C10C6B5B83D221E513DFDA1B62979C77F04266B0119A63935E0F1F84BAF02CE -67D3390043B43A56E608D4CC52C8B59D981311A6840D1F7020598EF125992915 -75747CD5454B529EA0BBB03A523D8F0D781D4E176F3964FB5D75F7A37CBCC7CE -6BB8030D6B0C32CEC3F122344EC441C3EA0F6EEFF0D56326DBE6D01A34689AE1 -4CDBA14449571C2AF99A37C57E906652E715C45DE7A66D0A8FC229BFE907ADCF -9CE416260E544E4D74E619BC2AD70FD57F7E68D493CE3A7E3BE440C393E8FF83 -8D3C1E25438AA078CCC9C96C27C63FE9BE72BD7975CBDD1EAFFE785B8A8BE742 -13DC52E10F7970E84FE8FB8FC41D8E39835E8634CC96648DD081F0DCA956DDFC -D2C692F456CF629D1D44B58CEEA2293C36A34FBE15A5B7715F02442E071C5C4C -EB125BB2AD24B8A7B250A90B67F5C067B0693EC61878E1F06AA60CEA3B4F473F -359302F1F69CE358D820009C8F0791D2CB3D5052168528CC4F1B2F76C4ED9223 -67B7F56F90D8D3B0DF6F9C0F1E4D8BE26CC0313E64873FD3FC49916558321F0F -B892C2E0209827211CF344CF5CB8D39B89EB70C2ACA9CCD0800A2197DAFC2BAE -F298E0F5482734E1008C639234B1D596829A3CF328C64FDB960D2776DD3252B3 -973016E9CBE7472241901A120AC3C7B13D5D695F8C5373D38E7DFDCE2CBABCC2 -D41CAC8A5208BAD2802EF62ED68637B739F15B6E43A1C6F1C45C3D5334A48D9D -BB0887EF702555CF915DCBFB723126DC8F6C6C594001D31DE3E01FDBE324D1D1 -828CB0176075842E32C10DADD3CDE2747F0E3844DFBCC1510E17C11F3EA8FB95 -B92683A989C56F69D8D5056FEB5A0B44EC349555AF9D998170A1F4AC71C2C088 -09050E56FC0DEED55FACF57B36DC4CC3D6C31BA9BB312E4E01C2D49A56CE033B -4A2AB13A467C0C334345D236B477A5ED1A2CEE5E77C094F3D6A7944E0B3967EA -5245F0841D5F3DC306BD19BFF5E8C05C2DDE274BF5CEED180B6005BD1E7F7D19 -953035883A4EB02AEBA5D668A7CB644190E90539DC5E988AD288E9987773DC33 -C259E1D1A911CC524B28488420C8468143F47257D8125DAC6AE0926CC781B80F -40CB02D2251DC44984AEB09A31221E0A95E028204D63A7D3ADB63D2478AB86FD -CE89910E0D82CE92EA4DBB0B45B6120A94A87DFB5928D0AEF0471F9F747A2FEE -D3800AFD8DABEC814FC18579E6E91D0C8D55BDA07E717F2374931ECB563D275E -170672538EE975F144F994FF1995F303B897167CA7941A8A4E464BF4115642B3 -BC5B8393A221D381E89E05499BE7B107CA4B067E0A3D1749BA3ECD2BDB4E7483 -AD1752117947400959C53074E2A09A4A614AD1038DFCB105A620E7B5473570DF -E6A3F92C0425D4F484E2B4FA8A8228C8AA1E42369827DDFCB6C2978994153DE3 -5D8DC1F3B2B3633A02768433C2D414C2034E81A44ABC8F25C41DF741BF27F03D -CE9C6FEB75CC041EC44E802514A81D9EB00C27878DFCD7B06CA5E4AC54E8BFCF -DF88EE81E6461BB8686F667468FB76B2702ACC81BE90B2FCBB20C13740652954 -A89D08D96BB441C41D3ECD77A882DC44801E3393653DE8F957608BAB66A48DC1 -3CCA84A7DA212ED5C2D5BE701E53AD799F5D9181B345CC068FC56931CB6F5B59 -55837B8636486DACB5340EE5C1C1FF281C8282B4B395C6D6F962078AE6D1AAE8 -A42575A1AD2FE71F73F3DB3EF9404D1D279F2047306877A73FAD35B511C5B28F -73824D32890E2FFD50AA238F7488E74D33891886A27719818EF42C2EA6CA1A2A -394ABB47F6AFB8F9FD719F73C6EBFE66D69D3FB0205ED5C7855F0986A6ECCD41 -8E6B90B9D4613BD0D1086D8A3312240A33EB8F86BFF88CB88EE93BFB69FA0155 -FD8616B823E49A398EE3E8AD18349F09A19C79156A1E5AA2C11E979FB3C443D5 -AB4CE4E715567D8A08A89E42AA9D6766F2DF15C9945F4470197EC9C77A5CCC90 -51747E361C8F0A7E20E9CC6F55EA637D17F9B7F09C557B42A4062ECF9733D00B -301491F04153520DEDD72BEB160AD01E42AF44906E560869CF32C34F5F2A00C9 -B11AEED61B96A4F6580169259A8C512F7BFF30B5326633CFAED5E57B04867BFB -27CD5AC009D10F95EF86168A71F0ADDC893E56843B244C13E816383E8DAE3B33 -EEE7E2B57D4F4EF802FECA10B7868B5AE65BF86CC69B9184930753F93634A391 -BE366DEAD431CEDFE41490B848F9759ED9CA10A65922D7DBCA3156FEAFA799BD -E5D7B2710F8656CDA4A6049FFA2FD625C6DFDE319C40D26A2276C9AB0319B708 -06B422A6BE6064CF28C53217EABB03D2E37B6187AC1B6E88BDE9AA09E4B83BC0 -D835920ECBEE1AAD0A1BE1C1DA7B8CE4C5DCF153637DF49F6CF0B89566137204 -E3EFFFCCF9F4F756C9A28E54A644624E61D10C666972ACDC1C1CC7E372C9FFB5 -7A094FB2E32976ADABB9927B844BD52F6AFF498C832F6A5A06265FBEDADAFAAA -8559D8DBA1DA76422426E857CE8E77B3CAA6703345D834CE79B42BA8B0849AFA -5E49F893CC90E9C376498A227F55CBC606F9F1E3A92F33CB623CC809F68BD4E0 -4F8C9FFF1EBC88513797125BC61F15D501B9F5D885B21375B822B0B9143E165C -3CF5BF162B260BBBA8494503CECF8C1ECAE710D2443980C4FF4D25AB688DA89F -918FD0F8739D6EA3CA9C33DCF26D7AC3ED84C9C349AFDB8074101135C4EE6B4C -648DED37E3E001CBDAC5C235074F0BF7867A169B9EA7CDC8EF2F8B00E463DCDA -DE329E8157AD7ABECB8495FC023BDC66251E03E0E17888C02296AADD9E7D5D17 -96BA18F80FA072A4217D8533FFAF50F03B8E6E0D78C8DE5F86C9A4A4055EE1A0 -8A2934205464CF4A2E5AFCB513C5497A2F4B28EC779E64625EBB3BF6F596DA3F -5BFF2F58866BCC2D49C460AE1A6400D338136CAE856735CBA3FEB582B05C0A0A -2244089C177551A292606BD0A40D894B493B184FC5DE2F94CC7DD7F7ED102220 -91FB35FECCF743E5F4CEC5B4A8C6725808D6326226D89EA69EA8F8DF80DAB46F -89E628E54F3AED60AB497A43E39EA31A53BEA08B734F1476812522BD648AB450 -B519965DC8313C8BF6DF5662367838AB9D681C1EF07480DE14664B79A86D19CB -46592158A7D186D5A545C78D1AEA8DC9925A92C03BEBB76963EADCEED1F9EB2F -B6471580ABDA95ADA78B3A77E06741BA7CA079BA360F27C63A498F54434D39E2 -62DCF5A5577936440E6655FBF0E240A3FFF16551B61464C96297BF8DB4085C15 -F133AB85DE1605B32F9E61233CD4DEDC7274CD22634C7DF635D8E2BCB56F9D1F -39CB2DC06B02D935CAE59E7F936896471FB206186038914BD15B113C6766D000 -D1BF9C2F111327E62D5B2134771047F9683C9FA991571E2CCFD007026649011C -AC30D40C37B07889937FA1FC11C9E1127E2B30C5F0DD94475A02ABE8668C1076 -2B1C64365A34ED59A43A984780A2C9C2D5464526CD1D8359D711FABCBBC059E8 -CF0F79141CB8141371FE98B7E04E3C19570718F048DD75886133B5393C941391 -681F0866F5147442F1261881DEFDCA18F0BECBA95FE311FD78DD84FDB5013EC7 -2292B5D3F51B6C38A36ABAEF91B2D2B88AAA436FDEEF5C300D1E20C6A463901A -F55C14E03DC51DFD340A5D462A8FBD6AC5214393AB6BD332CB5D2848C7FB9DF9 -B50531F8682F848A46C6B16AFA262E3D62C9651960234CB38240506B9C4BF374 -DD0F4039366C6F02BC18A067EBFFE26DEFA5C0E0929D1181ABD949071F42C58B -7F97FF6BB7200BB66C37AEA46AC1B51D1F3A901502BD4BFB0B9FBF6B7C1E48F3 -9289B063250892AB9380C9743920318FE5634F5884F446BCCA6DA3687BD441BA -FBDA49659DD23AB091371C73C2A8408EAB11EB1AE679ECAD9A98EB954A869E6A -6947CDC66661EDDFFAFD810C67E2FD2B55A60F2E6BF128E162EEAB80F250C7E2 -D46C9F9EEDC79B54A831A16D46370FF8EABB4D40D7BAFC536D236B58D15AA860 -46190D58CD13F425F353CEF582E27842562DB76463E049C5371F68C86396A0EF -2FC5A078EDB98362A49C9986C4E2D288ACD9EFFA5E16FFE88CF1258E3DED7F1D -E0E1B510C316085AC417E15615E62780A2D149ADB2FDB97A6149D34451B405BE -E52C772E343D697015274C68CDDAB2CDAF9D89858F74901BEE6C0ABEECE90C96 -C659CFA3E11642456F8053DBCB26BDD8963CFB995038F590468DFFD55C08D0E6 -A117AF9EC7121D14736739729C0A23C083BD202A09040544F3B9E52B2AB90749 -3C960D8873A9D5ED9F9309B5A2EBE756BA0E03EC82FF9EAE787C7F6D5B9077E0 -5F6F01CF12562C9DCEAEB087F7B1A1E0821C70A896EB5AE991B99BC4A9F5B1A3 -AB2607557956AD82A5FB20CACF7CBA9A7621596CDF3D2F61A3A989469E9DB780 -48EB4D1FDACC4C82634A1335411F635A3241555D7AE0B3C25FBA73718655CA66 -01CDFB963408B6346352C8C74DD649330D9DBE9CADDB8E4F68DFD62855868994 -2F3BE6477962C4CCBEEE8FC4108570115A4385AB7CF3DDF279CBB4235217AD2B -055B6A1E070EE26989997D5197E5D354926A6EF093FE865CFA59EF8378165E9D -CD501D2D3A386ED76D636C3446429D4E6FDB5776C80510C6AA4225D5FE97AE62 -7F9E968C64D2488FB051B698D0CC481A62E80EAC8208EDAD7CD5FEBA1FD61CE9 -C010032C96790CAC644CA51EA4EF1512C78B9D03504077BBCAF6BFBCE7255E38 -D7772273B9046FAC92779DD7928431CEB7B22B8D17763D01D241607F050060E8 -52ED05CE4F5D3EC57B349828B6FA8D7E3D765FD8036063EB0F2ADA54D064D03D -0850E21A7EF5BF1A6FC538B44F6B9D7DCDE6EF84406987EC739803873BDF9539 -1D0E10735FD6F397223C62D9318E323B666063EFBDEF387B5886E7A72E5FD4AF -2CF2626DE6BCBF60A66243D82D66BF22D4213DBA1421F2A69FD16BC560D498F2 -1326273B81B3ED0F8C3952BEAFD761C6F822FCFE5E37B5630639ACFA6ED6A82F -0662A917F9163478D2DC81F55BBCB71E3273FE3131F3E1E8F50291D35DBEECE3 -1A2A2C675F0C14C11483590BD4C941021FA2B9E48771A92C46C22A4CDA623C54 -D89A1CB095A5DE8CC328DEE7110F7D123C3EB9CFEE757FEB5FC15B7186885EE2 -A939F6F02829CC672281D1CF097FCB730A550FEA4A915286B089E55303990A2B -24132543E8463F1C0B13CFA8F94523262BEE756AE77BCF1E087ABAC3E8251271 -71CC1F617586E6EEE7EECE435F4F306106EBD2AA4017C888F498B49BB96E8DA3 -7BDF6A406053AFFF353311B840B8E2D91FBEC3A72761CB0BFCACB011C437E4AE -4AC97B9286225B1151CD667F5260AB87C5A20DAA60410E9C232914FAA94CAAC3 -2229535D15A15C9D5BF6779CB21C36E045875C61B1B9246007338877C26119AA -91559A898DAAA2804FF6FF24AFB4A60E2FB56B78968B2FD3E41BD7E6AFC2C89A -4E4BB3631A02AD952EA1819D5AA6B315B87F76D0639F9D6451096DF4F13FE347 -24700BB56AA905E905D0690EA3BEF1E350403A48D2D5797C3037CE3EEEB7CBAC -DEB18240EAF5FCD951F7960BDB06DA47E20E6012470909264CF2A2A5D88EF6FD -40B72F03FB490D2D1949B87CD47F158CADD835ADC71584BB63469475204D0F39 -71AF1159BF4EC333E6768D58030F398AA252FC98D25FB7AA12D155A0788E7092 -9C1E7A6CC7DDCFF094C3F50FF2BCBA36FBBF315D5D29BC6E9E488D52998EF618 -2DFE63A1866457E0C843CF7FC16444B7320272AE039EB84B9CB50A7DC054A4AC -EEACDEB069F26FD9317B8F2F912CD1F39E435F95A10547567F15147BC19480C5 -29EA0FE1C9966DE2A0CCEE612080801CC0AC5B2ECE3D101C9E64B62AD1E22514 -9D056D5A90ADD81C55001F1A219FD13CFF9963C234595FE69AF7935D50F033D4 -4F5E281E08EC69D22BD97A5F2E285305EDD2C7C44133176C1DA87BF869BEC6DA -8D4E4157263E26325E2977F30523E83CFCBF915E6F6AB01A3B0B4DBE26E0CA9E -033499BA92902A366E610EBFB9D1120F894A51528C27F00637B3598AC250CCDD -26DA2821DADAF36C6F98C782DE3C5C7BF9017C08DBCBE29FED877C9B838DD137 -333B1B1E6DB341356458336012829D719BF9D59F8B377FD0A13894AB748F7757 -892B52EC667212233D781F47D177B85D32DCF0CE3AD0050E7CB6AD9C10686E98 -06CD5B51554EE0A1F2E6310CF8E68B1ECD9DEFE48914705420A464034C32EF98 -53573BE5F1FA4AECB4B8CA561E2838939D6A6CB1FCDAC1D2D1C9EA56656B9909 -0AE70C62CCFD0783D746E8DC997BBF8E48019FBB9EB27DDF432F9D49438B0CC5 -B88F8CFF72F71AF9A05F7A4C0565A1741E585DC4AC4EC8E7AF7EB29857BA860D -A0D9CAF0C33A04DDE54C483F7B5A770FC69A83569E50C74C241B2EB36DD9F770 -2D7FF44B15BBDFC7E2E207D0BD87EDAD51B0FEC8B0001F6114ED0D535313831A -0B5F9C69D34A30EFB806FE12CFD640339E8E6ED51BBEA6D315C4C0C2A2F804B4 -58AA3E778A729120F217F7877A2D9ED7CC9ACCDBA01134DBCA2B7E14B60D7763 -D7158417CB509DBAA3EA9504CCEAA03F75B359BEA4F295DA6C2890E635D9614D -B3928B2E72AEA4402656A9164AFB23B59A7C027D5127CB8E2ABADD6298A4D665 -347E3E070645B2D7950697BFCE5703A3B41710FF1E0374DB6B155320E8812FB0 -9039B54EDC25B9BD9B7E25C1AF1DBEE11C6604EFF06F615281C96C26683867A1 -F925325BDA0200EB88AFB21DA6672E42DA5CAEFB0650F0D6D5B6BF82CB1ACD14 -E19A3BB995087ABC6170AFDA6EE1DDAA77ECB07A830CB2066501401BB3B82666 -FA5C812DF094B062DBAAF96453A1E0871DAC4F1E47B874DF4B849D123B2B0544 -274DBA2382C1238C5A8A5451F50AA0FC495E7E5D5C800A28AAF68F609DA2B987 -FA8A3CF6962C971098FBB45C505E6AFC52A2EBE5C20B82C81D143755BD95804D -17ACC944DF0ED475003C1C067C1F6AF41D267F16F81AA26EBB16696D697CC282 -57123D8BE5637BFD6D15EAE454561F84A1E52DE03511169BB2065ACBA1A020BE -C8DD66C8A63739758C9CFC445FDF16FC547B68DC847DAD6DC87DFE0A186E03E3 -8AD184A106639A3EECCD03C1035B853EDF36BE3B96E8853D173238AA9B47D517 -87BAC312A282B6A949CC81ADB1F84191371F0233C303D540685C3E9F94BB9297 -B7777BE483B6CD50C4FABE0BE92D4179FC32E2939C5C04D0550B46E3B2551EF2 -401B00213143F1DE18039B187F200A8BB564B83F006943481E141E63837EF0E8 -C1912CA347A01A2E151E3A6F114328A2AE542225A0120E26A925F176A6455D4E -CCEE1D4D1D73F9DE93FBDDC5927A271963E5ED7F5D6640AFDCB996E6CAF74570 -046FCCA2EB03878B104076A44C8C479275656DABA64E9A5B169042247DDFE099 -14188A528DA964F44E9FCFE5A1B769D9FB6064BCA3C2916DBE10DE58AFC17BAA -B21AD23A7C16F37669EC39DACC5AE5CB8EE825DB473150BDA27BD72E3FB25AAD -EE1CDCA62DFC9BFA00E8574C5CFC6384E4348AA62C8D5009DF10AF7070671AB7 -ED425C3B9301A84804DCA3D8437ADA5A354CA577A0FF39E6C588383C58395790 -81AB85A5D90D3F09054826A43109C32C95604ED0ED4EE7CF68950F9C2F959231 -A05B21A89F41C1A496158FB2B33076618E363FC5A73CB44564922699EFD15678 -6DFA8503BB8F8E262AE6BF0ED7EAC85F0EB63F311A6E9F5C09F7399EF0804674 -471723CD1D3D84183B401F2037E36D4BC9D5BAD1A3270F07ED55A43924FD2F02 -DFDA236DFEC603AD7BBC88040E0BFEFFBA92DC3F724756CDC41D05B6CBB04E4B -693383975A7636FC3269C5151B0085F4BC89886E5AFA3E1CECCF967AC0765D4C -AD4F4FA8F3D2158F70EA44F0A78207DC2C5287F377182B7C0817243A76781B1B -EFBBE2011ACD72CD1AD50A551D95654F9A67E2F9DC85BD05B104325DE38C7198 -E85D6DA068B4C772B6CCEACF68BD8B1D08721CECFE10D881AFE643EE5438B3C3 -5203EB8D3E004E4E18EB6C1E8A7BE94401180DD1343C46B1FE5872C039653E13 -882E66099ABE3AB5009A622C92DCA6972B8C05B133050D9612A9487D5BC6077B -95248F11B54043912A542241ADB71E271A83ED36FF0CC44B6DE8DB095467289E -49A4A97EA363FB0486C7567A8056F056904C5BCB2ADFE0CD469A937AEC90B119 -57EB911C0B88171766700C44BA8AC7C9D1C954010A5C594EB0DCAF6F528A6C1A -E5AEDD88F890E94E3DD1EE2D088AE27C242D692E627BA00BE6723C54EC748865 -AD8FDB8D4DEFEF4EC67A89FDF87A6B7F8B49EAAB9664E105960E209C663D3105 -965BDB55C548FE1BA0FB610900E7DCADD084481295948C263046326DA0C8C513 -80FE1E956AF54C3D8CC5C53CE71BD8A646F9813FB8582CFF41E3837BBB8084D6 -30A00A36124C0E827E08D2674D81FD84300CE6971B0D711DF90BA72AA842B30F -A99C230AA58492FA3443323458B9B7189514DB8439582926336EA42E2EA6C318 -CF198A7CE1350DB0F345DFB7425EC49ABDCEDB0786D29E6A791D573F4BD97BAB -563C8BA40B4F1B97D30566E00D4504813AE704E0F8D0272913341C312C4825FC -4999FF9AE415C2453A03F0624291C0D09081C2792FBA1D61FD36CF49681E3FA4 -64BB59959AEFC3037A41229B42FD7E531933143F026D53B5A29A780D899AD4A8 -58695F05DACD66FEFE0795F89A8B5D50E6BE223700D7A99059F30436C7DD7FB4 -B51DAC6A96C2DE44E3A52005EFEADDC2A3241AE5E654D202E5F7DB699550C15A -63B72F971F8D27433A150559558D900875AAA739826B46B6DDDE79ACFA06B03A -B0D724D8CEFDAF097F3DB44708328EE3A013E7B69EEB75E678785B4B18C19A64 -1780F930A57C9D354D0D357642BCC3D1E9769919675F956D64649AB0E702F4C1 -484B40933625D19098860D2BEE441F81175BC89B5E6FACEBE068283222591A32 -C276A7F799DFE539D9368F897B2CAA71138244A1233AD747F80AF7ADAC2C5D2D -03257A9D3C61D1B50C6B78B859B6B06C39E0DB84EC08B14600E73CA9BEA23040 -766AD0A9E7E538069EF555FA11950E0F9B441CFD8A972DFCC674052D3E2D21A6 -A554010FA65520D22F15E30CFB87292AB254DB9F2536FBE8C15DF23C9E7AE638 -C71868E50DC447F952EE509D17FFD4B3F911C4DC42937889DD78EC13697494A6 -D2D809E113D1094462C71372437C53DBCBF8529212FA3F4AAEFDD5BD893C3F2E -2CA9778D58B4F13093A581DC12D94A1A7D4A9C0FA544A40A5D783FF8CFA5505F -456AF7F6754AD45E671A61EFCF329662FE117873741C6C1E838017B5DE1BE323 -6820548623452ECD301FA8D88BA0BF7478596CC082C314354BBAE9C8BBD3971F -6A88297E46DDD4D20B4DC7CFD9BB555E900A76BD1B8847E72B8D1DA2D3FCA282 -1A3E905F9041B056B0ED0B1CB77C4E004794AA896D3AB654DECA7832CC19D3AD -5E7FF8F07E3AE6607D6AE0A5A3B348A6C407D86338E23564C1398138758B293C -0621C2CCE84D0932EB2208A91DB5875AC5D62061D90569222DF9FC13093E9DA1 -1B74BE5195D901FB002CF065442B8B8348F8B156CDBB437439614656D8A6833A -CF3735B3935B5052D2A370820E1D528AF5151F24739B63B723026340C1F1AFEB -2C03FC48FAB55307C0A23BCF4942A904AED27C76B77AFF3040A2178D273E2630 -A3E2BB41001638C4851DF7C0B1AF21374EE89DB807660297550147477589971A -D9A473BA3FCD3D1674798A01F9A13521DFDE7B4034D626F72DD9BC980D6C120A -09929148132E8321D9BC9F03C68630ED09587053A0FBC676BDA18662A17EDB53 -81D488487FC409367C5605CE746604959FDBFF5B1582CC3F3B196179C58525C3 -18C0D7E11ADB5C648FE97413D93E04B235B3BA867E8AD677307050266C631EC9 -F20C017979A821552E66E3A7C773BC08B163F5AF0D737D475BBF964722E23967 -E71C78FB525E8C4EBD2B625B46F253DE02BF051BA5231D26B8B611E5D2877C01 -092A277340C7D0E95BF9AE7D91D88B0E8124822028020B43DA5DE7B33AF27AE3 -54EFFEC24DDF6B4EE8C7C1D5F8DCC1CD039E0478DC3A01B0611F17CDCA82D006 -9A5D2CEC07F4A11175D35F56C352D0849E894A9FC2F9917847907578013C5A58 -84F9A619C890F57737D0A0D4DC86B75179333BD611B2CC4D6CDC6CAE5B828762 -1C9BAA95C907E43385200809B68942A51D5FE0FCCF4B995D0367114D29264B83 -FE796E3E84200C0D28704D76176E6451D8C670ECC490C79B4E64E54C7C59B33C -B176B6EF9493CF52FF0BD30E7FE9CF302D92AE8296309D7C346ABC288859C426 -98CB7C7C58A749CDBE1FE05162F8F541A809B9E25EF88343C21863ECE4693159 -7588E877D3E894CE09D9C778826CCEB13BC0DAC6845A69BFC85A797ED310E38A -72AB793F2A3D2659F9E59E0DCF22941C523395BE5BE1910ED21ECD41842474B2 -27CD8F75B96B7B7043A7C9211DDF93645DCB3407373834991D8965D1CDBB713A -AC49F848F73983602751D26899A9BE1905FF301F9A6ED6B207CE20B7090117B6 -CA3FC46A68FA01650631C51BD8AF3B97139042F0CDCED3806EBF10D344B470FD -9B35779428DA32F1A9F60CFBE25BA691BAD490037DFB2C5B956E062A6EB8C553 -9700EAE90B5BDA9253BE72BB533941EE87536A1B6A36702156C5E90AED008813 -9E79CB6E161213562F9EA3ACF12DFA21BF9336DAFB1E90FE081239FD7760F6D7 -A84F956804A5A5CAD5D501B97EE758B9EC165F05E0C36BF03552620624C9050C -83AE829DA19BCB7FE78567AB3BBE4C770D01825B465D8342580F5EA809325734 -C533E0F2A99C696CD0CD84F2CA151548F3AABA509199B2106EBED08A2E79EBC1 -64F0A3D77BDC53C1040561D9F559F473496DE62B8D4063872D504C3837856FD4 -F451AF7F1EE600FD66C01C9CA63793EBC8FAD595AF1724CE7BD006A72B0CF192 -9A023CCA62CC519667F2E278442F4185E57580B761C8325FCCFB6E094F34F4DE -1644B24B578771E37141A1598E63E9EBD0AF4CAD443AE2DCED1E564038FB6DC3 -57F71BC6EC0C092F0F91969572E80335A2D394727705AA951716CF3EBD26823A -003A29935B93D170FEE1DDBBCC081A5E8090B0CC75D2AF60FD4E6EB63A153416 -B25142B594B7658EC4A1D0B61BA8022BE9E9E258E6EB8B83CBFF6BB502274749 -2815AADB342CFF901D0A2AE84BA1D23AF749C4DA07BFD6D8CD03C275F095251A -81AB02B2C4AFFAAC3F2C03A2960B80F3346374DD2D2D2B21D13A7847D8BB1AFD -8CC5AA5C1634FB8C705D42842E6BD7434CE6590748701A3AB9E17175C8EA34E6 -7CEA5181DB26BB36370BB7B1D4425DB57010BFBC92A50ABA6B151584DB25E49E -3C6B12540062CE28488CEE407321EAE10C45F01DA476D28F18F70CD030FF3605 -8DCB10CD81E0D20F13EAC320F8B677A96A5A21965D1122E29795C983F2624D42 -52C6D1EC1A3D45A55FEAD0A8840FAEC2 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (rluserman.dvi) -@start /Fa 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 -2[39 3[39 97[{ TeX09fbbfacEncoding ReEncodeFont }13 74.7198 -/CMSLTT10 rf /Fb 134[39 39 39 39 39 39 39 39 1[39 39 -39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 9[39 39 39 -39 2[39 1[39 1[39 2[39 1[39 39 1[39 39 39 39 5[39 8[39 -39 1[39 39 39 39 2[39 39 39 39[{ TeX09fbbfacEncoding ReEncodeFont }48 -74.7198 /CMTT9 rf /Fc 134[65 65 89 65 68 48 48 50 1[68 -61 68 102 34 65 1[34 68 61 37 56 68 55 68 60 7[93 3[94 -85 68 92 3[96 116 74 96 1[46 96 1[77 81 94 89 87 93 6[34 -1[61 61 61 61 61 61 61 61 2[34 46[{ TeXf7b6d320Encoding ReEncodeFont } -50 109.091 /CMBX12 rf /Fd 134[48 48 66 1[51 35 36 36 -48 51 45 51 76 25 48 1[25 51 45 28 40 1[40 51 45 9[93 -1[68 66 51 67 1[62 71 68 1[57 71 1[33 68 1[59 62 69 66 -64 68 19[30 45[{ TeXf7b6d320Encoding ReEncodeFont }41 -90.9091 /CMSL10 rf /Fe 138[39 27 28 28 1[39 1[39 2[37 -22 4[31 1[31 1[35 5[20 6[51 39 52 1[48 3[44 5[46 48 54 -51 50 53 15[35 3[24 5[20 39[{ TeXf7b6d320Encoding ReEncodeFont }26 -66.4176 /CMR8 rf /Ff 150[30 30 104[{ TeXbbad153fEncoding ReEncodeFont } -2 74.7198 /CMSY9 rf /Fg 134[48 48 48 48 48 1[48 48 48 -1[48 48 1[48 48 48 48 1[48 48 48 48 1[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[{ - TeX09fbbfacEncoding ReEncodeFont }33 90.9091 /CMSLTT10 -rf /Fh 135[56 2[56 54 42 2[51 58 56 68 47 1[39 27 56 -58 49 51 57 54 1[56 97[{ TeX0ef0afcaEncoding ReEncodeFont }18 -90.9091 /CMCSC10 rf /Fi 139[30 37 38 3[51 4[28 1[42 56[28 -33[51 12[{ TeX74afc74cEncoding ReEncodeFont }8 90.9091 -/CMTI10 rf /Fj 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 -119.552 /CMBXTI10 rf /Fk 134[85 85 2[90 63 64 2[90 81 -90 134 45 2[45 90 81 49 74 90 1[90 78 12[112 6[153 97 -6[106 1[117 1[122 15[81 49[{ TeXf7b6d320Encoding ReEncodeFont }25 -143.462 /CMBX12 rf /Fl 242[91 13[{ TeXbbad153fEncoding ReEncodeFont }1 -90.9091 /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 -94 75 100 3[105 128 81 2[50 1[106 85 88 103 97 96 102 -11[67 67 67 67 67 2[37 1[37 44[{ TeXf7b6d320Encoding ReEncodeFont }45 -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 3[48 48 48 48 48 48 1[48 48 48 48 -2[48 48 48 48 33[{ TeX09fbbfacEncoding ReEncodeFont }77 -90.9091 /CMTT10 rf /Fo 131[91 1[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[{ TeXf7b6d320Encoding ReEncodeFont }80 -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[{ TeXf7b6d320Encoding ReEncodeFont }19 172.154 /CMBX12 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - end -%%EndSetup -%%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 1373 1515 a Fo(Edition)30 -b(5.1-b)s(eta1,)j(for)d Fn(Readline)e(Library)h Fo(V)-8 -b(ersion)31 b(5.1-b)s(eta1.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2005)150 -4935 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 3024 a Fo(This)37 b(man)m(ual)i(describ)s(es) -f(the)g(end)g(user)f(in)m(terface)j(of)f(the)f(GNU)h(Readline)g -(Library)e(\(v)m(ersion)j(5.1-)150 3133 y(b)s(eta1,)34 -b(11)g(No)m(v)m(em)m(b)s(er)g(2005\),)i(a)e(library)e(whic)m(h)h(aids)g -(in)f(the)i(consistency)f(of)h(user)e(in)m(terface)i(across)150 -3243 y(discrete)d(programs)f(whic)m(h)g(pro)m(vide)h(a)f(command)h -(line)f(in)m(terface.)150 3377 y(Cop)m(yrigh)m(t)602 -3374 y(c)577 3377 y Fl(\015)g Fo(1988-2005)k(F)-8 b(ree)32 -b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 3512 -y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d(distribute)h -(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m(vided)f(the)150 -3621 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s(ermission)g(notice)h -(are)g(preserv)m(ed)f(on)h(all)g(copies.)390 3756 y(P)m(ermission)k(is) -h(gran)m(ted)f(to)h(cop)m(y)-8 b(,)38 b(distribute)d(and/or)g(mo)s -(dify)f(this)h(do)s(cumen)m(t)g(under)390 3866 y(the)j(terms)g(of)g -(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 -b(ersion)39 b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28 -b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8 -b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28 -b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33 -b(texts)e(b)s(eing)g(\\A)g(GNU)g(Man)m(ual,")h(and)e(with)g(the)h(Bac)m -(k-Co)m(v)m(er)390 4194 y(T)-8 b(exts)33 b(as)g(in)f(\(a\))h(b)s(elo)m -(w.)47 b(A)33 b(cop)m(y)g(of)f(the)h(license)g(is)g(included)e(in)h -(the)h(section)g(en)m(titled)390 4304 y(\\GNU)e(F)-8 -b(ree)32 b(Do)s(cumen)m(tation)g(License.")390 4438 y(\(a\))39 -b(The)f(FSF's)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)39 b(is:)56 -b(\\Y)-8 b(ou)39 b(ha)m(v)m(e)g(freedom)f(to)h(cop)m(y)f(and)g(mo)s -(dify)390 4548 y(this)32 b(GNU)i(Man)m(ual,)g(lik)m(e)g(GNU)f(soft)m(w) -m(are.)49 b(Copies)32 b(published)f(b)m(y)h(the)h(F)-8 -b(ree)34 b(Soft)m(w)m(are)390 4658 y(F)-8 b(oundation)31 -b(raise)g(funds)d(for)j(GNU)g(dev)m(elopmen)m(t.")150 -4902 y(Published)e(b)m(y)h(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation)150 5011 y(59)31 b(T)-8 b(emple)31 b(Place,)h(Suite)e(330,) -150 5121 y(Boston,)i(MA)e(02111-1307)150 5230 y(USA)p -eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fo(i)150 299 y Fk(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fm(1)135 b(Command)45 -b(Line)g(Editing)40 b Fj(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)84 b Fm(1)449 778 -y Fo(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)25 -b Fi(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 -b Fo(1)449 888 y(1.2)92 b(Readline)31 b(In)m(teraction)16 -b Fi(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)46 b Fo(1)748 997 y(1.2.1)93 b(Readline)31 -b(Bare)g(Essen)m(tials)c Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 -b Fo(1)748 1107 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)h -(Commands)14 b Fi(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)44 b Fo(2)748 1216 y(1.2.3)93 b(Readline)31 -b(Killing)g(Commands)22 b Fi(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)51 b Fo(2)748 -1326 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)25 b Fi(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fo(3)748 -1435 y(1.2.5)93 b(Searc)m(hing)30 b(for)h(Commands)e(in)h(the)g -(History)d Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 -b Fo(3)449 1545 y(1.3)92 b(Readline)31 b(Init)f(File)g -Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)58 b Fo(4)748 1655 y(1.3.1)93 b(Readline)31 -b(Init)f(File)h(Syn)m(tax)13 b Fi(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 -b Fo(4)748 1764 y(1.3.2)93 b(Conditional)30 b(Init)h(Constructs)9 -b Fi(.)14 b(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)39 b Fo(9)748 1874 y(1.3.3)93 -b(Sample)30 b(Init)g(File)21 b Fi(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)51 b Fo(10)449 1983 y(1.4)92 b(Bindable)31 -b(Readline)g(Commands)12 b Fi(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 -b Fo(13)748 2093 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 -b(Mo)m(ving)d Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fo(13)748 -2203 y(1.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f -(History)18 b Fi(.)e(.)f(.)g(.)g(.)g(.)g(.)47 b Fo(13)748 -2312 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 -b(ext)30 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)58 b Fo(14)748 2422 y(1.4.4)93 b(Killing)31 -b(And)e(Y)-8 b(anking)17 b Fi(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)46 -b Fo(16)748 2531 y(1.4.5)93 b(Sp)s(ecifying)29 b(Numeric)i(Argumen)m -(ts)25 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)54 b Fo(17)748 2641 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)19 -b Fi(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -49 b Fo(17)748 2751 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11 -b Fi(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 -b Fo(17)748 2860 y(1.4.8)93 b(Some)30 b(Miscellaneous)i(Commands)13 -b Fi(.)h(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -42 b Fo(18)449 2970 y(1.5)92 b(Readline)31 b(vi)f(Mo)s(de)d -Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)56 b Fo(19)150 3212 y Fm(App)t(endix)44 -b(A)99 b(Cop)l(ying)46 b(This)e(Man)l(ual)29 b Fj(.)20 -b(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)74 b Fm(21)449 -3349 y Fo(A.1)92 b(GNU)31 b(F)-8 b(ree)31 b(Do)s(cumen)m(tation)h -(License)c Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fo(21)748 3459 y(A.1.1)92 -b(ADDENDUM:)33 b(Ho)m(w)e(to)g(use)f(this)g(License)h(for)g(y)m(our)930 -3568 y(do)s(cumen)m(ts)c Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fo(27)p -eop end -%%Page: -2 4 -TeXDict begin -2 3 bop 150 -116 a Fo(ii)2640 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 1 5 -TeXDict begin 1 4 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(1)150 299 y Fk(1)80 -b(Command)54 b(Line)f(Editing)275 511 y Fo(This)29 b(c)m(hapter)i -(describ)s(es)f(the)g(basic)h(features)g(of)f(the)h Fh(gnu)f -Fo(command)g(line)h(editing)g(in)m(terface.)150 755 y -Fm(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)275 -995 y Fo(The)29 b(follo)m(wing)j(paragraphs)e(describ)s(e)g(the)g -(notation)i(used)d(to)j(represen)m(t)e(k)m(eystrok)m(es.)275 -1125 y(The)i(text)j Fg(C-k)d Fo(is)i(read)f(as)h(`Con)m(trol-K')g(and)f -(describ)s(es)g(the)g(c)m(haracter)i(pro)s(duced)d(when)g(the)3663 -1122 y Ff(h)p 3687 1069 38 4 v 3687 1125 a Fe(k)p 3687 -1140 V 3720 1122 a Ff(i)150 1235 y Fo(k)m(ey)f(is)g(pressed)e(while)h -(the)h(Con)m(trol)g(k)m(ey)g(is)g(depressed.)275 1365 -y(The)g(text)i Fg(M-k)e Fo(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s -(es)f(the)h(c)m(haracter)h(pro)s(duced)e(when)f(the)i(Meta)150 -1474 y(k)m(ey)d(\(if)g(y)m(ou)g(ha)m(v)m(e)g(one\))g(is)g(depressed,)f -(and)f(the)1859 1471 y Ff(h)p 1883 1418 V 1883 1474 a -Fe(k)p 1883 1490 V 1916 1471 a Ff(i)1974 1474 y Fo(k)m(ey)j(is)e -(pressed.)39 b(The)28 b(Meta)i(k)m(ey)f(is)g(lab)s(eled)3558 -1471 y Ff(h)p 3582 1418 143 4 v 3582 1474 a Fe(AL)-6 -b(T)p 3582 1490 V 3720 1471 a Ff(i)150 1584 y Fo(on)26 -b(man)m(y)g(k)m(eyb)s(oards.)39 b(On)26 b(k)m(eyb)s(oards)g(with)g(t)m -(w)m(o)h(k)m(eys)g(lab)s(eled)2425 1581 y Ff(h)p 2450 -1528 V 2450 1584 a Fe(AL)-6 b(T)p 2450 1599 V 2587 1581 -a Ff(i)2643 1584 y Fo(\(usually)27 b(to)g(either)f(side)g(of)h(the)150 -1693 y(space)32 b(bar\),)g(the)775 1690 y Ff(h)p 799 -1637 V 799 1693 a Fe(AL)-6 b(T)p 799 1709 V 937 1690 -a Ff(i)998 1693 y Fo(on)32 b(the)f(left)h(side)g(is)f(generally)i(set)e -(to)i(w)m(ork)e(as)h(a)f(Meta)i(k)m(ey)-8 b(.)45 b(The)3393 -1690 y Ff(h)p 3417 1637 V 3417 1693 a Fe(AL)-6 b(T)p -3417 1709 V 3555 1690 a Ff(i)3616 1693 y Fo(k)m(ey)150 -1803 y(on)33 b(the)h(righ)m(t)g(ma)m(y)g(also)g(b)s(e)f(con\014gured)f -(to)i(w)m(ork)g(as)g(a)f(Meta)i(k)m(ey)f(or)g(ma)m(y)g(b)s(e)e -(con\014gured)h(as)h(some)150 1913 y(other)d(mo)s(di\014er,)e(suc)m(h)h -(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)h(accen)m(ted)h(c)m -(haracters.)275 2043 y(If)21 b(y)m(ou)h(do)g(not)g(ha)m(v)m(e)h(a)f -(Meta)h(or)1388 2040 y Ff(h)p 1412 1987 V 1412 2043 a -Fe(AL)-6 b(T)p 1412 2058 V 1550 2040 a Ff(i)1601 2043 -y Fo(k)m(ey)e(,)25 b(or)d(another)g(k)m(ey)h(w)m(orking)f(as)g(a)g -(Meta)h(k)m(ey)-8 b(,)25 b(the)d(iden)m(tical)150 2152 -y(k)m(eystrok)m(e)i(can)f(b)s(e)f(generated)i(b)m(y)e(t)m(yping)1619 -2149 y Ff(h)p 1643 2096 139 4 v 1643 2152 a Fe(ESC)p -1643 2168 V 1777 2149 a Ff(i)1829 2152 y Fi(\014rst)p -Fo(,)j(and)d(then)g(t)m(yping)2678 2149 y Ff(h)p 2703 -2096 38 4 v 2703 2152 a Fe(k)p 2703 2168 V 2736 2149 -a Ff(i)2765 2152 y Fo(.)38 b(Either)23 b(pro)s(cess)f(is)g(kno)m(wn)150 -2262 y(as)31 b Fd(metafying)39 b Fo(the)850 2259 y Ff(h)p -874 2206 V 874 2262 a Fe(k)p 874 2277 V 907 2259 a Ff(i)968 -2262 y Fo(k)m(ey)-8 b(.)275 2392 y(The)39 b(text)j Fg(M-C-k)d -Fo(is)h(read)g(as)h(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g -(c)m(haracter)i(pro)s(duced)d(b)m(y)150 2501 y Fd(metafying)g -Fg(C-k)p Fo(.)275 2632 y(In)d(addition,)j(sev)m(eral)f(k)m(eys)f(ha)m -(v)m(e)h(their)f(o)m(wn)g(names.)60 b(Sp)s(eci\014cally)-8 -b(,)2768 2629 y Ff(h)p 2792 2576 146 4 v 2792 2632 a -Fe(DEL)p 2792 2647 V 2934 2629 a Ff(i)2964 2632 y Fo(,)3028 -2629 y Ff(h)p 3052 2576 139 4 v 3052 2632 a Fe(ESC)p -3052 2647 V 3186 2629 a Ff(i)3216 2632 y Fo(,)3279 2629 -y Ff(h)p 3303 2576 144 4 v 3303 2632 a Fe(LFD)p 3303 -2647 V 3443 2629 a Ff(i)3473 2632 y Fo(,)3537 2629 y -Ff(h)p 3561 2576 139 4 v 3561 2632 a Fe(SPC)p 3561 2647 -V 3695 2629 a Ff(i)3725 2632 y Fo(,)150 2738 y Ff(h)p -174 2685 151 4 v 174 2741 a Fe(RET)p 174 2757 V 321 2738 -a Ff(i)351 2741 y Fo(,)47 b(and)612 2738 y Ff(h)p 637 -2685 148 4 v 637 2741 a Fe(T)-6 b(AB)p 637 2757 V 780 -2738 a Ff(i)853 2741 y Fo(all)45 b(stand)e(for)g(themselv)m(es)i(when)d -(seen)i(in)f(this)g(text,)48 b(or)43 b(in)g(an)h(init)f(\014le)h(\(see) -150 2851 y(Section)c(1.3)f([Readline)h(Init)e(File],)43 -b(page)c(4\).)67 b(If)38 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)2888 -2848 y Ff(h)p 2912 2795 144 4 v 2912 2851 a Fe(LFD)p -2912 2866 V 3052 2848 a Ff(i)3121 2851 y Fo(k)m(ey)-8 -b(,)42 b(t)m(yping)3604 2848 y Ff(h)p 3628 2795 97 4 -v 3628 2851 a Fe(C-j)p 3628 2866 V 3720 2848 a Ff(i)150 -2960 y Fo(will)30 b(pro)s(duce)e(the)i(desired)f(c)m(haracter.)42 -b(The)1748 2957 y Ff(h)p 1772 2904 151 4 v 1772 2960 -a Fe(RET)p 1772 2976 V 1919 2957 a Ff(i)1978 2960 y Fo(k)m(ey)30 -b(ma)m(y)g(b)s(e)f(lab)s(eled)2770 2957 y Ff(h)p 2794 -2904 217 4 v 2794 2960 a Fe(Return)p 2794 2976 V 3007 -2957 a Ff(i)3066 2960 y Fo(or)3176 2957 y Ff(h)p 3201 -2904 172 4 v 3201 2960 a Fe(En)n(ter)p 3201 2976 V 3368 -2957 a Ff(i)3427 2960 y Fo(on)h(some)150 3070 y(k)m(eyb)s(oards.)150 -3314 y Fm(1.2)68 b(Readline)47 b(In)l(teraction)275 3554 -y Fo(Often)24 b(during)g(an)h(in)m(teractiv)m(e)j(session)e(y)m(ou)f(t) -m(yp)s(e)h(in)f(a)g(long)h(line)f(of)h(text,)h(only)f(to)f(notice)i -(that)f(the)150 3663 y(\014rst)32 b(w)m(ord)g(on)g(the)g(line)h(is)g -(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g -(a)g(set)g(of)f(commands)g(for)150 3773 y(manipulating)e(the)g(text)h -(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h -(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 -3883 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 -b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m -(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3992 y(to)35 b(the)f(place)i(that)e -(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g -(the)f(corrections.)54 b(Then,)150 4102 y(when)30 b(y)m(ou)i(are)f -(satis\014ed)g(with)g(the)g(line,)h(y)m(ou)g(simply)e(press)2320 -4099 y Ff(h)p 2344 4046 151 4 v 2344 4102 a Fe(RET)p -2344 4117 V 2491 4099 a Ff(i)2520 4102 y Fo(.)43 b(Y)-8 -b(ou)32 b(do)f(not)g(ha)m(v)m(e)i(to)e(b)s(e)g(at)h(the)150 -4211 y(end)j(of)h(the)g(line)g(to)h(press)1126 4208 y -Ff(h)p 1150 4155 V 1150 4211 a Fe(RET)p 1150 4227 V 1297 -4208 a Ff(i)1327 4211 y Fo(;)h(the)e(en)m(tire)h(line)f(is)g(accepted)h -(regardless)f(of)g(the)g(lo)s(cation)i(of)e(the)150 4321 -y(cursor)30 b(within)g(the)g(line.)150 4532 y Fc(1.2.1)63 -b(Readline)40 b(Bare)h(Essen)m(tials)275 4772 y Fo(In)22 -b(order)g(to)i(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)h -(simply)d(t)m(yp)s(e)i(them.)38 b(The)22 b(t)m(yp)s(ed)h(c)m(haracter)i -(app)s(ears)150 4881 y(where)32 b(the)h(cursor)e(w)m(as,)j(and)e(then)g -(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 -b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4991 y(c)m(haracter,)f(y)m(ou) -f(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and) -f(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 5121 -y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g -(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) -m(yp)s(ed)150 5230 y(sev)m(eral)e(other)f(c)m(haracters.)42 -b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h -Fg(C-b)d Fo(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 -5340 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 -b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g -(with)f Fg(C-f)p Fo(.)p eop end -%%Page: 2 6 -TeXDict begin 2 5 bop 150 -116 a Fo(2)2645 b(GNU)31 b(Readline)g -(Library)275 299 y(When)h(y)m(ou)h(add)f(text)h(in)f(the)h(middle)f(of) -h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m(haracters)h(to)g(the) -e(righ)m(t)150 408 y(of)d(the)g(cursor)f(are)h(`pushed)e(o)m(v)m(er')j -(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h(that)f(y)m(ou)g(ha)m(v)m -(e)h(inserted.)40 b(Lik)m(ewise,)150 518 y(when)d(y)m(ou)g(delete)i -(text)g(b)s(ehind)c(the)j(cursor,)h(c)m(haracters)g(to)f(the)g(righ)m -(t)g(of)g(the)g(cursor)e(are)i(`pulled)150 628 y(bac)m(k')24 -b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g -(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g -(bare)f(essen)m(tials)150 737 y(for)30 b(editing)h(the)g(text)g(of)g -(an)f(input)f(line)i(follo)m(ws.)150 892 y Fg(C-b)336 -b Fo(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150 -1048 y Fg(C-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m -(haracter.)150 1200 y Ff(h)p 174 1147 146 4 v 174 1203 -a Fe(DEL)p 174 1218 V 316 1200 a Ff(i)376 1203 y Fo(or)487 -1200 y Ff(h)p 512 1147 317 4 v 512 1203 a Fe(Bac)n(kspace)p -512 1218 V 824 1200 a Ff(i)630 1312 y Fo(Delete)i(the)d(c)m(haracter)i -(to)f(the)g(left)g(of)f(the)h(cursor.)150 1467 y Fg(C-d)336 -b Fo(Delete)33 b(the)d(c)m(haracter)i(underneath)d(the)i(cursor.)150 -1622 y(Prin)m(ting)g(c)m(haracters)630 1732 y(Insert)f(the)g(c)m -(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g(cursor.)150 -1887 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630 1997 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 2106 y(line.)150 -2262 y(\(Dep)s(ending)g(on)g(y)m(our)g(con\014guration,)h(the)1726 -2259 y Ff(h)p 1750 2205 V 1750 2262 a Fe(Bac)n(kspace)p -1750 2277 V 2063 2259 a Ff(i)2127 2262 y Fo(k)m(ey)g(b)s(e)e(set)h(to)h -(delete)g(the)f(c)m(haracter)i(to)f(the)150 2371 y(left)f(of)f(the)g -(cursor)f(and)h(the)1192 2368 y Ff(h)p 1216 2315 146 -4 v 1216 2371 a Fe(DEL)p 1216 2386 V 1358 2368 a Ff(i)1421 -2371 y Fo(k)m(ey)g(set)h(to)g(delete)g(the)f(c)m(haracter)i(underneath) -c(the)i(cursor,)h(lik)m(e)150 2481 y Fg(C-d)p Fo(,)c(rather)g(than)g -(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g(the)f(cursor.\))150 -2698 y Fc(1.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)275 -2940 y Fo(The)25 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)f(the)g(most)h -(basic)f(k)m(eystrok)m(es)i(that)f(y)m(ou)f(need)g(in)g(order)f(to)i -(do)f(editing)150 3050 y(of)g(the)f(input)g(line.)39 -b(F)-8 b(or)27 b(y)m(our)e(con)m(v)m(enience,)k(man)m(y)c(other)h -(commands)f(ha)m(v)m(e)i(b)s(een)e(added)g(in)g(addition)150 -3160 y(to)33 b Fg(C-b)p Fo(,)e Fg(C-f)p Fo(,)h Fg(C-d)p -Fo(,)g(and)1043 3157 y Ff(h)p 1067 3104 V 1067 3160 a -Fe(DEL)p 1067 3175 V 1209 3157 a Ff(i)1239 3160 y Fo(.)45 -b(Here)33 b(are)f(some)g(commands)g(for)g(mo)m(ving)h(more)f(rapidly)f -(ab)s(out)h(the)150 3269 y(line.)150 3424 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 -3579 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 3735 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 3890 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 4045 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 -4200 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 4310 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 -4419 y(w)m(ords.)150 4637 y Fc(1.2.3)63 b(Readline)40 -b(Killing)i(Commands)275 4879 y Fd(Killing)j Fo(text)39 -b(means)e(to)h(delete)g(the)g(text)g(from)f(the)g(line,)j(but)d(to)h -(sa)m(v)m(e)h(it)e(a)m(w)m(a)m(y)j(for)d(later)h(use,)150 -4988 y(usually)c(b)m(y)g Fd(y)m(anking)42 b Fo(\(re-inserting\))35 -b(it)g(bac)m(k)g(in)m(to)g(the)f(line.)52 b(\(`Cut')35 -b(and)e(`paste')i(are)g(more)f(recen)m(t)150 5098 y(jargon)d(for)f -(`kill')h(and)f(`y)m(ank'.\))275 5230 y(If)f(the)i(description)f(for)g -(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m(ou)g -(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 5340 y(can)g(get)g(the)g(text)g -(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h(place)h -(later.)p eop end -%%Page: 3 7 -TeXDict begin 3 6 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(When)23 -b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i -(in)e(a)g Fd(kill-ring)p Fo(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h -(consecutiv)m(e)150 408 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g -(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f -(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 518 -y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g -(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f -(is)h(a)m(v)-5 b(ailable)150 628 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m -(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)275 -760 y(Here)f(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.) -150 916 y Fg(C-k)336 b Fo(Kill)31 b(the)f(text)i(from)e(the)g(curren)m -(t)g(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 -1072 y Fg(M-d)336 b Fo(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g -(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 1182 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 1337 y Fg(M-)246 1334 y Ff(h)p -270 1281 146 4 v 270 1337 a Fe(DEL)p 270 1353 V 411 1334 -a Ff(i)630 1337 y Fo(Kill)h(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 1447 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 1557 y Fg(M-b)p Fo(.)150 1712 y Fg(C-w)336 -b Fo(Kill)32 b(from)e(the)i(cursor)e(to)i(the)g(previous)e(whitespace.) -44 b(This)31 b(is)g(di\013eren)m(t)h(than)f Fg(M-)3555 -1709 y Ff(h)p 3578 1656 V 3578 1712 a Fe(DEL)p 3578 1728 -V 3720 1709 a Ff(i)630 1822 y Fo(b)s(ecause)f(the)h(w)m(ord)f(b)s -(oundaries)f(di\013er.)275 1978 y(Here)42 b(is)f(ho)m(w)h(to)g -Fd(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 b(means)e(to)h(cop)m(y)h(the)e(most-)150 -2087 y(recen)m(tly-killed)33 b(text)e(from)f(the)g(kill)i(bu\013er.)150 -2243 y Fg(C-y)336 b Fo(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h -(killed)f(text)g(bac)m(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f -(cursor.)150 2399 y Fg(M-y)336 b 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 2509 y(command)30 b(is)h -Fg(C-y)e Fo(or)h Fg(M-y)p Fo(.)150 2727 y Fc(1.2.4)63 -b(Readline)40 b(Argumen)m(ts)275 2970 y Fo(Y)-8 b(ou)29 -b(can)h(pass)f(n)m(umeric)g(argumen)m(ts)g(to)h(Readline)g(commands.)40 -b(Sometimes)30 b(the)f(argumen)m(t)h(acts)150 3079 y(as)40 -b(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g -Fi(sign)47 b Fo(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m -(t.)71 b(If)40 b(y)m(ou)150 3189 y(pass)33 b(a)h(negativ)m(e)i(argumen) -m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m -(ard)f(direction,)i(that)150 3298 y(command)g(will)h(act)g(in)f(a)h -(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g -(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 3408 y(the)31 -b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fn(M--)f(C-k)p -Fo('.)275 3541 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g -(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i -(digits)e(b)s(efore)150 3650 y(the)j(command.)42 b(If)30 -b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h -(\(`)p Fn(-)p Fo('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 -3760 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m -(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h -(started,)i(y)m(ou)150 3869 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f -(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 -b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fg(C-d)150 -3979 y Fo(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f -(t)m(yp)s(e)h(`)p Fn(M-1)29 b(0)h(C-d)p Fo(',)39 b(whic)m(h)e(will)h -(delete)h(the)e(next)h(ten)150 4089 y(c)m(haracters)32 -b(on)e(the)h(input)e(line.)150 4307 y Fc(1.2.5)63 b(Searc)m(hing)40 -b(for)i(Commands)g(in)f(the)g(History)275 4550 y Fo(Readline)32 -b(pro)m(vides)h(commands)f(for)g(searc)m(hing)h(through)e(the)i -(command)f(history)g(for)g(lines)g(con-)150 4659 y(taining)f(a)g(sp)s -(eci\014ed)f(string.)40 b(There)30 b(are)h(t)m(w)m(o)h(searc)m(h)f(mo)s -(des:)40 b Fd(incremen)m(tal)35 b Fo(and)30 b Fd(non-incremen)m(tal)p -Fo(.)275 4792 y(Incremen)m(tal)c(searc)m(hes)h(b)s(egin)e(b)s(efore)g -(the)h(user)f(has)h(\014nished)e(t)m(yping)i(the)g(searc)m(h)g(string.) -39 b(As)26 b(eac)m(h)150 4902 y(c)m(haracter)37 b(of)e(the)h(searc)m(h) -g(string)f(is)h(t)m(yp)s(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h -(en)m(try)g(from)e(the)i(history)150 5011 y(matc)m(hing)25 -b(the)f(string)g(t)m(yp)s(ed)g(so)g(far.)39 b(An)23 b(incremen)m(tal)j -(searc)m(h)e(requires)g(only)g(as)g(man)m(y)g(c)m(haracters)i(as)150 -5121 y(needed)i(to)i(\014nd)d(the)i(desired)f(history)h(en)m(try)-8 -b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history) -g(for)f(a)i(particular)150 5230 y(string,)g(t)m(yp)s(e)f -Fg(C-r)p Fo(.)40 b(T)m(yping)29 b Fg(C-s)g Fo(searc)m(hes)h(forw)m(ard) -f(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m -(t)150 5340 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g -Fn(isearch-terminators)33 b Fo(v)-5 b(ariable)39 b(are)f(used)f(to)i -(terminate)g(an)f(incremen)m(tal)p eop end -%%Page: 4 8 -TeXDict begin 4 7 bop 150 -116 a Fo(4)2645 b(GNU)31 b(Readline)g -(Library)150 299 y(searc)m(h.)63 b(If)38 b(that)g(v)-5 -b(ariable)38 b(has)g(not)g(b)s(een)f(assigned)h(a)g(v)-5 -b(alue,)40 b(the)2578 296 y Ff(h)p 2602 243 139 4 v 2602 -299 a Fe(ESC)p 2602 314 V 2736 296 a Ff(i)2804 299 y -Fo(and)d Fg(C-J)f Fo(c)m(haracters)k(will)150 408 y(terminate)j(an)g -(incremen)m(tal)g(searc)m(h.)78 b Fg(C-g)41 b Fo(will)i(ab)s(ort)f(an)g -(incremen)m(tal)i(searc)m(h)f(and)f(restore)h(the)150 -518 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f -(terminated,)h(the)f(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m -(h)h(string)150 628 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 -769 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e -(the)h(history)g(list,)h(t)m(yp)s(e)g Fg(C-r)e Fo(or)h -Fg(C-s)f Fo(as)h(appropriate.)43 b(This)150 878 y(will)26 -b(searc)m(h)h(bac)m(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f -(for)g(the)g(next)g(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string) -150 988 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i -(sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h -(the)150 1098 y(searc)m(h)22 b(and)e(execute)j(that)e(command.)38 -b(F)-8 b(or)22 b(instance,)h(a)2127 1095 y Ff(h)p 2151 -1042 151 4 v 2151 1098 a Fe(RET)p 2151 1113 V 2298 1095 -a Ff(i)2349 1098 y Fo(will)e(terminate)h(the)f(searc)m(h)h(and)e -(accept)150 1207 y(the)30 b(line,)g(thereb)m(y)f(executing)i(the)e -(command)g(from)g(the)h(history)f(list.)41 b(A)29 b(mo)m(v)m(emen)m(t)j -(command)d(will)150 1317 y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h -(the)e(last)h(line)g(found)e(the)i(curren)m(t)f(line,)h(and)f(b)s(egin) -g(editing.)275 1458 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h -(incremen)m(tal)g(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j -Fg(C-r)p Fo(s)c(are)i(t)m(yp)s(ed)g(without)150 1567 -y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f -(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g -(is)150 1677 y(used.)275 1818 y(Non-incremen)m(tal)48 -b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s -(efore)f(starting)h(to)h(searc)m(h)f(for)150 1928 y(matc)m(hing)d -(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f -(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 -2037 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150 -2311 y Fm(1.3)68 b(Readline)47 b(Init)e(File)275 2562 -y Fo(Although)g(the)g(Readline)h(library)e(comes)i(with)f(a)h(set)f(of) -g(Emacs-lik)m(e)i(k)m(eybindings)e(installed)150 2672 -y(b)m(y)d(default,)i(it)f(is)e(p)s(ossible)g(to)i(use)e(a)h(di\013eren) -m(t)g(set)g(of)g(k)m(eybindings.)74 b(An)m(y)42 b(user)f(can)h -(customize)150 2781 y(programs)32 b(that)h(use)f(Readline)h(b)m(y)g -(putting)f(commands)g(in)g(an)g Fd(inputrc)37 b Fo(\014le,)d(con)m(v)m -(en)m(tionally)h(in)d(his)150 2891 y(home)h(directory)-8 -b(.)50 b(The)33 b(name)g(of)g(this)g(\014le)h(is)f(tak)m(en)h(from)f -(the)g(v)-5 b(alue)34 b(of)f(the)g(en)m(vironmen)m(t)h(v)-5 -b(ariable)150 3000 y Fn(INPUTRC)p Fo(.)39 b(If)30 b(that)h(v)-5 -b(ariable)31 b(is)f(unset,)g(the)h(default)g(is)f(`)p -Fn(~/.inputrc)p Fo('.)275 3142 y(When)f(a)h(program)f(whic)m(h)h(uses)f -(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h -(read,)g(and)f(the)150 3251 y(k)m(ey)i(bindings)e(are)i(set.)275 -3392 y(In)26 b(addition,)i(the)f Fn(C-x)i(C-r)d Fo(command)h(re-reads)g -(this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m -(hanges)150 3502 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g -(it.)150 3739 y Fc(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)275 -3990 y Fo(There)33 b(are)h(only)g(a)g(few)f(basic)h(constructs)g(allo)m -(w)m(ed)h(in)f(the)g(Readline)g(init)g(\014le.)51 b(Blank)34 -b(lines)g(are)150 4100 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 -4209 y(conditional)29 b(constructs)f(\(see)g(Section)h(1.3.2)g -([Conditional)g(Init)e(Constructs],)i(page)f(9\).)41 -b(Other)27 b(lines)150 4319 y(denote)k(v)-5 b(ariable)31 -b(settings)g(and)f(k)m(ey)h(bindings.)150 4488 y(V)-8 -b(ariable)32 b(Settings)630 4598 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e -(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h -(the)g(v)-5 b(alues)41 b(of)630 4707 y(v)-5 b(ariables)34 -b(in)f(Readline)i(using)e(the)g Fn(set)g Fo(command)g(within)g(the)h -(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4817 y(is)d(simple:)870 -4955 y Fn(set)47 b Fg(variable)56 b(value)630 5093 y -Fo(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f -(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 -5202 y(use)k Fn(vi)g Fo(line)h(editing)g(commands:)870 -5340 y Fn(set)47 b(editing-mode)d(vi)p eop end -%%Page: 5 9 -TeXDict begin 5 8 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y(V)-8 -b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 b(where)f(appropriate,)h -(are)g(recognized)g(without)f(regard)630 408 y(to)c(case.)42 -b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 -536 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f -(set)i(to)g(on)f(or)g(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the) -g(v)-5 b(alue)26 b(is)630 646 y(n)m(ull)e(or)g(empt)m(y)-8 -b(,)27 b Fd(on)d Fo(\(case-insensitiv)m(e\),)29 b(or)24 -b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) --5 b(ariable)630 756 y(b)s(eing)30 b(set)h(to)g(o\013.)630 -883 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m -(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630 -1029 y Fn(bell-style)1110 1139 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 -1249 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 1358 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 1468 y(`)p Fn(audible)p -Fo(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g -(terminal's)1110 1577 y(b)s(ell.)630 1724 y Fn(bind-tty-special-chars) -1110 1833 y Fo(If)45 b(set)h(to)f(`)p Fn(on)p Fo(',)50 -b(Readline)45 b(attempts)i(to)f(bind)d(the)j(con)m(trol)g(c)m -(haracters)1110 1943 y(treated)36 b(sp)s(ecially)h(b)m(y)e(the)h(k)m -(ernel's)g(terminal)g(driv)m(er)f(to)h(their)f(Readline)1110 -2052 y(equiv)-5 b(alen)m(ts.)630 2198 y Fn(comment-begin)1110 -2308 y Fo(The)29 b(string)g(to)h(insert)f(at)h(the)f(b)s(eginning)g(of) -g(the)h(line)f(when)f(the)i Fn(insert-)1110 2418 y(comment)e -Fo(command)j(is)f(executed.)42 b(The)29 b(default)i(v)-5 -b(alue)31 b(is)f Fn("#")p Fo(.)630 2564 y Fn(completion-ignore-case) -1110 2673 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 -2783 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 -2929 y Fn(completion-query-items)1110 3039 y Fo(The)26 -b(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 3148 y(is)i(ask)m(ed)h(whether)f(the)h(list)g -(of)f(p)s(ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41 -b(If)29 b(the)1110 3258 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f -(completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28 -b(Readline)1110 3367 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h -(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 3477 -y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25 -b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 -b(alue)1110 3587 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 -b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 -3696 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g -Fn(100)p Fo(.)630 3842 y Fn(convert-meta)1110 3952 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 -4061 y(to)g(an)f Fh(asci)r(i)g Fo(k)m(ey)h(sequence)g(b)m(y)f -(stripping)f(the)i(eigh)m(th)g(bit)f(and)g(pre\014xing)f(an)1110 -4168 y Ff(h)p 1134 4115 139 4 v 1134 4171 a Fe(ESC)p -1134 4186 V 1268 4168 a Ff(i)1332 4171 y Fo(c)m(haracter,)36 -b(con)m(v)m(erting)g(them)e(to)g(a)h(meta-pre\014xed)f(k)m(ey)g -(sequence.)1110 4281 y(The)c(default)g(v)-5 b(alue)31 -b(is)g(`)p Fn(on)p Fo('.)630 4427 y Fn(disable-completion)1110 -4536 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 -4646 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 -4755 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p -Fn(off)p Fo('.)630 4902 y Fn(editing-mode)1110 5011 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 5121 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 5230 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 5340 y(b)s(e)g(set)h(to)g(either)g(`)p -Fn(emacs)p Fo(')e(or)h(`)p Fn(vi)p Fo('.)p eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Fo(6)2645 b(GNU)31 b(Readline)g -(Library)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 -819 y Fn(expand-tilde)1110 929 y Fo(If)c(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 1039 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1230 -y Fn(history-preserve-point)1110 1340 y Fo(If)e(set)i(to)f(`)p -Fn(on)p Fo(',)g(the)g(history)g(co)s(de)g(attempts)g(to)h(place)f(p)s -(oin)m(t)g(at)h(the)f(same)1110 1450 y(lo)s(cation)35 -b(on)e(eac)m(h)i(history)e(line)h(retriev)m(ed)g(with)f -Fn(previous-history)c Fo(or)1110 1559 y Fn(next-history)p -Fo(.)37 b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 -1751 y Fn(horizontal-scroll-mode)1110 1861 y Fo(This)35 -b(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 1970 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 2080 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 2189 -y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g -(line.)39 b(By)27 b(default,)g(this)1110 2299 y(v)-5 -b(ariable)31 b(is)g(set)f(to)i(`)p Fn(off)p Fo('.)630 -2491 y Fn(input-meta)1110 2600 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 2710 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 -2819 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68 -b(The)39 b(default)h(v)-5 b(alue)40 b(is)g(`)p Fn(off)p -Fo('.)69 b(The)1110 2929 y(name)30 b Fn(meta-flag)e Fo(is)j(a)f(synon)m -(ym)g(for)g(this)h(v)-5 b(ariable.)630 3121 y Fn(isearch-terminators) -1110 3230 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 3340 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 3450 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 -3559 y(b)s(een)31 b(giv)m(en)h(a)g(v)-5 b(alue,)32 b(the)g(c)m -(haracters)2494 3556 y Ff(h)p 2518 3503 139 4 v 2518 -3559 a Fe(ESC)p 2518 3575 V 2652 3556 a Ff(i)2713 3559 -y Fo(and)f Fg(C-J)g Fo(will)h(terminate)g(an)1110 3669 -y(incremen)m(tal)g(searc)m(h.)630 3861 y Fn(keymap)192 -b Fo(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h -(for)g(k)m(ey)g(binding)f(com-)1110 3970 y(mands.)81 -b(Acceptable)47 b Fn(keymap)42 b Fo(names)i(are)h Fn(emacs)p -Fo(,)i Fn(emacs-standard)p Fo(,)1110 4080 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 4189 y Fn(vi-insert)p -Fo(.)64 b Fn(vi)38 b Fo(is)h(equiv)-5 b(alen)m(t)41 b(to)e -Fn(vi-command)p Fo(;)i Fn(emacs)c Fo(is)i(equiv)-5 b(alen)m(t)1110 -4299 y(to)33 b Fn(emacs-standard)p Fo(.)41 b(The)31 b(default)h(v)-5 -b(alue)32 b(is)g Fn(emacs)p Fo(.)44 b(The)31 b(v)-5 b(alue)33 -b(of)f(the)1110 4408 y Fn(editing-mode)27 b Fo(v)-5 b(ariable)31 -b(also)h(a\013ects)f(the)g(default)f(k)m(eymap.)630 4600 -y Fn(mark-directories)1110 4710 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 4819 y(The)30 b(default)g(is)h(`)p -Fn(on)p Fo('.)630 5011 y Fn(mark-modified-lines)1110 -5121 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 -5230 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 -5340 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Fn(off)p Fo(')g(b)m(y)g -(default.)p eop end -%%Page: 7 11 -TeXDict begin 7 10 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn -(mark-symlinked-directori)o(es)1110 408 y Fo(If)44 b(set)h(to)h(`)p -Fn(on)p Fo(',)i(completed)e(names)f(whic)m(h)f(are)h(sym)m(b)s(olic)g -(links)g(to)g(di-)1110 518 y(rectories)j(ha)m(v)m(e)f(a)g(slash)f(app)s -(ended)e(\(sub)5 b(ject)47 b(to)g(the)f(v)-5 b(alue)47 -b(of)f Fn(mark-)1110 628 y(directories)p Fo(\).)38 b(The)30 -b(default)g(is)h(`)p Fn(off)p Fo('.)630 789 y Fn(match-hidden-files) -1110 898 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 1008 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 -1118 y(completion,)j(unless)41 b(the)g(leading)h(`)p -Fn(.)p Fo(')g(is)g(supplied)e(b)m(y)h(the)h(user)f(in)g(the)1110 -1227 y(\014lename)31 b(to)g(b)s(e)e(completed.)42 b(This)30 -b(v)-5 b(ariable)31 b(is)f(`)p Fn(on)p Fo(')h(b)m(y)f(default.)630 -1388 y Fn(output-meta)1110 1498 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 1608 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)1110 -1717 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1878 -y Fn(page-completions)1110 1988 y Fo(If)j(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 -2097 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 -2207 y(b)m(y)e(default.)630 2368 y Fn(print-completions-horizo)o(ntal)o -(ly)1110 2478 y Fo(If)23 b(set)i(to)g(`)p Fn(on)p Fo(',)g(Readline)g -(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -2587 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c -(than)g(do)m(wn)g(the)h(screen.)1110 2697 y(The)30 b(default)g(is)h(`)p -Fn(off)p Fo('.)630 2858 y Fn(show-all-if-ambiguous)1110 -2968 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 3077 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)1110 3187 y(the)39 -b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i(instead)e(of)g -(ringing)g(the)g(b)s(ell.)1110 3296 y(The)30 b(default)g(v)-5 -b(alue)31 b(is)g(`)p Fn(off)p Fo('.)630 3458 y Fn -(show-all-if-unmodified)1110 3567 y Fo(This)38 b(alters)h(the)g -(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h(functions)e(in)h(a) -1110 3677 y(fashion)25 b(similar)h(to)g Fd(sho)m(w-all-if-am)m(biguous) -p Fo(.)41 b(If)25 b(set)h(to)h(`)p Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h) -1110 3786 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e -(completion)i(without)f(an)m(y)g(p)s(ossible)f(par-)1110 -3896 y(tial)43 b(completion)h(\(the)f(p)s(ossible)f(completions)h -(don't)f(share)g(a)h(common)1110 4006 y(pre\014x\))30 -b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g(immediately)i -(instead)e(of)h(ring-)1110 4115 y(ing)g(the)f(b)s(ell.)41 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fn(off)p -Fo('.)630 4276 y Fn(visible-stats)1110 4386 y Fo(If)h(set)i(to)f(`)p -Fn(on)p Fo(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 4495 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Fn(off)p Fo('.)150 4657 y(Key)f(Bindings)630 4766 y(The)41 -b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g -(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 -4876 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i -(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 -4985 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j -(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630 -5095 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 5230 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g -(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630 -5340 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h -(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)p -eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Fo(8)2645 b(GNU)31 -b(Readline)g(Library)630 299 y(the)h(name)g(of)g(the)g(command.)46 -b(The)31 b(name)h(of)g(the)g(k)m(ey)h(can)f(b)s(e)f(expressed)h(in)f -(di\013eren)m(t)630 408 y(w)m(a)m(ys,)g(dep)s(ending)e(on)i(what)f(y)m -(ou)h(\014nd)d(most)j(comfortable.)630 545 y(In)k(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 655 y(that)31 b(is)f(inserted)h(when)e(the) -i(k)m(ey)g(is)f(pressed)g(\(a)h Fd(macro)5 b Fo(\).)630 -819 y Fd(k)m(eyname)g Fo(:)42 b Fd(function-name)35 b -Fo(or)c Fd(macro)1110 929 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 1066 y Fn(Control-u:)45 b(universal-argument) -1350 1176 y(Meta-Rubout:)f(backward-kill-word)1350 1285 -y(Control-o:)h(">)i(output")1110 1422 y Fo(In)38 b(the)h(ab)s(o)m(v)m -(e)h(example,)h Fg(C-u)d Fo(is)h(b)s(ound)d(to)k(the)e(function)h -Fn(universal-)1110 1532 y(argument)p Fo(,)f Fg(M-DEL)e -Fo(is)i(b)s(ound)e(to)i(the)g(function)g Fn(backward-kill-word)p -Fo(,)1110 1641 y(and)g Fg(C-o)g Fo(is)h(b)s(ound)e(to)j(run)d(the)j -(macro)f(expressed)g(on)f(the)i(righ)m(t)f(hand)1110 -1751 y(side)30 b(\(that)i(is,)e(to)h(insert)g(the)f(text)i(`)p -Fn(>)e(output)p Fo(')f(in)m(to)i(the)g(line\).)1110 1888 -y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i(names)e -(are)g(recognized)h(while)f(pro-)1110 1998 y(cessing)24 -b(this)g(k)m(ey)g(binding)f(syn)m(tax:)37 b Fd(DEL)p -Fo(,)24 b Fd(ESC)p Fo(,)f Fd(ESCAPE)p Fo(,)g Fd(LFD)p -Fo(,)h Fd(NEW-)1110 2107 y(LINE)p Fo(,)30 b Fd(RET)p -Fo(,)g Fd(RETURN)p Fo(,)h Fd(R)m(UBOUT)p Fo(,)g Fd(SP)-8 -b(A)m(CE)p Fo(,)30 b Fd(SPC)p Fo(,)g(and)f Fd(T)-8 b(AB)p -Fo(.)630 2271 y Fn(")p Fd(k)m(eyseq)r Fn(")p Fo(:)41 -b Fd(function-name)36 b Fo(or)30 b Fd(macro)1110 2381 -y(k)m(eyseq)k Fo(di\013ers)d(from)f Fd(k)m(eyname)37 -b Fo(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 -2491 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m -(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 2600 -y(double)29 b(quotes.)41 b(Some)29 b Fh(gnu)h Fo(Emacs)f(st)m(yle)i(k)m -(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2710 -y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m -(haracter)g(names)f(are)g(not)1110 2819 y(recognized.)1350 -2956 y Fn("\\C-u":)46 b(universal-argument)1350 3066 -y("\\C-x\\C-r":)f(re-read-init-file)1350 3176 y("\\e[11~":)g("Function) -h(Key)g(1")1110 3313 y Fo(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 -b Fg(C-u)64 b Fo(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -3422 y Fn(universal-argument)39 b Fo(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fg(C-x)1110 3532 -y(C-r)p Fo(')41 b(is)g(b)s(ound)e(to)j(the)f(function)g -Fn(re-read-init-file)p Fo(,)e(and)i(`)3462 3529 y Ff(h)p -3486 3476 139 4 v 3486 3532 a Fe(ESC)p 3486 3547 V 3620 -3529 a Ff(i)31 b(h)p 3705 3476 20 4 v 3705 3532 a Fe([)p -3705 3548 V 3720 3529 a Ff(i)1110 3638 y(h)p 1134 3585 -36 4 v 1134 3641 a Fe(1)p 1134 3657 V 1165 3638 a Ff(i)f(h)p -1250 3585 V 1250 3641 a Fe(1)p 1250 3657 V 1281 3638 -a Ff(i)g(h)p 1365 3585 48 4 v 1365 3641 a Fn(~)p 1365 -3657 V 1409 3638 a Ff(i)1438 3641 y Fo(')h(is)f(b)s(ound)f(to)i(insert) -f(the)h(text)g(`)p Fn(Function)d(Key)i(1)p Fo('.)630 -3806 y(The)f(follo)m(wing)i Fh(gnu)f Fo(Emacs)g(st)m(yle)h(escap)s(e)f -(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630 -3915 y(k)m(ey)i(sequences:)630 4080 y Fg(\\C-)336 b Fo(con)m(trol)32 -b(pre\014x)630 4244 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 -4408 y Fg(\\e)384 b Fo(an)30 b(escap)s(e)h(c)m(haracter)630 -4573 y Fg(\\\\)384 b Fo(bac)m(kslash)630 4737 y Fg(\\)p -Fn(")1110 4734 y Ff(h)p 1134 4681 V 1134 4737 a Fn(")p -1134 4753 V 1178 4734 a Ff(i)1208 4737 y Fo(,)30 b(a)h(double)f -(quotation)h(mark)630 4902 y Fg(\\')1110 4899 y Ff(h)p -1134 4846 20 4 v 1134 4902 a Fe(')p 1134 4917 V 1150 -4899 a Ff(i)1179 4902 y Fo(,)g(a)g(single)g(quote)g(or)f(ap)s(ostrophe) -630 5066 y(In)d(addition)h(to)g(the)g Fh(gnu)f Fo(Emacs)h(st)m(yle)h -(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630 -5176 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 5340 -y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))p eop end -%%Page: 9 13 -TeXDict begin 9 12 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2153 b(9)630 299 y Fn(\\b)384 -b Fo(bac)m(kspace)630 455 y Fn(\\d)g Fo(delete)630 612 -y Fn(\\f)g Fo(form)30 b(feed)630 768 y Fn(\\n)384 b Fo(newline)630 -925 y Fn(\\r)g Fo(carriage)32 b(return)630 1081 y Fn(\\t)384 -b Fo(horizon)m(tal)32 b(tab)630 1238 y Fn(\\v)384 b Fo(v)m(ertical)32 -b(tab)630 1394 y Fn(\\)p Fg(nnn)288 b Fo(the)35 b(eigh)m(t-bit)h(c)m -(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 -b(alue)35 b Fd(nnn)e Fo(\(one)i(to)1110 1504 y(three)c(digits\))630 -1661 y Fn(\\x)p Fg(HH)288 b Fo(the)40 b(eigh)m(t-bit)h(c)m(haracter)g -(whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 -b(alue)40 b Fd(HH)1110 1770 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 1927 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 2036 y(indicate)23 b(a)e(macro)h(de\014nition.)38 -b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f -(name.)38 b(In)630 2146 y(the)22 b(macro)f(b)s(o)s(dy)-8 -b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m -(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2255 y(will)j(quote)h(an)m -(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 -b(`)p Fn(")p Fo(')h(and)g(`)p Fn(')p Fo('.)69 b(F)-8 -b(or)630 2365 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i -(mak)m(e)h(`)p Fg(C-x)j Fn(\\)p Fo(')c(insert)f(a)h(single)h(`)p -Fn(\\)p Fo(')f(in)m(to)g(the)g(line:)870 2498 y Fn("\\C-x\\\\":)45 -b("\\\\")150 2718 y Fc(1.3.2)63 b(Conditional)41 b(Init)g(Constructs) -275 2961 y Fo(Readline)36 b(implemen)m(ts)f(a)h(facilit)m(y)i(similar)d -(in)g(spirit)g(to)h(the)g(conditional)h(compilation)g(features)150 -3070 y(of)e(the)f(C)g(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)f -(bindings)e(and)h(v)-5 b(ariable)35 b(settings)h(to)f(b)s(e)f(p)s -(erformed)f(as)150 3180 y(the)e(result)f(of)g(tests.)42 -b(There)30 b(are)h(four)e(parser)h(directiv)m(es)i(used.)150 -3336 y Fn($if)336 b Fo(The)31 b Fn($if)f Fo(construct)i(allo)m(ws)h -(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 3446 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g -(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 3555 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 -3712 y Fn(mode)288 b Fo(The)20 b Fn(mode=)g Fo(form)g(of)h(the)g -Fn($if)f Fo(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline) -1110 3821 y(is)29 b(in)h Fn(emacs)e Fo(or)h Fn(vi)g Fo(mo)s(de.)40 -b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 -3931 y(`)p Fn(set)h(keymap)p Fo(')c(command,)i(for)f(instance,)i(to)f -(set)g(bindings)f(in)g(the)h Fn(emacs-)1110 4041 y(standard)23 -b Fo(and)h Fn(emacs-ctlx)f Fo(k)m(eymaps)i(only)g(if)g(Readline)h(is)f -(starting)h(out)1110 4150 y(in)k Fn(emacs)f Fo(mo)s(de.)630 -4307 y Fn(term)288 b Fo(The)26 b Fn(term=)g Fo(form)g(ma)m(y)i(b)s(e)e -(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 -4416 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f -(output)g(b)m(y)g(the)g(terminal's)1110 4526 y(function)24 -b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g -(the)g(`)p Fn(=)p Fo(')g(is)g(tested)h(against)1110 4636 -y(b)s(oth)k(the)h(full)g(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s -(ortion)e(of)h(the)g(terminal)1110 4745 y(name)k(b)s(efore)f(the)g -(\014rst)g(`)p Fn(-)p Fo('.)50 b(This)33 b(allo)m(ws)i -Fn(sun)e Fo(to)h(matc)m(h)g(b)s(oth)f Fn(sun)g Fo(and)1110 -4855 y Fn(sun-cmd)p Fo(,)c(for)h(instance.)630 5011 y -Fn(application)1110 5121 y Fo(The)21 b Fd(application)j -Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 5230 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fd(application)1110 -5340 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)p -eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Fo(10)2600 b(GNU)31 -b(Readline)g(Library)1110 299 y(bind)h(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)1110 408 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 518 -y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 -653 y Fn($if)47 b(Bash)1350 762 y(#)g(Quote)g(the)g(current)f(or)h -(previous)e(word)1350 872 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 -981 y($endif)150 1141 y($endif)192 b Fo(This)29 b(command,)i(as)f(seen) -h(in)f(the)g(previous)g(example,)h(terminates)g(an)g -Fn($if)e Fo(command.)150 1300 y Fn($else)240 b Fo(Commands)29 -b(in)h(this)h(branc)m(h)e(of)i(the)f Fn($if)g Fo(directiv)m(e)i(are)f -(executed)g(if)f(the)h(test)g(fails.)150 1460 y Fn($include)96 -b Fo(This)43 b(directiv)m(e)i(tak)m(es)g(a)e(single)i(\014lename)e(as)h -(an)f(argumen)m(t)h(and)f(reads)g(commands)630 1569 y(and)38 -b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 -b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e(from)630 -1679 y(`)p Fn(/etc/inputrc)p Fo(':)870 1813 y Fn($include)46 -b(/etc/inputrc)150 2037 y Fc(1.3.3)63 b(Sample)41 b(Init)g(File)275 -2281 y Fo(Here)31 b(is)f(an)g(example)i(of)e(an)g Fd(inputrc)35 -b Fo(\014le.)42 b(This)29 b(illustrates)j(k)m(ey)f(binding,)f(v)-5 -b(ariable)31 b(assignmen)m(t,)150 2391 y(and)f(conditional)h(syn)m -(tax.)p eop end -%%Page: 11 15 -TeXDict begin 11 14 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(11)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) -g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g -(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 -956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 -1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(systemwide)e(bindings) -h(and)h(variable)390 1285 y(#)g(assignments)e(from)i(/etc/Inputrc)390 -1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724 -y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)390 -1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 -2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) -h(function)f(name)g(is)h(ignored)p 3971 2401 42 76 v -390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 -2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390 -3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g -(previous-history)390 3258 y(#"\\M-OB":)g(next-history)390 -3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 -3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390 -3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g -(previous-history)390 4025 y("\\M-[B":)g(next-history)390 -4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode) -390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 -4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g -(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390 -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: 12 16 -TeXDict begin 12 15 bop 150 -116 a Fo(12)2600 b(GNU)31 -b(Readline)g(Library)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) -g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f -(are)h(convenient)e(for)i(shell)f(interaction)390 1504 -y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 -y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 -1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 -1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 -2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 -2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g -(backslash)e(\(testing)h(backslash)f(escapes)390 2381 -y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") -390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 -2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e -(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 -2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f -(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f -("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 -y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h -(available)390 3587 y(set)f(bell-style)e(visible)390 -3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) -390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e -(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g -(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j -(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g -(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h -(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 -5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f -(completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g -(he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f -(completion-query-items)42 b(150)p eop end -%%Page: 13 17 -TeXDict begin 13 16 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(13)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 1098 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands) -275 1340 y Fo(This)30 b(section)j(describ)s(es)d(Readline)i(commands)f -(that)h(ma)m(y)g(b)s(e)f(b)s(ound)e(to)j(k)m(ey)g(sequences.)44 -b(Com-)150 1449 y(mand)30 b(names)g(without)g(an)g(accompan)m(ying)i(k) -m(ey)g(sequence)e(are)h(un)m(b)s(ound)d(b)m(y)i(default.)275 -1582 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fd(p)s(oin)m(t)h -Fo(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f -Fd(mark)31 b Fo(refers)150 1691 y(to)40 b(a)f(cursor)f(p)s(osition)h -(sa)m(v)m(ed)h(b)m(y)f(the)g Fn(set-mark)d Fo(command.)66 -b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150 -1801 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fd(region)p -Fo(.)150 2018 y Fc(1.4.1)63 b(Commands)42 b(F)-10 b(or)41 -b(Mo)m(ving)150 2260 y Fn(beginning-of-line)26 b(\(C-a\))630 -2370 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g -(line.)150 2525 y Fn(end-of-line)d(\(C-e\))630 2635 y -Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2790 y Fn(forward-char)c(\(C-f\))630 2899 y Fo(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3054 y Fn(backward-char)c(\(C-b\)) -630 3164 y Fo(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3319 y Fn(forward-word)d(\(M-f\))630 3429 y Fo(Mo)m(v)m(e)32 -b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 -b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 -3538 y(digits.)150 3693 y Fn(backward-word)27 b(\(M-b\))630 -3803 y Fo(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g -(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 -b(are)g(comp)s(osed)630 3913 y(of)d(letters)g(and)f(digits.)150 -4068 y Fn(clear-screen)d(\(C-l\))630 4177 y Fo(Clear)g(the)g(screen)f -(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f -(curren)m(t)g(line)g(at)g(the)g(top)630 4287 y(of)k(the)f(screen.)150 -4442 y Fn(redraw-current-line)25 b(\(\))630 4552 y Fo(Refresh)30 -b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s -(ound.)150 4769 y Fc(1.4.2)63 b(Commands)42 b(F)-10 b(or)41 -b(Manipulating)h(The)f(History)150 5011 y Fn(accept-line)27 -b(\(Newline)h(or)i(Return\))630 5121 y Fo(Accept)36 b(the)g(line)f -(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34 -b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630 -5230 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e -(future)g(recall)j(with)d Fn(add_history\(\))p Fo(.)42 -b(If)31 b(this)630 5340 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h -(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g -(state.)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Fo(14)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fn(previous-history)26 -b(\(C-p\))630 408 y Fo(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g -(history)h(list,)g(fetc)m(hing)g(the)g(previous)f(command.)150 -556 y Fn(next-history)d(\(C-n\))630 666 y Fo(Mo)m(v)m(e)32 -b(`forw)m(ard')f(through)e(the)i(history)f(list,)i(fetc)m(hing)f(the)g -(next)f(command.)150 814 y Fn(beginning-of-history)25 -b(\(M-<\))630 923 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h -(the)f(history)-8 b(.)150 1071 y Fn(end-of-history)26 -b(\(M->\))630 1181 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h -(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s -(eing)f(en)m(tered.)150 1329 y Fn(reverse-search-history)24 -b(\(C-r\))630 1438 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g -(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 1548 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 -b(is)i(an)f(incremen)m(tal)i(searc)m(h.)150 1696 y Fn -(forward-search-history)24 b(\(C-s\))630 1805 y Fo(Searc)m(h)30 -b(forw)m(ard)f(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m -(ving)h(`do)m(wn')f(through)g(the)h(the)630 1915 y(history)g(as)h -(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g(searc)m(h.) -150 2063 y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 2172 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g -(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 2282 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m -(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -2391 y(user.)150 2539 y Fn(non-incremental-forward-)o(sear)o(ch-h)o -(ist)o(ory)24 b(\(M-n\))630 2649 y Fo(Searc)m(h)30 b(forw)m(ard)f -(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn') -f(through)g(the)h(the)630 2758 y(history)d(as)f(necessary)i(using)e(a)h -(non-incremen)m(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i -(the)630 2868 y(user.)150 3016 y Fn(history-search-forward)d(\(\))630 -3125 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 -3235 y(start)36 b(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m -(t.)55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56 -b(By)630 3345 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150 -3492 y Fn(history-search-backward)24 b(\(\))630 3602 -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 -3712 y(start)g(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m(t.) -55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56 -b(By)630 3821 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150 -3969 y Fn(yank-nth-arg)c(\(M-C-y\))630 4079 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 4188 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 Fd(n)p Fo(,)g(insert)g(the)g Fd(n)p -Fo(th)f(w)m(ord)g(from)630 4298 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 -4407 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f -Fd(n)p Fo(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -4517 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fd(n)e -Fo(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -4627 y(the)e(`)p Fn(!)p Fg(n)11 b Fo(')29 b(history)i(expansion)f(had)g -(b)s(een)f(sp)s(eci\014ed.)150 4774 y Fn(yank-last-arg)e(\(M-.)i(or)h -(M-_\))630 4884 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 -4994 y(history)c(en)m(try\).)41 b(With)31 b(an)g(argumen)m(t,)g(b)s -(eha)m(v)m(e)g(exactly)i(lik)m(e)f Fn(yank-nth-arg)p -Fo(.)38 b(Succes-)630 5103 y(siv)m(e)d(calls)h(to)f Fn(yank-last-arg)c -Fo(mo)m(v)m(e)36 b(bac)m(k)g(through)d(the)i(history)g(list,)h -(inserting)f(the)630 5213 y(last)d(argumen)m(t)f(of)g(eac)m(h)h(line)f -(in)f(turn.)41 b(The)30 b(history)h(expansion)f(facilities)j(are)e -(used)f(to)630 5322 y(extract)i(the)e(last)i(argumen)m(t,)f(as)f(if)h -(the)f(`)p Fn(!$)p Fo(')g(history)h(expansion)f(had)g(b)s(een)f(sp)s -(eci\014ed.)p eop end -%%Page: 15 19 -TeXDict begin 15 18 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(15)150 299 y Fc(1.4.3)63 -b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150 -547 y Fn(delete-char)27 b(\(C-d\))630 656 y Fo(Delete)41 -b(the)e(c)m(haracter)i(at)e(p)s(oin)m(t.)66 b(If)39 b(p)s(oin)m(t)f(is) -h(at)h(the)f(b)s(eginning)f(of)h(the)g(line,)j(there)630 -766 y(are)37 b(no)g(c)m(haracters)i(in)d(the)i(line,)h(and)d(the)h -(last)h(c)m(haracter)h(t)m(yp)s(ed)e(w)m(as)g(not)g(b)s(ound)e(to)630 -875 y Fn(delete-char)p Fo(,)28 b(then)i(return)f Fh(eof)p -Fo(.)150 1042 y Fn(backward-delete-char)c(\(Rubout\))630 -1152 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 -1261 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -1428 y Fn(forward-backward-delete-)o(char)24 b(\(\))630 -1538 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 -1647 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 -1757 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -1924 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2033 -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 -2143 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150 -2310 y Fn(tab-insert)e(\(M-)802 2307 y Ff(h)p 825 2254 -148 4 v 825 2310 a Fe(T)-6 b(AB)p 825 2325 V 969 2307 -a Ff(i)998 2310 y Fn(\))630 2419 y Fo(Insert)30 b(a)h(tab)f(c)m -(haracter.)150 2586 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o -(\))630 2696 y Fo(Insert)g(y)m(ourself.)150 2862 y Fn(transpose-chars)c -(\(C-t\))630 2972 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 3081 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 3191 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 3301 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 3467 y Fn(transpose-words)c(\(M-t\))630 -3577 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 3687 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 3796 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)150 3963 y Fn(upcase-word)c(\(M-u\))630 -4073 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 -4182 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 4349 y Fn(downcase-word)d(\(M-l\))630 -4458 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 4568 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 4735 y Fn(capitalize-word)26 -b(\(M-c\))630 4844 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 4954 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(overwrite-mode)26 -b(\(\))630 5230 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 5340 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)p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Fo(16)2600 b(GNU)31 -b(Readline)g(Library)630 299 y(insert)f(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 408 -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 -539 y(In)e(o)m(v)m(erwrite)j(mo)s(de,)e(c)m(haracters)i(b)s(ound)c(to)j -Fn(self-insert)c Fo(replace)k(the)g(text)g(at)g(p)s(oin)m(t)630 -648 y(rather)41 b(than)h(pushing)e(the)i(text)g(to)g(the)g(righ)m(t.)75 -b(Characters)42 b(b)s(ound)d(to)j Fn(backward-)630 758 -y(delete-char)27 b Fo(replace)32 b(the)e(c)m(haracter)i(b)s(efore)e(p)s -(oin)m(t)h(with)f(a)g(space.)630 888 y(By)h(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 1099 y Fc(1.4.4)63 b(Killing)42 -b(And)e(Y)-10 b(anking)150 1339 y Fn(kill-line)28 b(\(C-k\))630 -1449 y Fo(Kill)j(the)f(text)i(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of) -i(the)f(line.)150 1599 y Fn(backward-kill-line)25 b(\(C-x)30 -b(Rubout\))630 1709 y Fo(Kill)h(bac)m(kw)m(ard)g(to)g(the)f(b)s -(eginning)g(of)g(the)h(line.)150 1860 y Fn(unix-line-discard)26 -b(\(C-u\))630 1969 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 -2120 y Fn(kill-whole-line)c(\(\))630 2230 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 -2339 y(this)30 b(is)h(un)m(b)s(ound.)150 2490 y Fn(kill-word)d(\(M-d\)) -630 2600 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 2709 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 2860 y Fn(backward-kill-word)25 b(\(M-)1183 -2857 y Ff(h)p 1207 2804 146 4 v 1207 2860 a Fe(DEL)p -1207 2875 V 1348 2857 a Ff(i)1378 2860 y Fn(\))630 2970 -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 3120 y Fn(unix-word-rubout)d(\(C-w\))630 -3230 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 3339 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f -(kill-ring.)150 3490 y Fn(unix-filename-rubout)25 b(\(\))630 -3600 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 -3709 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 3860 y Fn -(delete-horizontal-space)24 b(\(\))630 3970 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.)150 4121 -y Fn(kill-region)d(\(\))630 4230 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 4381 y Fn(copy-region-as-kill)25 b(\(\))630 -4490 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 4600 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 4751 y Fn(copy-backward-word)25 -b(\(\))630 4860 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 4970 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 -5121 y Fn(copy-forward-word)26 b(\(\))630 5230 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 -5340 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.)p eop -end -%%Page: 17 21 -TeXDict begin 17 20 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn(yank)29 -b(\(C-y\))630 408 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 -552 y Fn(yank-pop)d(\(M-y\))630 661 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 771 y(command)30 b(is)h -Fn(yank)e Fo(or)h Fn(yank-pop)p Fo(.)150 971 y Fc(1.4.5)63 -b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 1207 -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 1317 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 1427 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 1570 y Fn(universal-argument)25 b(\(\))630 -1680 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 1789 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 -1899 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 -2008 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 -2118 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 -2228 y(or)28 b(min)m(us)f(sign,)i(the)f(argumen)m(t)g(coun)m(t)h(for)e -(the)i(next)f(command)f(is)h(m)m(ultiplied)h(b)m(y)e(four.)630 -2337 y(The)37 b(argumen)m(t)h(coun)m(t)f(is)h(initially)h(one,)g(so)f -(executing)g(this)f(function)g(the)h(\014rst)e(time)630 -2447 y(mak)m(es)d(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)i(second)e -(time)i(mak)m(es)f(the)g(argumen)m(t)g(coun)m(t)h(six-)630 -2556 y(teen,)e(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h -(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 2757 y Fc(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 2993 y Fn(complete)28 b(\()610 2990 -y Ff(h)p 634 2937 148 4 v 634 2993 a Fe(T)-6 b(AB)p 634 -3008 V 778 2990 a Ff(i)808 2993 y Fn(\))630 3102 y Fo(A)m(ttempt)24 -b(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 3212 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 3355 y Fn(possible-completions)25 -b(\(M-?\))630 3465 y Fo(List)31 b(the)f(p)s(ossible)g(completions)i(of) -e(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)150 3608 y Fn -(insert-completions)25 b(\(M-*\))630 3718 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 3827 -y(b)m(y)g Fn(possible-completions)p Fo(.)150 3971 y Fn(menu-complete)d -(\(\))630 4080 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 4190 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 -4300 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 -4409 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 -4519 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 Fd(n)f Fo(mo)m(v)m(es)i -Fd(n)630 4628 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 4738 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 4845 y Ff(h)p 654 4792 V 654 4848 a Fe(T)-6 -b(AB)p 654 4863 V 798 4845 a Ff(i)828 4848 y Fo(,)30 -b(but)g(is)g(un)m(b)s(ound)e(b)m(y)i(default.)150 4991 -y Fn(delete-char-or-list)25 b(\(\))630 5101 y Fo(Deletes)k(the)e(c)m -(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)g(b)s(eginning)g -(or)f(end)h(of)g(the)g(line)630 5210 y(\(lik)m(e)k Fn(delete-char)p -Fo(\).)37 b(If)29 b(at)h(the)f(end)f(of)i(the)f(line,)h(b)s(eha)m(v)m -(es)g(iden)m(tically)h(to)e Fn(possible-)630 5320 y(completions)p -Fo(.)38 b(This)29 b(command)h(is)h(un)m(b)s(ound)d(b)m(y)i(default.)p -eop end -%%Page: 18 22 -TeXDict begin 18 21 bop 150 -116 a Fo(18)2600 b(GNU)31 -b(Readline)g(Library)150 299 y Fc(1.4.7)63 b(Keyb)s(oard)41 -b(Macros)150 545 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630 -655 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 -818 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 927 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 1037 -y(de\014nition.)150 1200 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630 -1310 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 -1419 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 1651 y Fc(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 -1898 y Fn(re-read-init-file)26 b(\(C-x)j(C-r\))630 2007 -y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fd(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 2117 y(assignmen)m(ts)31 b(found)e(there.)150 -2280 y Fn(abort)g(\(C-g\))630 2390 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 2499 y(setting)j(of)g Fn(bell-style)p -Fo(\).)150 2663 y Fn(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fg(x)p Fn(,)g(...)o(\))630 2772 y Fo(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fd(x)34 b Fo(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g -(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2882 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 3045 y Fn(prefix-meta)d(\()753 -3042 y Ff(h)p 777 2989 139 4 v 777 3045 a Fe(ESC)p 777 -3060 V 911 3042 a Ff(i)941 3045 y Fn(\))630 3155 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 3264 y(T)m(yping)30 b(`)968 3261 y Ff(h)p 993 -3208 V 993 3264 a Fe(ESC)p 993 3280 V 1127 3261 a Ff(i)1187 -3264 y Fn(f)p Fo(')g(is)g(equiv)-5 b(alen)m(t)32 b(to)f(t)m(yping)g -Fg(M-f)p Fo(.)150 3428 y Fn(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 -3537 y Fo(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for) -g(eac)m(h)i(line.)150 3700 y Fn(revert-line)27 b(\(M-r\))630 -3810 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 3920 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f -(b)s(eginning.)150 4083 y Fn(tilde-expand)d(\(M-~\))630 -4192 y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m -(ord.)150 4356 y Fn(set-mark)d(\(C-@\))630 4465 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 -4575 y(to)f(that)g(p)s(osition.)150 4738 y Fn(exchange-point-and-mark) -24 b(\(C-x)29 b(C-x\))630 4848 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 4957 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 -5121 y Fn(character-search)26 b(\(C-]\))630 5230 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 5340 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)p eop end -%%Page: 19 23 -TeXDict begin 19 22 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn -(character-search-backwar)o(d)24 b(\(M-C-]\))630 408 -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 -518 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 677 y Fn(insert-comment)d -(\(M-#\))630 787 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 897 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 1006 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 1116 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 1225 -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 1335 -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 1494 y Fn(dump-functions)d -(\(\))630 1604 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 -1714 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 -1823 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fd(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 1983 y Fn(dump-variables)26 b(\(\))630 -2092 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 2202 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 2311 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h -Fd(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 2471 y Fn(dump-macros)c(\(\))630 -2580 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 -2690 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 -2800 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 -Fd(inputrc)35 b Fo(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 2909 y(default.)150 3068 y Fn(emacs-editing-mode)e(\(C-e\)) -630 3178 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 -3337 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 3447 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 3704 y Fm(1.5)68 b(Readline)47 -b(vi)e(Mo)t(de)275 3949 y Fo(While)24 b(the)g(Readline)g(library)f(do)s -(es)h(not)g(ha)m(v)m(e)g(a)h(full)e(set)h(of)g Fn(vi)f -Fo(editing)h(functions,)h(it)f(do)s(es)g(con)m(tain)150 -4058 y(enough)34 b(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 4168 y(the)e Fh(posix)e Fo(1003.2)k(standard.) -275 4302 y(In)28 b(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 4412 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 4521 y Fo(mo)s(de\).)k(The)30 -b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275 -4656 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 4765 y(had)c(t)m(yp)s(ed)g(an)g(`)p -Fn(i)p Fo('.)39 b(Pressing)1215 4762 y Ff(h)p 1239 4709 -139 4 v 1239 4765 a Fe(ESC)p 1239 4781 V 1373 4762 a -Ff(i)1429 4765 y Fo(switc)m(hes)27 b(y)m(ou)g(in)m(to)g(`command')f(mo) -s(de,)h(where)f(y)m(ou)h(can)f(edit)h(the)150 4875 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 -4985 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: 20 24 -TeXDict begin 20 23 bop 150 -116 a Fo(20)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Fo(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(21)150 299 -y Fk(App)t(endix)52 b(A)40 b(Cop)l(ying)51 b(This)j(Man)l(ual)150 -690 y Fm(A.1)67 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h -(License)1396 909 y Fo(V)-8 b(ersion)31 b(1.2,)h(No)m(v)m(em)m(b)s(er)g -(2002)390 1052 y(Cop)m(yrigh)m(t)842 1049 y(c)817 1052 -y Fl(\015)e Fo(2000,2001,2002)36 b(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) --8 b(oundation,)32 b(Inc.)390 1161 y(59)f(T)-8 b(emple)31 -b(Place,)h(Suite)e(330,)i(Boston,)g(MA)61 b(02111-1307,)35 -b(USA)390 1380 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f(to)h(cop)m(y)g -(and)f(distribute)g(v)m(erbatim)h(copies)390 1490 y(of)g(this)f -(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f(is)f(not)h(allo)m -(w)m(ed.)199 1632 y(0.)61 b(PREAMBLE)330 1770 y(The)37 -b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g(a)g(man)m -(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1880 y(useful)29 b(do)s(cumen)m(t)h Fd(free)36 b Fo(in)29 -b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j -(the)e(e\013ectiv)m(e)j(freedom)330 1990 y(to)f(cop)m(y)g(and)f -(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i -(either)f(commercially)h(or)e(non-)330 2099 y(commercially)-8 -b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f -(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2209 -y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g -(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 -2318 y(made)30 b(b)m(y)h(others.)330 2457 y(This)22 b(License)i(is)f(a) -h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 -b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 -2566 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g -(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 -2676 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) -e(for)g(free)h(soft)m(w)m(are.)330 2814 y(W)-8 b(e)31 -b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h -(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 -2924 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) -65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 -3033 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) -m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g -(to)330 3143 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g -(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 -b(ject)30 b(matter)i(or)330 3252 y(whether)f(it)h(is)f(published)f(as)i -(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h -(License)g(principally)f(for)330 3362 y(w)m(orks)f(whose)h(purp)s(ose)d -(is)j(instruction)f(or)g(reference.)199 3500 y(1.)61 -b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3639 y(This)39 -b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i -(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3748 -y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) -h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 -3858 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f -(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d -(in)330 3967 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j -(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 -4077 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h -(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g -(a)h(licensee,)i(and)330 4187 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 -b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 -b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 -4296 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) -m(yrigh)m(t)j(la)m(w.)330 4435 y(A)i(\\Mo)s(di\014ed)f(V)-8 -b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f -(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4544 y(a)k(p)s(ortion)f -(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s -(di\014cations)f(and/or)h(translated)g(in)m(to)330 4654 -y(another)31 b(language.)330 4792 y(A)26 b(\\Secondary)g(Section")h(is) -f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f -(the)g(Do)s(cumen)m(t)330 4902 y(that)c(deals)g(exclusiv)m(ely)h(with)e -(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f -(Do)s(cumen)m(t)330 5011 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m -(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) -m(tains)h(nothing)f(that)330 5121 y(could)j(fall)h(directly)g(within)f -(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 -b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 -5230 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) -h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 -b(The)330 5340 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e -(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 -b(or)g(with)g(related)p eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Fo(22)2600 b(GNU)31 -b(Readline)g(Library)330 299 y(matters,)38 b(or)d(of)h(legal,)i -(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s -(osition)f(regarding)330 408 y(them.)330 549 y(The)25 -b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g -(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 -659 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)330 769 y(under)f(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 878 -y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 -b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) -e(In)m(v)-5 b(arian)m(t)330 988 y(Sections.)39 b(If)25 -b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) --5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 -1129 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g -(short)g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 -b(ron)m(t-Co)m(v)m(er)330 1238 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m -(er)j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g -(the)f(Do)s(cumen)m(t)h(is)f(released)g(under)330 1348 -y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 -b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a) -g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1457 -y(b)s(e)k(at)h(most)g(25)g(w)m(ords.)330 1598 y(A)36 -b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h -(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38 -b(represen)m(ted)330 1708 y(in)d(a)h(format)g(whose)g(sp)s -(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g -(public,)h(that)f(is)g(suitable)g(for)330 1817 y(revising)c(the)g(do)s -(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) -f(or)f(\(for)h(images)h(com-)330 1927 y(p)s(osed)23 b(of)h(pixels\))g -(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g -(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 2037 -y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g -(formatters)f(or)g(for)g(automatic)i(translation)f(to)330 -2146 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) -g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g -(otherwise)330 2256 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g -(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f -(arranged)g(to)330 2365 y(th)m(w)m(art)27 b(or)g(discourage)g -(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 -b(ransparen)m(t.)39 b(An)27 b(image)330 2475 y(format)35 -b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g -(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g -(is)330 2585 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i -(\\Opaque".)330 2725 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) --8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fh(asci)r(i)g -Fo(without)330 2835 y(markup,)41 b(T)-8 b(exinfo)40 b(input)f(format,)j -(LaT)1775 2855 y(E)1826 2835 y(X)d(input)g(format,)k -Fh(sgml)c Fo(or)g Fh(xml)g Fo(using)g(a)h(publicly)330 -2945 y(a)m(v)-5 b(ailable)34 b Fh(dtd)p Fo(,)d(and)g -(standard-conforming)g(simple)h Fh(html)p Fo(,)f(P)m(ostScript)h(or)f -Fh(pdf)g Fo(designed)g(for)330 3054 y(h)m(uman)37 b(mo)s(di\014cation.) -65 b(Examples)38 b(of)g(transparen)m(t)g(image)i(formats)e(include)g -Fh(png)p Fo(,)i Fh(x)n(cf)e Fo(and)330 3164 y Fh(jpg)p -Fo(.)63 b(Opaque)38 b(formats)g(include)g(proprietary)g(formats)g(that) -h(can)f(b)s(e)g(read)g(and)f(edited)i(only)330 3273 y(b)m(y)g -(proprietary)g(w)m(ord)g(pro)s(cessors,)j Fh(sgml)c Fo(or)i -Fh(xml)e Fo(for)i(whic)m(h)f(the)g Fh(dtd)g Fo(and/or)g(pro)s(cessing) -330 3383 y(to)s(ols)32 b(are)f(not)g(generally)h(a)m(v)-5 -b(ailable,)34 b(and)c(the)h(mac)m(hine-generated)i Fh(html)p -Fo(,)d(P)m(ostScript)i(or)f Fh(pdf)330 3493 y Fo(pro)s(duced)e(b)m(y)h -(some)h(w)m(ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)e(only)-8 -b(.)330 3634 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m -(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f -(follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g -(legibly)-8 b(,)30 b(the)e(material)h(this)f(License)g(requires)f(to)h -(app)s(ear)f(in)h(the)330 3853 y(title)g(page.)40 b(F)-8 -b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h -(an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 -3962 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s -(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 -4072 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 -4213 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g -(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330 -4322 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m -(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330 -4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g -(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m -(h)330 4542 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e -(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29 -b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g -(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e -(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g -(according)g(to)g(this)g(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t) -i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to) -g(the)g(notice)h(whic)m(h)e(states)i(that)330 5011 y(this)34 -b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33 -b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 -5121 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j -(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330 -5230 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8 -b(arran)m(t)m(y)39 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 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h -(this)f(License.)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Fo(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(23)199 299 -y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 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 -555 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(and)42 -b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i -(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g -(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f -(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f(License.)40 -b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 -b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g -(further)e(cop)m(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 -b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 -b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d -(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f -(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g -(the)f(conditions)330 1212 y(in)e(section)i(3.)330 1358 -y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g -(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g -(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 -y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 -b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g -(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 -1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f -(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 -1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i -(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 -b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m -(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 -b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 -b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 -2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) -m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f -(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 -b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i -(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e -(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g -(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 -2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) -m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) -330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d -(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 -2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e -(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g -(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f -(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) -g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 -3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 -y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f -(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 -3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g -(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) -330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h -(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d -(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e -(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m -(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 -b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g -(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h -(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e -(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g -(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 -b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 -4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s -(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h -(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i -(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h -(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 -4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g -(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 -4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s -(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m -(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g -(the)f(Do)s(cumen)m(t.)199 4755 y(4.)61 b(MODIFICA)-8 -b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) -h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) -e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) -m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f -(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 -b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 -b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f -(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h -(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s -(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 -b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s -(di\014ed)e(V)-8 b(ersion:)p eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Fo(24)2600 b(GNU)31 -b(Readline)g(Library)357 299 y(A.)60 b(Use)33 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(an)m(y\))g(a)g(title)h -(distinct)f(from)g(that)g(of)g(the)510 408 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(,)510 518 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 -628 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 758 -y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h(one)g -(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c(for)510 -867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g(Mo)s -(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h(\014v)m -(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s(cumen)m -(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g(few)m -(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g(y)m -(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 -b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g -(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 -b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 -b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) -363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g -(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 -y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g -(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 -1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g -(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 -2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f -(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e -(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f -(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 -y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) -392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g -(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g -(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d -(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 -b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 -b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e -(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f -(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s -(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i -(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m -(tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s -(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m -(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 -b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) -m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m -(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 -b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 -y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) -m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h -(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e -(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) -d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s -(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m -(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k -(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d -(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) -h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m -(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 -4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f -(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 -b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 -b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 -4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 -b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 -b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 -4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 -4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f -(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g -(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 -b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g -(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f -(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g -(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h -(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end -%%Page: 25 29 -TeXDict begin 25 28 bop 150 -116 a Fo(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(25)330 299 -y(y)m(our)32 b(option)h(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)330 408 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 518 -y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g -(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) -i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g -(nothing)g(but)330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s -(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 -b(parties|for)g(example,)g(statemen)m(ts)i(of)330 869 -y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) -m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 -978 y(de\014nition)i(of)h(a)f(standard.)330 1110 y(Y)-8 -b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m -(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 -b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e -(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i -(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s -(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f -(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m -(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439 -y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) -g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) -g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g -(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m -(y)g(arrangemen)m(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m -(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g -(not)f(add)g(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the) -f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e -(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 -2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s -(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s -(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g -(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g -(Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 -b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m -(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h -(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g -(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f -(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 -y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s -(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g -(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) -g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 -b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m -(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) -i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 -b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h -(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m -(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g -(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f -(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f -(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g -(the)g(original)h(author)f(or)330 3499 y(publisher)23 -b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m -(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 -3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h -(com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m -(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g -(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 -3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h -(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 -4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 -b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 -b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m -(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 -b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f -(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g -(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k -(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f -(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) -g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 -b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 -b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g -(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 -4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 -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 -(collection,)i(and)d(distribute)g(it)h(individu-)330 -5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g -(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 -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: 26 30 -TeXDict begin 26 29 bop 150 -116 a Fo(26)2600 b(GNU)31 -b(Readline)g(Library)199 299 y(7.)61 b(A)m(GGREGA)-8 -b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 428 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 -538 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m -(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) -330 648 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e -(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 -757 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m -(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 -b(When)330 867 y(the)28 b(Do)s(cumen)m(t)g(is)g(included)f(an)g -(aggregate,)32 b(this)27 b(License)h(do)s(es)g(not)g(apply)f(to)h(the)g -(other)g(w)m(orks)330 976 y(in)i(the)h(aggregate)i(whic)m(h)d(are)h -(not)f(themselv)m(es)i(deriv)-5 b(ativ)m(e)32 b(w)m(orks)e(of)h(the)f -(Do)s(cumen)m(t.)330 1106 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 -b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f -(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1215 -y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f -(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m -(er)330 1325 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m -(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h -(aggregate,)j(or)d(the)330 1435 y(electronic)37 b(equiv)-5 -b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f -(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 -1544 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f -(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1674 y(8.)61 -b(TRANSLA)-8 b(TION)330 1803 y(T)g(ranslation)41 b(is)f(considered)f(a) -i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e -(translations)330 1913 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h -(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 -b(arian)m(t)45 b(Sections)g(with)330 2022 y(translations)h(requires)f -(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i -(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2132 y(include)24 -b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 -b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 -2242 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 -b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f -(License,)i(and)d(all)j(the)330 2351 y(license)42 b(notices)g(in)f(the) -h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 -b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2461 -y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g -(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 -2570 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 -b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f -(translation)i(and)330 2680 y(the)f(original)i(v)m(ersion)e(of)h(this)f -(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m -(ersion)g(will)330 2790 y(prev)-5 b(ail.)330 2919 y(If)28 -b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m -(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 -3029 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m -(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 -3138 y(c)m(hanging)j(the)g(actual)h(title.)199 3268 y(9.)61 -b(TERMINA)-8 b(TION)330 3397 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h -(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3507 y(pro)m(vided)41 -b(for)h(under)e(this)i(License.)75 b(An)m(y)42 b(other)g(attempt)h(to)g -(cop)m(y)-8 b(,)46 b(mo)s(dify)-8 b(,)44 b(sublicense)e(or)330 -3616 y(distribute)36 b(the)h(Do)s(cumen)m(t)g(is)g(v)m(oid,)i(and)d -(will)h(automatically)i(terminate)f(y)m(our)e(righ)m(ts)h(under)330 -3726 y(this)28 b(License.)40 b(Ho)m(w)m(ev)m(er,)31 b(parties)d(who)f -(ha)m(v)m(e)i(receiv)m(ed)g(copies,)h(or)d(righ)m(ts,)i(from)f(y)m(ou)g -(under)e(this)330 3836 y(License)37 b(will)g(not)g(ha)m(v)m(e)h(their)f -(licenses)g(terminated)h(so)f(long)g(as)g(suc)m(h)f(parties)h(remain)g -(in)f(full)330 3945 y(compliance.)154 4075 y(10.)61 b(FUTURE)30 -b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 4204 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 4314 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g -(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h -(in)g(spirit)330 4423 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma) -m(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i -(concerns.)330 4533 y(See)c Fn(http://www.gnu.org/copy)o(left)o(/)p -Fo(.)330 4663 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m -(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 -b(If)29 b(the)g(Do)s(cumen)m(t)330 4772 y(sp)s(eci\014es)45 -b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g -(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 4882 -y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f -(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 -4991 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m -(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g -(b)m(y)330 5101 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 -b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s -(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 5210 -y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m -(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) -h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p -eop end -%%Page: 27 31 -TeXDict begin 27 30 bop 150 -116 a Fo(App)s(endix)29 -b(A:)h(Cop)m(ying)h(This)f(Man)m(ual)2105 b(27)150 299 -y Fc(A.1.1)62 b(ADDENDUM:)41 b(Ho)m(w)g(to)g(use)g(this)g(License)g -(for)h(y)m(our)f(do)s(cumen)m(ts)275 543 y Fo(T)-8 b(o)27 -b(use)g(this)g(License)h(in)f(a)h(do)s(cumen)m(t)f(y)m(ou)h(ha)m(v)m(e) -g(written,)g(include)f(a)h(cop)m(y)g(of)f(the)h(License)g(in)f(the)150 -653 y(do)s(cumen)m(t)j(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)m -(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 -765 y Fb(Copyright)42 b(\(C\))79 b Fa(year)88 b(your)40 -b(name)p Fb(.)468 852 y(Permission)i(is)e(granted)g(to)g(copy,)h -(distribute)g(and/or)g(modify)f(this)g(document)468 939 -y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i -(License,)f(Version)g(1.2)468 1026 y(or)f(any)g(later)g(version)h -(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 -1113 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g -(and)f(no)f(Back-Cover)j(Texts.)468 1200 y(A)e(copy)g(of)g(the)g -(license)g(is)g(included)h(in)f(the)g(section)h(entitled)g(``GNU)468 -1288 y(Free)g(Documentation)h(License''.)275 1410 y Fo(If)d(y)m(ou)h -(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 -b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k -(T)-8 b(exts,)43 b(replace)e(the)150 1520 y(\\with...T)-8 -b(exts.")43 b(line)30 b(with)h(this:)547 1632 y Fb(with)40 -b(the)g(Invariant)h(Sections)g(being)g Fa(list)f(their)g(titles)p -Fb(,)h(with)547 1719 y(the)f(Front-Cover)i(Texts)e(being)g -Fa(list)p Fb(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 -1806 y(being)f Fa(list)p Fb(.)275 1929 y Fo(If)34 b(y)m(ou)i(ha)m(v)m -(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 -b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 -2038 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e -(suit)f(the)h(situation.)275 2173 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f -(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m -(e)e(recommend)g(releasing)150 2283 y(these)44 b(examples)f(in)g -(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h -(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2392 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: 28 32 -TeXDict begin 28 31 bop 150 -116 a Fo(28)2600 b(GNU)31 -b(Readline)g(Library)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/readline/doc/texi2dvi b/readline/doc/texi2dvi index c0bcc0a..c186848 100755 --- a/readline/doc/texi2dvi +++ b/readline/doc/texi2dvi @@ -2,8 +2,7 @@ # texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources. # $Id$ # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, -# 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,9 +29,9 @@ rcs_revision='$Revision$' rcs_version=`set - $rcs_revision; echo $2` program=`echo $0 | sed -e 's!.*/!!'` -version="texi2dvi (GNU Texinfo 4.5) $rcs_version +version="texi2dvi (GNU Texinfo 4.0) $rcs_version -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1999 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING." @@ -47,52 +46,46 @@ is used to determine its language (LaTeX or Texinfo). Makeinfo is used to perform Texinfo macro expansion before running TeX when needed. -Operation modes: - -b, --batch no interaction - -c, --clean remove all auxiliary files - -D, --debug turn on shell debugging (set -x) - -h, --help display this help and exit successfully - -o, --output=OFILE leave output in OFILE (implies --clean); - Only one input FILE may be specified in this case - -q, --quiet no output unless errors (implies --batch) - -s, --silent same as --quiet - -v, --version display version information and exit successfully - -V, --verbose report on what is done - -TeX tuning: - -@ use @input instead of \input; for preloaded Texinfo - -e, -E, --expand force macro expansion using makeinfo - -I DIR search DIR for Texinfo files - -l, --language=LANG specify the LANG of FILE (LaTeX or Texinfo) - -p, --pdf use pdftex or pdflatex for processing - -t, --texinfo=CMD insert CMD after @setfilename in copy of input file - multiple values accumulate +Options: + -@ Use @input instead of \input; for preloaded Texinfo. + -b, --batch No interaction. + -c, --clean Remove all auxiliary files. + -D, --debug Turn on shell debugging (set -x). + -e, --expand Force macro expansion using makeinfo. + -I DIR Search DIR for Texinfo files. + -h, --help Display this help and exit successfully. + -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo. + -p, --pdf Use pdftex or pdflatex for processing. + -q, --quiet No output unless errors (implies --batch). + -s, --silent Same as --quiet. + -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file. + Multiple values accumulate. + -v, --version Display version information and exit successfully. + -V, --verbose Report on what is done. The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO, TEX (or PDFTEX), and TEXINDEX environment variables are used to run those commands, if they are set. Email bug reports to <bug-texinfo@gnu.org>, -general questions and discussion to <help-texinfo@gnu.org>. -Texinfo home page: http://www.gnu.org/software/texinfo/" +general questions and discussion to <help-texinfo@gnu.org>." # Initialize variables for option overriding and otherwise. # Don't use `unset' since old bourne shells don't have this command. # Instead, assign them an empty value. +escape='\' batch=false # eval for batch mode clean= debug= -escape='\' expand= # t for expansion via makeinfo -miincludes= # makeinfo include path oformat=dvi -oname= # --output -quiet= # by default let the tools' message be displayed set_language= +miincludes= # makeinfo include path textra= tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems. -txincludes= # TEXINPUTS extensions, with trailing colon +txincludes= # TEXINPUTS extensions txiprereq=19990129 # minimum texinfo.tex version to have macro expansion +quiet= # by default let the tools' message be displayed verbose=false # echo for verbose mode orig_pwd=`pwd` @@ -105,12 +98,6 @@ else path_sep=":" fi -# Pacify verbose cds. -CDPATH=${ZSH_VERSION+.}$path_sep - -# In case someone crazy insists on using grep -E. -: ${EGREP=egrep} - # Save this so we can construct a new TEXINPUTS path for each file. TEXINPUTS_orig="$TEXINPUTS" # Unfortunately makeindex does not read TEXINPUTS. @@ -149,21 +136,14 @@ while test x"$1" != x"$arg_sep"; do -q | -s | --q* | --s*) quiet=t; batch=eval;; -c | --c*) clean=t;; -D | --d*) debug=t;; - -e | -E | --e*) expand=t;; + -e | --e*) expand=t;; -h | --h*) echo "$usage"; exit 0;; -I | --I*) shift miincludes="$miincludes -I $1" - txincludes="$txincludes$1$path_sep" + txincludes="$txincludes$path_sep$1" ;; -l | --l*) shift; set_language=$1;; - -o | --o*) - shift - clean=t - case "$1" in - /* | ?:/*) oname=$1;; - *) oname="$orig_pwd/$1";; - esac;; -p | --p*) oformat=pdf;; -t | --t*) shift; textra="$textra\\ $1";; @@ -188,20 +168,11 @@ done shift # Interpret remaining command line args as filenames. -case $# in - 0) +if test $# = 0; then echo "$0: Missing file arguments." >&2 echo "$0: Try \`--help' for more information." >&2 exit 2 - ;; - 1) ;; - *) - if test -n "$oname"; then - echo "$0: Can't use option \`--output' with more than one argument." >&2 - exit 2 - fi - ;; -esac +fi # Prepare the temporary directory. Remove it at exit, unless debugging. if test -z "$debug"; then @@ -234,23 +205,14 @@ cat <<EOF >$comment_iftex_sed s/^@c texi2dvi// } } -/^@html/,/^@end html/{ - s/^/@c (texi2dvi)/ -} -/^@ifhtml/,/^@end ifhtml/{ - s/^/@c (texi2dvi)/ -} -/^@ifnottex/,/^@end ifnottex/{ - s/^/@c (texi2dvi)/ -} +/^@html/,/^@end html/d +/^@ifhtml/,/^@end ifhtml/d +/^@ifnottex/,/^@end ifnottex/d /^@ifinfo/,/^@end ifinfo/{ /^@node/p /^@menu/,/^@end menu/p - t - s/^/@c (texi2dvi)/ + d } -s/^@ifnotinfo/@c texi2dvi@ifnotinfo/ -s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/ EOF # Uncommenting is simple: Remove any leading `@c texi2dvi'. uncomment_iftex_sed=$utildir/uncomment.sed @@ -268,7 +230,7 @@ cat <<\EOF >$get_xref_files # Get list of xref files (indexes, tables and lists). # Find all files having root filename with a two-letter extension, # saves the ones that are really Texinfo-related files. .?o? catches -# many files: .toc, .log, LaTeX tables and lists, FiXme's .lox, maybe more. +# LaTeX tables and lists. for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do # If file is empty, skip it. test -s "$this_file" || continue @@ -311,7 +273,7 @@ for command_line_filename in ${1+"$@"}; do # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex), # prepend `./' in order to avoid that the tools take it as an option. - echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >/dev/null \ + echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \ || command_line_filename="./$command_line_filename" # See if the file exists. If it doesn't we're in trouble since, even @@ -352,67 +314,22 @@ for command_line_filename in ${1+"$@"}; do # Make all those directories and give up if we can't succeed. mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1 - # Source file might include additional sources. - # We want `.:$orig_pwd' before anything else. (We'll add `.:' later - # after all other directories have been turned into absolute paths.) - # `.' goes first to ensure that any old .aux, .cps, + # Source file might include additional sources. Put `.' and + # directory where source file(s) reside in TEXINPUTS before anything + # else. `.' goes first to ensure that any old .aux, .cps, # etc. files in ${directory} don't get used in preference to fresher # files in `.'. Include orig_pwd in case we are in clean mode, where # we've cd'd to a temp directory. - common="$orig_pwd$path_sep$filename_dir$path_sep$txincludes" + common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep" TEXINPUTS="$common$TEXINPUTS_orig" INDEXSTYLE="$common$INDEXSTYLE_orig" - # Convert relative paths to absolute paths, so we can run in another - # directory (e.g., in --clean mode, or during the macro-support - # detection.) - # - # Empty path components are meaningful to tex. We rewrite them - # as `EMPTY' so they don't get lost when we split on $path_sep. - TEXINPUTS=`echo $TEXINPUTS |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` - INDEXSTYLE=`echo $INDEXSTYLE |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` - save_IFS=$IFS - IFS=$path_sep - set x $TEXINPUTS; shift - TEXINPUTS=. - for dir - do - case $dir in - EMPTY) - TEXINPUTS=$TEXINPUTS$path_sep - ;; - [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. - TEXINPUTS=$TEXINPUTS$path_sep$dir - ;; - *) - abs=`cd "$dir" && pwd` && TEXINPUTS=$TEXINPUTS$path_sep$abs - ;; - esac - done - set x $INDEXSTYLE; shift - INDEXSTYLE=. - for dir - do - case $dir in - EMPTY) - INDEXSTYLE=$INDEXSTYLE$path_sep - ;; - [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. - INDEXSTYLE=$INDEXSTYLE$path_sep$dir - ;; - *) - abs=`cd "$dir" && pwd` && INDEXSTYLE=$INDEXSTYLE$path_sep$abs - ;; - esac - done - IFS=$save_IFS - # If the user explicitly specified the language, use that. # Otherwise, if the first line is \input texinfo, assume it's texinfo. # Otherwise, guess from the file extension. if test -n "$set_language"; then language=$set_language - elif sed 1q "$command_line_filename" | grep 'input texinfo' >/dev/null; then + elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then language=texinfo else language= @@ -456,9 +373,9 @@ for command_line_filename in ${1+"$@"}; do txiversion_tex=txiversion.tex echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex # Run in the tmpdir to avoid leaving files. - eval `cd $tmpdir >/dev/null && - $tex $txiversion_tex 2>/dev/null | - sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'` + eval `cd $tmpdir >/dev/null \ + && $tex $txiversion_tex 2>/dev/null \ +| sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'` $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then makeinfo= @@ -550,14 +467,10 @@ for command_line_filename in ${1+"$@"}; do # What we'll run texindex on -- exclude non-index files. # Since we know index files are last, it is correct to remove everything - # before .aux and .?o?. But don't really do <anything>o<anything> - # -- don't match whitespace as <anything>. - # Otherwise, if orig_xref_files contains something like - # foo.xo foo.whatever - # the space after the o will get matched. + # before .aux and .?o?. index_files=`echo "$orig_xref_files" \ | sed "s!.*\.aux!!g; - s!./$filename_noext\.[^ ]o[^ ]!!g; + s!./$filename_noext\..o.!!g; s/^[ ]*//;s/[ ]*$//"` # Run texindex (or makeindex) on current index files. If they # already exist, and after running TeX a first time the index @@ -576,8 +489,8 @@ for command_line_filename in ${1+"$@"}; do # Prevent $ESCAPE from being interpreted by the shell if it happens # to be `/'. $batch tex_args="\\${escape}nonstopmode\ \\${escape}input" - cmd="$tex $tex_args $filename_input" $verbose "Running $cmd ..." + cmd="$tex $tex_args $filename_input" if $cmd >&5; then :; else echo "$0: $tex exited with bad status, quitting." >&2 echo "$0: see $filename_noext.log for errors." >&2 @@ -595,7 +508,7 @@ for command_line_filename in ${1+"$@"}; do # subdirs, since texi2dvi does not try to compare xref files in # subdirs. Performing xref files test is still good since LaTeX # does not report changes in xref files. - if grep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then + if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then finished= fi @@ -637,13 +550,8 @@ for command_line_filename in ${1+"$@"}; do # - the next file is processed in correct conditions # - the temporary file can be removed if test -n "$clean"; then - if test -n "$oname"; then - dest=$oname - else - dest=$orig_pwd - fi - $verbose "Copying $oformat file from `pwd` to $dest" - cp -p "./$filename_noext.$oformat" "$dest" + $verbose "Copying $oformat file from `pwd` to $orig_pwd" + cp -p "./$filename_noext.$oformat" "$orig_pwd" cd / # in case $orig_pwd is on a different drive (for DOS) cd $orig_pwd || exit 1 fi diff --git a/readline/doc/texinfo.tex b/readline/doc/texinfo.tex deleted file mode 100644 index 555a077..0000000 --- a/readline/doc/texinfo.tex +++ /dev/null @@ -1,6688 +0,0 @@ -% texinfo.tex -- TeX macros to handle Texinfo files. -% -% Load plain if necessary, i.e., if running under initex. -\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi -% -\def\texinfoversion{2003-02-03.16} -% -% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -% -% This texinfo.tex file is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License as -% published by the Free Software Foundation; either version 2, or (at -% your option) any later version. -% -% This texinfo.tex file is distributed in the hope that it will be -% useful, but WITHOUT ANY WARRANTY; without even the implied warranty -% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -% General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this texinfo.tex file; see the file COPYING. If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. -% -% In other words, you are welcome to use, share and improve this program. -% You are forbidden to forbid anyone else to use, share and improve -% what you give them. Help stamp out software-hoarding! -% -% Please try the latest version of texinfo.tex before submitting bug -% reports; you can get the latest version from: -% ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex -% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) -% ftp://tug.org/tex/texinfo.tex -% (and all CTAN mirrors, see http://www.ctan.org), -% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. -% -% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. -% -% The texinfo.tex in any given Texinfo distribution could well be out -% of date, so if that's what you're using, please check. -% -% Send bug reports to bug-texinfo@gnu.org. Please include including a -% complete document in each bug report with which we can reproduce the -% problem. Patches are, of course, greatly appreciated. -% -% To process a Texinfo manual with TeX, it's most reliable to use the -% texi2dvi shell script that comes with the distribution. For a simple -% manual foo.texi, however, you can get away with this: -% tex foo.texi -% texindex foo.?? -% tex foo.texi -% tex foo.texi -% dvips foo.dvi -o # or whatever; this makes foo.ps. -% The extra TeX runs get the cross-reference information correct. -% Sometimes one run after texindex suffices, and sometimes you need more -% than two; texi2dvi does it as many times as necessary. -% -% It is possible to adapt texinfo.tex for other languages, to some -% extent. You can get the existing language-specific files from the -% full Texinfo distribution. - -\message{Loading texinfo [version \texinfoversion]:} - -% If in a .fmt file, print the version number -% and turn on active characters that we couldn't do earlier because -% they might have appeared in the input file name. -\everyjob{\message{[Texinfo version \texinfoversion]}% - \catcode`+=\active \catcode`\_=\active} - -\message{Basics,} -\chardef\other=12 - -% We never want plain's outer \+ definition in Texinfo. -% For @tex, we can use \tabalign. -\let\+ = \relax - -% Save some parts of plain tex whose names we will redefine. -\let\ptexb=\b -\let\ptexbullet=\bullet -\let\ptexc=\c -\let\ptexcomma=\, -\let\ptexdot=\. -\let\ptexdots=\dots -\let\ptexend=\end -\let\ptexequiv=\equiv -\let\ptexexclam=\! -\let\ptexgtr=> -\let\ptexhat=^ -\let\ptexi=\i -\let\ptexlbrace=\{ -\let\ptexless=< -\let\ptexplus=+ -\let\ptexrbrace=\} -\let\ptexstar=\* -\let\ptext=\t - -% If this character appears in an error message or help string, it -% starts a new line in the output. -\newlinechar = `^^J - -% Set up fixed words for English if not already set. -\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi -\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi -\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi -\ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi -\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi -\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi -\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi -\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi -\ifx\putwordof\undefined \gdef\putwordof{of}\fi -\ifx\putwordon\undefined \gdef\putwordon{on}\fi -\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi -\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi -\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi -\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi -\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi -\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi -\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi -% -\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi -\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi -\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi -\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi -\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi -\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi -\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi -\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi -\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi -\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi -\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi -\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi -% -\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi -\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi -\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi -\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi -\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi -\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi -\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi - -% In some macros, we cannot use the `\? notation---the left quote is -% in some cases the escape char. -\chardef\colonChar = `\: -\chardef\commaChar = `\, -\chardef\dotChar = `\. -\chardef\equalChar = `\= -\chardef\exclamChar= `\! -\chardef\questChar = `\? -\chardef\semiChar = `\; -\chardef\spaceChar = `\ % -\chardef\underChar = `\_ - -% Ignore a token. -% -\def\gobble#1{} - -% True if #1 is the empty string, i.e., called like `\ifempty{}'. -% -\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}% -\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}% - -% Hyphenation fixes. -\hyphenation{ap-pen-dix} -\hyphenation{mini-buf-fer mini-buf-fers} -\hyphenation{eshell} -\hyphenation{white-space} - -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% Sometimes it is convenient to have everything in the transcript file -% and nothing on the terminal. We don't just call \tracingall here, -% since that produces some useless output on the terminal. We also make -% some effort to order the tracing commands to reduce output in the log -% file; cf. trace.sty in LaTeX. -% -\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% -\def\loggingall{% - \tracingstats2 - \tracingpages1 - \tracinglostchars2 % 2 gives us more in etex - \tracingparagraphs1 - \tracingoutput1 - \tracingmacros2 - \tracingrestores1 - \showboxbreadth\maxdimen \showboxdepth\maxdimen - \ifx\eTeXversion\undefined\else % etex gives us more logging - \tracingscantokens1 - \tracingifs1 - \tracinggroups1 - \tracingnesting2 - \tracingassigns1 - \fi - \tracingcommands3 % 3 gives us more in etex - \errorcontextlines\maxdimen -}% - -% add check for \lastpenalty to plain's definitions. If the last thing -% we did was a \nobreak, we don't want to insert more space. -% -\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount - \removelastskip\penalty-50\smallskip\fi\fi} -\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount - \removelastskip\penalty-100\medskip\fi\fi} -\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount - \removelastskip\penalty-200\bigskip\fi\fi} - -% For @cropmarks command. -% Do @cropmarks to get crop marks. -% -\newif\ifcropmarks -\let\cropmarks = \cropmarkstrue -% -% Dimensions to add cropmarks at corners. -% Added by P. A. MacKay, 12 Nov. 1986 -% -\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines -\newdimen\cornerlong \cornerlong=1pc -\newdimen\cornerthick \cornerthick=.3pt -\newdimen\topandbottommargin \topandbottommargin=.75in - -% Main output routine. -\chardef\PAGE = 255 -\output = {\onepageout{\pagecontents\PAGE}} - -\newbox\headlinebox -\newbox\footlinebox - -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. -\def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% - \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% - % - {% - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \escapechar = `\\ % use backslash in output files. - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - \shipout\vbox{% - % Do this early so pdf references go to the beginning of the page. - \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi - % - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \vskip-\topandbottommargin - \vtop to0pt{% - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vss}% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingxxx.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 2\baselineskip - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \vbox to0pt{\vss - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - }% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \normalturnoffactive - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi -} - -\newinsert\margin \dimen\margin=\maxdimen - -\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} -{\catcode`\@ =11 -\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi -% marginal hacks, juha@viisa.uucp (Juha Takala) -\ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1 \unvbox#1 -\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi -\ifr@ggedbottom \kern-\dimen@ \vfil \fi} -} - -% Here are the rules for the cropmarks. Note that they are -% offset so that the space between them is truly \outerhsize or \outervsize -% (P. A. MacKay, 12 November, 1986) -% -\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} -\def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} -\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} -\def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - -% Parse an argument, then pass it to #1. The argument is the rest of -% the input line (except we remove a trailing comment). #1 should be a -% macro which expects an ordinary undelimited TeX argument. -% -\def\parsearg#1{% - \let\next = #1% - \begingroup - \obeylines - \futurelet\temp\parseargx -} - -% If the next token is an obeyed space (from an @example environment or -% the like), remove it and recurse. Otherwise, we're done. -\def\parseargx{% - % \obeyedspace is defined far below, after the definition of \sepspaces. - \ifx\obeyedspace\temp - \expandafter\parseargdiscardspace - \else - \expandafter\parseargline - \fi -} - -% Remove a single space (as the delimiter token to the macro call). -{\obeyspaces % - \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} - -{\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - % - % First remove any @c comment, then any @comment. - % Result of each macro is put in \toks0. - \argremovec #1\c\relax % - \expandafter\argremovecomment \the\toks0 \comment\relax % - % - % Call the caller's macro, saved as \next in \parsearg. - \expandafter\next\expandafter{\the\toks0}% - }% -} - -% Since all \c{,omment} does is throw away the argument, we can let TeX -% do that for us. The \relax here is matched by the \relax in the call -% in \parseargline; it could be more or less anything, its purpose is -% just to delimit the argument to the \c. -\def\argremovec#1\c#2\relax{\toks0 = {#1}} -\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} - -% \argremovec{,omment} might leave us with trailing spaces, though; e.g., -% @end itemize @c foo -% will have two active spaces as part of the argument with the -% `itemize'. Here we remove all active spaces from #1, and assign the -% result to \toks0. -% -% This loses if there are any *other* active characters besides spaces -% in the argument -- _ ^ +, for example -- since they get expanded. -% Fortunately, Texinfo does not define any such commands. (If it ever -% does, the catcode of the characters in questionwill have to be changed -% here.) But this means we cannot call \removeactivespaces as part of -% \argremovec{,omment}, since @c uses \parsearg, and thus the argument -% that \parsearg gets might well have any character at all in it. -% -\def\removeactivespaces#1{% - \begingroup - \ignoreactivespaces - \edef\temp{#1}% - \global\toks0 = \expandafter{\temp}% - \endgroup -} - -% Change the active space to expand to nothing. -% -\begingroup - \obeyspaces - \gdef\ignoreactivespaces{\obeyspaces\let =\empty} -\endgroup - - -\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - -%% These are used to keep @begin/@end levels from running away -%% Call \inENV within environments (after a \begingroup) -\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} -\def\ENVcheck{% -\ifENV\errmessage{Still within an environment; press RETURN to continue} -\endgroup\fi} % This is not perfect, but it should reduce lossage - -% @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Press RETURN to continue.} - -\outer\def\begin{\parsearg\beginxxx} - -\def\beginxxx #1{% -\expandafter\ifx\csname #1\endcsname\relax -{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else -\csname #1\endcsname\fi} - -% @end foo executes the definition of \Efoo. -% -\def\end{\parsearg\endxxx} -\def\endxxx #1{% - \removeactivespaces{#1}% - \edef\endthing{\the\toks0}% - % - \expandafter\ifx\csname E\endthing\endcsname\relax - \expandafter\ifx\csname \endthing\endcsname\relax - % There's no \foo, i.e., no ``environment'' foo. - \errhelp = \EMsimple - \errmessage{Undefined command `@end \endthing'}% - \else - \unmatchedenderror\endthing - \fi - \else - % Everything's ok; the right environment has been started. - \csname E\endthing\endcsname - \fi -} - -% There is an environment #1, but it hasn't been started. Give an error. -% -\def\unmatchedenderror#1{% - \errhelp = \EMsimple - \errmessage{This `@end #1' doesn't have a matching `@#1'}% -} - -% Define the control sequence \E#1 to give an unmatched @end error. -% -\def\defineunmatchedend#1{% - \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% -} - - -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt\char64}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt\char123}} -\def\myrbrace {{\tt\char125}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce \{ and \} commands for indices, - % and @{ and @} for the aux file. - \catcode`\{ = \other \catcode`\} = \other - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\! = 0 \catcode`\\ = \other - !gdef!lbracecmd[\{]% - !gdef!rbracecmd[\}]% - !gdef!lbraceatcmd[@{]% - !gdef!rbraceatcmd[@}]% -!endgroup - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown -% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% Be sure we're in horizontal mode when doing a tie, since we make space -% equivalent to this in @example-like environments. Otherwise, a space -% at the beginning of a line will start with \penalty -- and -% since \penalty is valid in vertical mode, we'd end up putting the -% penalty on the vertical list instead of in the new paragraph. -{\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } -} - -% @: forces normal size whitespace following. -\def\:{\spacefactor=1000 } - -% @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} - -% @. is an end-of-sentence period. -\def\.{.\spacefactor=3000 } - -% @! is an end-of-sentence bang. -\def\!{!\spacefactor=3000 } - -% @? is an end-of-sentence query. -\def\?{?\spacefactor=3000 } - -% @w prevents a word break. Without the \leavevmode, @w at the -% beginning of a paragraph, when TeX is still in vertical mode, would -% produce a whole line of output instead of starting the paragraph. -\def\w#1{\leavevmode\hbox{#1}} - -% @group ... @end group forces ... to be all on one page, by enclosing -% it in a TeX vbox. We use \vtop instead of \vbox to construct the box -% to keep its height that of a normal line. According to the rules for -% \topskip (p.114 of the TeXbook), the glue inserted is -% max (\topskip - \ht (first item), 0). If that height is large, -% therefore, no glue is inserted, and the space between the headline and -% the text is small, which looks bad. -% -% Another complication is that the group might be very large. This can -% cause the glue on the previous page to be unduly stretched, because it -% does not have much material. In this case, it's better to add an -% explicit \vfill so that the extra space is at the bottom. The -% threshold for doing this is if the group is more than \vfilllimit -% percent of a page (\vfilllimit can be changed inside of @tex). -% -\newbox\groupbox -\def\vfilllimit{0.7} -% -\def\group{\begingroup - \ifnum\catcode13=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - % - % The \vtop we start below produces a box with normal height and large - % depth; thus, TeX puts \baselineskip glue before it, and (when the - % next line of text is done) \lineskip glue after it. (See p.82 of - % the TeXbook.) Thus, space below is not quite equal to space - % above. But it's pretty close. - \def\Egroup{% - \egroup % End the \vtop. - % \dimen0 is the vertical size of the group's box. - \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox - % \dimen2 is how much space is left on the page (more or less). - \dimen2 = \pageheight \advance\dimen2 by -\pagetotal - % if the group doesn't fit on the current page, and it's a big big - % group, force a page break. - \ifdim \dimen0 > \dimen2 - \ifdim \pagetotal < \vfilllimit\pageheight - \page - \fi - \fi - \copy\groupbox - \endgroup % End the \group. - }% - % - \setbox\groupbox = \vtop\bgroup - % We have to put a strut on the last line in case the @group is in - % the midst of an example, rather than completely enclosing it. - % Otherwise, the interline space between the last line of the group - % and the first line afterwards is too small. But we can't put the - % strut in \Egroup, since there it would be on a line by itself. - % Hence this just inserts a strut at the beginning of each line. - \everypar = {\strut}% - % - % Since we have a strut on every line, we don't need any of TeX's - % normal interline spacing. - \offinterlineskip - % - % OK, but now we have to do something about blank - % lines in the input in @example-like environments, which normally - % just turn into \lisppar, which will insert no space now that we've - % turned off the interline space. Simplest is to make them be an - % empty paragraph. - \ifx\par\lisppar - \edef\par{\leavevmode \par}% - % - % Reset ^^M's definition to new definition of \par. - \obeylines - \fi - % - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment -} -% -% TeX puts in an \escapechar (i.e., `@') at the beginning of the help -% message, so this ends up printing `@group can only ...'. -% -\newhelp\groupinvalidhelp{% -group can only be used in environments such as @example,^^J% -where each line of input produces a line of output.} - -% @need space-in-mils -% forces a page break if there is not space-in-mils remaining. - -\newdimen\mil \mil=0.001in - -\def\need{\parsearg\needx} - -% Old definition--didn't work. -%\def\needx #1{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak -%\prevdepth=-1000pt -%}} - -\def\needx#1{% - % Ensure vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % If the @need value is less than one line space, it's useless. - \dimen0 = #1\mil - \dimen2 = \ht\strutbox - \advance\dimen2 by \dp\strutbox - \ifdim\dimen0 > \dimen2 - % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak - \fi -} - -% @br forces paragraph break - -\let\br = \par - -% @dots{} output an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in a typewriter -% font as three actual period characters. -% -\def\dots{% - \leavevmode - \hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \leavevmode - \hbox to 2em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - \spacefactor=3000 -} - - -% @page forces the start of a new page -% -\def\page{\par\vfill\supereject} - -% @exdent text.... -% outputs text on separate line in roman font, starting at standard page margin - -% This records the amount of indent in the innermost environment. -% That's how much \exdent should take out. -\newskip\exdentamount - -% This defn is used inside fill environments such as @defun. -\def\exdent{\parsearg\exdentyyy} -\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} - -% This defn is used inside nofill environments such as @example. -\def\nofillexdent{\parsearg\nofillexdentyyy} -\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount -\leftline{\hskip\leftskip{\rm#1}}}} - -% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current -% paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. -% -\newskip\inmarginspacing \inmarginspacing=1cm -\def\strutdepth{\dp\strutbox} -% -\def\doinmargin#1#2{\strut\vadjust{% - \nobreak - \kern-\strutdepth - \vtop to \strutdepth{% - \baselineskip=\strutdepth - \vss - % if you have multiple lines of stuff to put here, you'll need to - % make the vbox yourself of the appropriate size. - \ifx#1l% - \llap{\ignorespaces #2\hskip\inmarginspacing}% - \else - \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% - \fi - \null - }% -}} -\def\inleftmargin{\doinmargin l} -\def\inrightmargin{\doinmargin r} -% -% @inmargin{TEXT [, RIGHT-TEXT]} -% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; -% else use TEXT for both). -% -\def\inmargin#1{\parseinmargin #1,,\finish} -\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \def\lefttext{#1}% have both texts - \def\righttext{#2}% - \else - \def\lefttext{#1}% have only one text - \def\righttext{#1}% - \fi - % - \ifodd\pageno - \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin - \else - \def\temp{\inleftmargin\lefttext}% - \fi - \temp -} - -% @include file insert text of that file as input. -% Allow normal characters that we make active in the argument (a file name). -\def\include{\begingroup - \catcode`\\=\other - \catcode`~=\other - \catcode`^=\other - \catcode`_=\other - \catcode`|=\other - \catcode`<=\other - \catcode`>=\other - \catcode`+=\other - \parsearg\includezzz} -% Restore active chars for included file. -\def\includezzz#1{\endgroup\begingroup - % Read the included file in a group so nested @include's work. - \def\thisfile{#1}% - \let\value=\expandablevalue - \input\thisfile -\endgroup} - -\def\thisfile{} - -% @center line -% outputs that line, centered. -% -\def\center{\parsearg\docenter} -\def\docenter#1{{% - \ifhmode \hfil\break \fi - \advance\hsize by -\leftskip - \advance\hsize by -\rightskip - \line{\hfil \ignorespaces#1\unskip \hfil}% - \ifhmode \break \fi -}} - -% @sp n outputs n lines of vertical space - -\def\sp{\parsearg\spxxx} -\def\spxxx #1{\vskip #1\baselineskip} - -% @comment ...line which is ignored... -% @c is the same as @comment -% @ignore ... @end ignore is another way to write a comment - -\def\comment{\begingroup \catcode`\^^M=\other% -\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\commentxxx} -{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} - -\let\c=\comment - -% @paragraphindent NCHARS -% We'll use ems for NCHARS, close enough. -% We cannot implement @paragraphindent asis, though. -% -\def\asisword{asis} % no translation, these are keywords -\def\noneword{none} -% -\def\paragraphindent{\parsearg\doparagraphindent} -\def\doparagraphindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \defaultparindent = 0pt - \else - \defaultparindent = #1em - \fi - \fi - \parindent = \defaultparindent -} - -% @exampleindent NCHARS -% We'll use ems for NCHARS like @paragraphindent. -% It seems @exampleindent asis isn't necessary, but -% I preserve it to make it similar to @paragraphindent. -\def\exampleindent{\parsearg\doexampleindent} -\def\doexampleindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \lispnarrowing = 0pt - \else - \lispnarrowing = #1em - \fi - \fi -} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% We don't use $'s directly in the definition of \math because we need -% to set catcodes according to plain TeX first, to allow for subscripts, -% superscripts, special math chars, etc. -% -\let\implicitmath = $%$ font-lock fix -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ within @math be active (mathcode "8000), and distinguish by seeing -% if the current family is \slfam, which is what @var uses. -% -{\catcode\underChar = \active -\gdef\mathunderscore{% - \catcode\underChar=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% -}} -% -% Another complication: we want \\ (and @\) to output a \ character. -% FYI, plain.tex uses \\ as a temporary control sequence (why?), but -% this is not advertised and we don't care. Texinfo does not -% otherwise define @\. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \tex - \mathcode`\_="8000 \mathunderscore - \let\\ = \mathbackslash - \mathactive - \implicitmath\finishmath} -\def\finishmath#1{#1\implicitmath\Etex} - -% Some active characters (such as <) are spaced differently in math. -% We have to reset their definitions in case the @math was an -% argument to a command which set the catcodes (such as @item or @section). -% -{ - \catcode`^ = \active - \catcode`< = \active - \catcode`> = \active - \catcode`+ = \active - \gdef\mathactive{% - \let^ = \ptexhat - \let< = \ptexless - \let> = \ptexgtr - \let+ = \ptexplus - } -} - -% @bullet and @minus need the same treatment as @math, just above. -\def\bullet{\implicitmath\ptexbullet\implicitmath} -\def\minus{\implicitmath-\implicitmath} - -% @refill is a no-op. -\let\refill=\relax - -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate (before @setfilename). -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% @setfilename is done at the beginning of every texinfo file. -% So open here the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \iflinks - \readauxfile - \fi % \openindices needs to do some work in any case. - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. -} - -% Called from \setfilename. -% -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - - -\message{pdf,} -% adobe `portable' document format -\newcount\tempnum -\newcount\lnkcount -\newtoks\filename -\newcount\filenamelength -\newcount\pgn -\newtoks\toksA -\newtoks\toksB -\newtoks\toksC -\newtoks\toksD -\newbox\boxA -\newcount\countA -\newif\ifpdf -\newif\ifpdfmakepagedest - -\ifx\pdfoutput\undefined - \pdffalse - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\linkcolor = \relax - \let\pdfmakeoutlines = \relax -\else - \pdftrue - \pdfoutput = 1 - \input pdfcolor - \def\dopdfimage#1#2#3{% - \def\imagewidth{#2}% - \def\imageheight{#3}% - % without \immediate, pdftex seg faults when the same image is - % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) - \ifnum\pdftexversion < 14 - \immediate\pdfimage - \else - \immediate\pdfximage - \fi - \ifx\empty\imagewidth\else width \imagewidth \fi - \ifx\empty\imageheight\else height \imageheight \fi - \ifnum\pdftexversion<13 - #1.pdf% - \else - {#1.pdf}% - \fi - \ifnum\pdftexversion < 14 \else - \pdfrefximage \pdflastximage - \fi} - \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} - \def\pdfmkpgn#1{#1} - \let\linkcolor = \Blue % was Cyan, but that seems light? - \def\endlink{\Black\pdfendlink} - % Adding outlines to PDF; macros for calculating structure of outlines - % come from Petr Olsak - \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% - \else \csname#1\endcsname \fi} - \def\advancenumber#1{\tempnum=\expnumber{#1}\relax - \advance\tempnum by1 - \expandafter\xdef\csname#1\endcsname{\the\tempnum}} - \def\pdfmakeoutlines{{% - \openin 1 \jobname.toc - \ifeof 1\else\begingroup - \closein 1 - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % - \def\chapentry ##1##2##3{} - \def\secentry ##1##2##3##4{\advancenumber{chap##2}} - \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} - \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} - \let\appendixentry = \chapentry - \let\unnumbchapentry = \chapentry - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - \input \jobname.toc - \def\chapentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} - \def\secentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} - \def\subsecentry ##1##2##3##4##5{% - \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} - \def\subsubsecentry ##1##2##3##4##5##6{% - \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} - \let\appendixentry = \chapentry - \let\unnumbchapentry = \chapentry - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - % - % Make special characters normal for writing to the pdf file. - % - \indexnofonts - \let\tt=\relax - \turnoffactive - \input \jobname.toc - \endgroup\fi - }} - \def\makelinks #1,{% - \def\params{#1}\def\E{END}% - \ifx\params\E - \let\nextmakelinks=\relax - \else - \let\nextmakelinks=\makelinks - \ifnum\lnkcount>0,\fi - \picknum{#1}% - \startlink attr{/Border [0 0 0]} - goto name{\pdfmkpgn{\the\pgn}}% - \linkcolor #1% - \advance\lnkcount by 1% - \endlink - \fi - \nextmakelinks - } - \def\picknum#1{\expandafter\pn#1} - \def\pn#1{% - \def\p{#1}% - \ifx\p\lbrace - \let\nextpn=\ppn - \else - \let\nextpn=\ppnn - \def\first{#1} - \fi - \nextpn - } - \def\ppn#1{\pgn=#1\gobble} - \def\ppnn{\pgn=\first} - \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \fi - \nextsp} - \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} - \ifnum\pdftexversion < 14 - \let \startlink \pdfannotlink - \else - \let \startlink \pdfstartlink - \fi - \def\pdfurl#1{% - \begingroup - \normalturnoffactive\def\@{@}% - \let\value=\expandablevalue - \leavevmode\Red - \startlink attr{/Border [0 0 0]}% - user{/Subtype /Link /A << /S /URI /URI (#1) >>}% - % #1 - \endgroup} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS| - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \linkcolor #1\endlink} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\fi % \ifx\pdfoutput - - -\message{fonts,} -% Font-change commands. - -% Texinfo sort of supports the sans serif font style, which plain TeX does not. -% So we set up a \sf analogous to plain's \rm, etc. -\newfam\sffam -\def\sf{\fam=\sffam \tensf} -\let\li = \sf % Sometimes we call it \li, not \sf. - -% We don't need math for this one. -\def\ttsl{\tenttsl} - -% Default leading. -\newdimen\textleading \textleading = 13.2pt - -% Set the baselineskip to #1, and the lineskip and strut size -% correspondingly. There is no deep meaning behind these magic numbers -% used as factors; they just match (closely enough) what Knuth defined. -% -\def\lineskipfactor{.08333} -\def\strutheightpercent{.70833} -\def\strutdepthpercent {.29167} -% -\def\setleading#1{% - \normalbaselineskip = #1\relax - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% -} - -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). -% #3 is the font's design size, #4 is a scale factor -\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} - -% Use cm as the default font prefix. -% To specify the font prefix, you must define \fontprefix -% before you read in texinfo.tex. -\ifx\fontprefix\undefined -\def\fontprefix{cm} -\fi -% Support font families that don't use the same naming scheme as CM. -\def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold -\def\bfshape{b} -\def\bxshape{bx} -\def\ttshape{tt} -\def\ttbshape{tt} -\def\ttslshape{sltt} -\def\itshape{ti} -\def\itbshape{bxti} -\def\slshape{sl} -\def\slbshape{bxsl} -\def\sfshape{ss} -\def\sfbshape{ss} -\def\scshape{csc} -\def\scbshape{csc} - -\newcount\mainmagstep -\ifx\bigger\relax - % not really supported. - \mainmagstep=\magstep1 - \setfont\textrm\rmshape{12}{1000} - \setfont\texttt\ttshape{12}{1000} -\else - \mainmagstep=\magstephalf - \setfont\textrm\rmshape{10}{\mainmagstep} - \setfont\texttt\ttshape{10}{\mainmagstep} -\fi -% Instead of cmb10, you may want to use cmbx10. -% cmbx10 is a prettier font on its own, but cmb10 -% looks better when embedded in a line with cmr10 -% (in Bob's opinion). -\setfont\textbf\bfshape{10}{\mainmagstep} -\setfont\textit\itshape{10}{\mainmagstep} -\setfont\textsl\slshape{10}{\mainmagstep} -\setfont\textsf\sfshape{10}{\mainmagstep} -\setfont\textsc\scshape{10}{\mainmagstep} -\setfont\textttsl\ttslshape{10}{\mainmagstep} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep - -% A few fonts for @defun, etc. -\setfont\defbf\bxshape{10}{\magstep1} %was 1314 -\setfont\deftt\ttshape{10}{\magstep1} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} - -% Fonts for indices, footnotes, small examples (9pt). -\setfont\smallrm\rmshape{9}{1000} -\setfont\smalltt\ttshape{9}{1000} -\setfont\smallbf\bfshape{10}{900} -\setfont\smallit\itshape{9}{1000} -\setfont\smallsl\slshape{9}{1000} -\setfont\smallsf\sfshape{9}{1000} -\setfont\smallsc\scshape{10}{900} -\setfont\smallttsl\ttslshape{10}{900} -\font\smalli=cmmi9 -\font\smallsy=cmsy9 - -% Fonts for small examples (8pt). -\setfont\smallerrm\rmshape{8}{1000} -\setfont\smallertt\ttshape{8}{1000} -\setfont\smallerbf\bfshape{10}{800} -\setfont\smallerit\itshape{8}{1000} -\setfont\smallersl\slshape{8}{1000} -\setfont\smallersf\sfshape{8}{1000} -\setfont\smallersc\scshape{10}{800} -\setfont\smallerttsl\ttslshape{10}{800} -\font\smalleri=cmmi8 -\font\smallersy=cmsy8 - -% Fonts for title page: -\setfont\titlerm\rmbshape{12}{\magstep3} -\setfont\titleit\itbshape{10}{\magstep4} -\setfont\titlesl\slbshape{10}{\magstep4} -\setfont\titlett\ttbshape{12}{\magstep3} -\setfont\titlettsl\ttslshape{10}{\magstep4} -\setfont\titlesf\sfbshape{17}{\magstep1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} -\def\authortt{\sectt} - -% Chapter (and unnumbered) fonts (17.28pt). -\setfont\chaprm\rmbshape{12}{\magstep2} -\setfont\chapit\itbshape{10}{\magstep3} -\setfont\chapsl\slbshape{10}{\magstep3} -\setfont\chaptt\ttbshape{12}{\magstep2} -\setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{17}{1000} -\let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3} -\font\chapi=cmmi12 scaled \magstep2 -\font\chapsy=cmsy10 scaled \magstep3 - -% Section fonts (14.4pt). -\setfont\secrm\rmbshape{12}{\magstep1} -\setfont\secit\itbshape{10}{\magstep2} -\setfont\secsl\slbshape{10}{\magstep2} -\setfont\sectt\ttbshape{12}{\magstep1} -\setfont\secttsl\ttslshape{10}{\magstep2} -\setfont\secsf\sfbshape{12}{\magstep1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2} -\font\seci=cmmi12 scaled \magstep1 -\font\secsy=cmsy10 scaled \magstep2 - -% Subsection fonts (13.15pt). -\setfont\ssecrm\rmbshape{12}{\magstephalf} -\setfont\ssecit\itbshape{10}{1315} -\setfont\ssecsl\slbshape{10}{1315} -\setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{1315} -\setfont\ssecsf\sfbshape{12}{\magstephalf} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{\magstep1} -\font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled 1315 -% The smallcaps and symbol fonts should actually be scaled \magstep1.5, -% but that is not a standard magnification. - -% In order for the font changes to affect most math symbols and letters, -% we have to define the \textfont of the standard families. Since -% texinfo doesn't allow for producing subscripts and superscripts except -% in the main text, we don't bother to reset \scriptfont and -% \scriptscriptfont (which would also require loading a lot more fonts). -% -\def\resetmathfonts{% - \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy - \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf - \textfont\ttfam=\tentt \textfont\sffam=\tensf -} - -% The font-changing commands redefine the meanings of \tenSTYLE, instead -% of just \STYLE. We do this so that font changes will continue to work -% in math mode, where it is the current \fam that is relevant in most -% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam -% \tenbf}, for example. By redefining \tenbf, we obviate the need to -% redefine \bf itself. -\def\textfonts{% - \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl - \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl - \resetmathfonts \setleading{\textleading}} -\def\titlefonts{% - \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl - \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc - \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy - \let\tenttsl=\titlettsl - \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} -\def\chapfonts{% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl - \resetmathfonts \setleading{19pt}} -\def\secfonts{% - \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl - \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl - \resetmathfonts \setleading{16pt}} -\def\subsecfonts{% - \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl - \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl - \resetmathfonts \setleading{15pt}} -\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? -\def\smallfonts{% - \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl - \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc - \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy - \let\tenttsl=\smallttsl - \resetmathfonts \setleading{10.5pt}} -\def\smallerfonts{% - \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl - \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc - \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy - \let\tenttsl=\smallerttsl - \resetmathfonts \setleading{9.5pt}} - -% Set the fonts to use with the @small... environments. -\let\smallexamplefonts = \smallfonts - -% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample -% can fit this many characters: -% 8.5x11=86 smallbook=72 a4=90 a5=69 -% If we use \smallerfonts (8pt), then we can fit this many characters: -% 8.5x11=90+ smallbook=80 a4=90+ a5=77 -% For me, subjectively, the few extra characters that fit aren't worth -% the additional smallness of 8pt. So I'm making the default 9pt. -% -% By the way, for comparison, here's what fits with @example (10pt): -% 8.5x11=71 smallbook=60 a4=75 a5=58 -% -% I wish we used A4 paper on this side of the Atlantic. -% -% --karl, 24jan03. - - -% Set up the default fonts, so we can use them for creating boxes. -% -\textfonts - -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} - -% Count depth in font-changes, for error checks -\newcount\fontdepth \fontdepth=0 - -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000} -\setfont\shortcontbf\bxshape{12}{1000} -\setfont\shortcontsl\slshape{12}{1000} -\setfont\shortconttt\ttshape{12}{1000} - -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic - -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} -\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} - -\let\i=\smartitalic -\let\var=\smartslanted -\let\dfn=\smartslanted -\let\emph=\smartitalic -\let\cite=\smartslanted - -\def\b#1{{\bf #1}} -\let\strong=\b - -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } - -% Set sfcode to normal for the chars that usually have another value. -% Can't use plain's \frenchspacing because it uses the `\x notation, and -% sometimes \x has an active definition that messes things up. -% -\catcode`@=11 - \def\frenchspacing{% - \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m - \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m - } -\catcode`@=\other - -\def\t#1{% - {\tt \rawbackslash \frenchspacing #1}% - \null -} -\let\ttfont=\t -\def\samp#1{`\tclose{#1}'\null} -\setfont\keyrm\rmshape{8}{1000} -\font\keysy=cmsy9 -\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - -% @file, @option are the same as @samp. -\let\file=\samp -\let\option=\samp - -% @code is a modification of @t, -% which makes spaces the same size as normal in the surrounding text. -\def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \frenchspacing - #1% - }% - \null -} - -% We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overfull hboxes -% in the Emacs manual, the Library manual, etc. - -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -% -- rms. -{ - \catcode`\-=\active - \catcode`\_=\active - % - \global\def\code{\begingroup - \catcode`\-=\active \let-\codedash - \catcode`\_=\active \let_\codeunder - \codex - } - % - % If we end up with any active - characters when handling the index, - % just treat them as a normal -. - \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} -} - -\def\realdash{-} -\def\codedash{-\discretionary{}{}{}} -\def\codeunder{% - % this is all so @math{@code{var_name}+1} can work. In math mode, _ - % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) - % will therefore expand the active definition of _, which is us - % (inside @code that is), therefore an endless loop. - \ifusingtt{\ifmmode - \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. - \else\normalunderscore \fi - \discretionary{}{}{}}% - {\_}% -} -\def\codex #1{\tclose{#1}\endgroup} - -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\def\kbdinputstyle{\parsearg\kbdinputstylexxx} -\def\kbdinputstylexxx#1{% - \def\arg{#1}% - \ifx\arg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \else - \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle `\arg'}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is `distinct.' -\kbdinputstyle distinct - -\def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} - -% For @url, @env, @command quotes seem unnecessary, so use \code. -\let\url=\code -\let\env=\code -\let\command=\code - -% @uref (abbreviation for `urlref') takes an optional (comma-separated) -% second argument specifying the text to display and an optional third -% arg as text to display instead of (rather than in addition to) the url -% itself. First (mandatory) arg is the url. Perhaps eventually put in -% a hypertex \special here. -% -\def\uref#1{\douref #1,,,\finish} -\def\douref#1,#2,#3,#4\finish{\begingroup - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it - \else - \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url - \fi - \else - \code{#1}% only url given, so show it - \fi - \fi - \endlink -\endgroup} - -% rms does not like angle brackets --karl, 17may97. -% So now @email is just like @uref, unless we are pdf. -% -%\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} -\else - \let\email=\uref -\fi - -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. -% -\def\dmn#1{\thinspace #1} - -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - -% @acronym downcases the argument and prints in smallcaps. -\def\acronym#1{{\smallcaps \lowercase{#1}}} - -% @pounds{} is a sterling sign. -\def\pounds{{\it\$}} - - -\message{page headings,} - -\newskip\titlepagetopglue \titlepagetopglue = 1.5in -\newskip\titlepagebottomglue \titlepagebottomglue = 2pc - -% First the title page. Must do @settitle before @titlepage. -\newif\ifseenauthor -\newif\iffinishedtitlepage - -% Do an implicit @contents or @shortcontents after @end titlepage if the -% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. -% -\newif\ifsetcontentsaftertitlepage - \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue -\newif\ifsetshortcontentsaftertitlepage - \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue - -\def\shorttitlepage{\parsearg\shorttitlepagezzz} -\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - -\def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines - \let\tt=\authortt}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefonts\rm ##1} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% -% \def\page{\oldpage \hbox{}} -} - -\def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - % - % Need this before the \...aftertitlepage checks so that if they are - % in effect the toc pages will come out with page numbers. - \HEADINGSon - % - % If they want short, they certainly want long too. - \ifsetshortcontentsaftertitlepage - \shortcontents - \contents - \global\let\shortcontents = \relax - \global\let\contents = \relax - \fi - % - \ifsetcontentsaftertitlepage - \contents - \global\let\contents = \relax - \global\let\shortcontents = \relax - \fi -} - -\def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} - -%%% Set up page headings and footings. - -\let\thispage=\folio - -\newtoks\evenheadline % headline on even pages -\newtoks\oddheadline % headline on odd pages -\newtoks\evenfootline % footline on even pages -\newtoks\oddfootline % footline on odd pages - -% Now make Tex use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} -\let\HEADINGShook=\relax - -% Commands to set those variables. -% For example, this is what @headings on does -% @evenheading @thistitle|@thispage|@thischapter -% @oddheading @thischapter|@thispage|@thistitle -% @evenfooting @thisfile|| -% @oddfooting ||@thisfile - -\def\evenheading{\parsearg\evenheadingxxx} -\def\oddheading{\parsearg\oddheadingxxx} -\def\everyheading{\parsearg\everyheadingxxx} - -\def\evenfooting{\parsearg\evenfootingxxx} -\def\oddfooting{\parsearg\oddfootingxxx} -\def\everyfooting{\parsearg\everyfootingxxx} - -{\catcode`\@=0 % - -\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} -\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} -\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - -\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} -\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} -\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\pageheight by -\baselineskip - \global\advance\vsize by -\baselineskip -} - -\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} -% -}% unbind the catcode of @. - -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. -% @headings singleafter turns on single-sided headings after this page. -% By default, they are off at the start of a document, -% and turned `on' after @end titlepage. - -\def\headings #1 {\csname HEADINGS#1\endcsname} - -\def\HEADINGSoff{ -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff -% When we turn headings on, set the page number to 1. -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} -\let\contentsalignmacro = \chappager - -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} -\def\HEADINGSon{\HEADINGSdouble} - -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} -\let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} - -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} - -% Subroutines used in generating headings -% This produces Day Month Year style of output. -% Only define if not already defined, in case a txi-??.tex file has set -% up a different format (e.g., txi-cs.tex does this). -\ifx\today\undefined -\def\today{% - \number\day\space - \ifcase\month - \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr - \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug - \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec - \fi - \space\number\year} -\fi - -% @settitle line... specifies the title of the document, for headings. -% It generates no output of its own. -\def\thistitle{\putwordNoTitle} -\def\settitle{\parsearg\settitlezzz} -\def\settitlezzz #1{\gdef\thistitle{#1}} - - -\message{tables,} -% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). - -% default indentation of table text -\newdimen\tableindent \tableindent=.8in -% default indentation of @itemize and @enumerate text -\newdimen\itemindent \itemindent=.3in -% margin between end of table item and start of table text. -\newdimen\itemmargin \itemmargin=.1in - -% used internally for \itemindent minus \itemmargin -\newdimen\itemmax - -% Note @table, @vtable, and @vtable define @item, @itemx, etc., with -% these defs. -% They also define \itemindex -% to index the item name in whatever manner is desired (perhaps none). - -\newif\ifitemxneedsnegativevskip - -\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - -\def\internalBitem{\smallbreak \parsearg\itemzzz} -\def\internalBitemx{\itemxpar \parsearg\itemzzz} - -\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} -\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} - -\def\internalBkitem{\smallbreak \parsearg\kitemzzz} -\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} - -\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% - \itemzzz {#1}} - -\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% - \itemzzz {#1}} - -\def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemfont{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. (Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue.) However, if what follows is an environment - % such as @example, there will be no \parskip glue; then - % the negative vskip we just would cause the example and the item to - % crash together. So we use this bizarre value of 10001 as a signal - % to \aboveenvbreak to insert \parskip glue after all. - % (Possibly there are other commands that could be followed by - % @example which need the same treatment, but not section titles; or - % maybe section titles are the only special case and they should be - % penalty 10001...) - \penalty 10001 - \endgroup - \itemxneedsnegativevskipfalse - \else - % The item text fits into the space. Start a paragraph, so that the - % following text (if any) will end up on the same line. - \noindent - % Do this with kerns and \unhbox so that if there is a footnote in - % the item text, it can migrate to the main vertical list and - % eventually be printed. - \nobreak\kern-\tableindent - \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 - \unhbox0 - \nobreak\kern\dimen0 - \endgroup - \itemxneedsnegativevskiptrue - \fi -} - -\def\item{\errmessage{@item while not in a table}} -\def\itemx{\errmessage{@itemx while not in a table}} -\def\kitem{\errmessage{@kitem while not in a table}} -\def\kitemx{\errmessage{@kitemx while not in a table}} -\def\xitem{\errmessage{@xitem while not in a table}} -\def\xitemx{\errmessage{@xitemx while not in a table}} - -% Contains a kludge to get @end[description] to work. -\def\description{\tablez{\dontindex}{1}{}{}{}{}} - -% @table, @ftable, @vtable. -\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} -{\obeylines\obeyspaces% -\gdef\tablex #1^^M{% -\tabley\dontindex#1 \endtabley}} - -\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} -{\obeylines\obeyspaces% -\gdef\ftablex #1^^M{% -\tabley\fnitemindex#1 \endtabley -\def\Eftable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} -{\obeylines\obeyspaces% -\gdef\vtablex #1^^M{% -\tabley\vritemindex#1 \endtabley -\def\Evtable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\dontindex #1{} -\def\fnitemindex #1{\doind {fn}{\code{#1}}}% -\def\vritemindex #1{\doind {vr}{\code{#1}}}% - -{\obeyspaces % -\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% -\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} - -\def\tablez #1#2#3#4#5#6{% -\aboveenvbreak % -\begingroup % -\def\Edescription{\Etable}% Necessary kludge. -\let\itemindex=#1% -\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % -\ifnum 0#4>0 \tableindent=#4\mil \fi % -\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % -\def\itemfont{#2}% -\itemmax=\tableindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \tableindent % -\exdentamount=\tableindent -\parindent = 0pt -\parskip = \smallskipamount -\ifdim \parskip=0pt \parskip=2pt \fi% -\def\Etable{\endgraf\afterenvbreak\endgroup}% -\let\item = \internalBitem % -\let\itemx = \internalBitemx % -\let\kitem = \internalBkitem % -\let\kitemx = \internalBkitemx % -\let\xitem = \internalBxitem % -\let\xitemx = \internalBxitemx % -} - -% This is the counter used by @enumerate, which is really @itemize - -\newcount \itemno - -\def\itemize{\parsearg\itemizezzz} - -\def\itemizezzz #1{% - \begingroup % ended by the @end itemize - \itemizey {#1}{\Eitemize} -} - -\def\itemizey #1#2{% -\aboveenvbreak % -\itemmax=\itemindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \itemindent % -\exdentamount=\itemindent -\parindent = 0pt % -\parskip = \smallskipamount % -\ifdim \parskip=0pt \parskip=2pt \fi% -\def#2{\endgraf\afterenvbreak\endgroup}% -\def\itemcontents{#1}% -\let\item=\itemizeitem} - -% \splitoff TOKENS\endmark defines \first to be the first token in -% TOKENS, and \rest to be the remainder. -% -\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - -% Allow an optional argument of an uppercase letter, lowercase letter, -% or number, to specify the first label in the enumerated list. No -% argument is the same as `1'. -% -\def\enumerate{\parsearg\enumeratezzz} -\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} -\def\enumeratey #1 #2\endenumeratey{% - \begingroup % ended by the @end enumerate - % - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a <number>. - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi -} - -% An @enumerate whose labels are integers. The starting integer is -% given in \thearg. -% -\def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% -} - -% The starting (lowercase) letter is in \thearg. -\def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% -} - -% The starting (uppercase) letter is in \thearg. -\def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% -} - -% Call itemizey, adding a period to the first argument and supplying the -% common last two arguments. Also subtract one from the initial value in -% \itemno, since @item increments \itemno. -% -\def\startenumeration#1{% - \advance\itemno by -1 - \itemizey{#1.}\Eenumerate\flushcr -} - -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - -% Definition of @item while inside @itemize. - -\def\itemizeitem{% -\advance\itemno by 1 -{\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{In hmode at itemizeitem}\fi -{\parskip=0in \hskip 0pt -\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% -\vadjust{\penalty 1200}}% -\flushcr} - -% @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. -% -% For those who want to use more than one line's worth of words in -% the preamble, break the line within one argument and it -% will parse correctly, i.e., -% -% @multitable {Column 1 template} {Column 2 template} {Column 3 -% template} -% Not: -% @multitable {Column 1 template} {Column 2 template} -% {Column 3 template} - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab, @multitable or @end multitable do not need to be on their -% own lines, but it will not hurt if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt - -% Macros used to set up halign preamble: -% -\let\endsetuptable\relax -\def\xendsetuptable{\endsetuptable} -\let\columnfractions\relax -\def\xcolumnfractions{\columnfractions} -\newif\ifsetpercent - -% #1 is the part of the @columnfraction before the decimal point, which -% is presumably either 0 or the empty string (but we don't check, we -% just throw it away). #2 is the decimal part, which we use as the -% percent of \hsize for this column. -\def\pickupwholefraction#1.#2 {% - \global\advance\colcount by 1 - \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}% - \setuptable -} - -\newcount\colcount -\def\setuptable#1{% - \def\firstarg{#1}% - \ifx\firstarg\xendsetuptable - \let\go = \relax - \else - \ifx\firstarg\xcolumnfractions - \global\setpercenttrue - \else - \ifsetpercent - \let\go\pickupwholefraction - \else - \global\advance\colcount by 1 - \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a - % separator; typically that is always in the input, anyway. - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% - \fi - \fi - \ifx\go\pickupwholefraction - % Put the argument back for the \pickupwholefraction call, so - % we'll always have a period there to be parsed. - \def\go{\pickupwholefraction#1}% - \else - \let\go = \setuptable - \fi% - \fi - \go -} - -% @multitable ... @end multitable definitions: -% -\def\multitable{\parsearg\dotable} -\def\dotable#1{\bgroup - \vskip\parskip - \let\item=\crcrwithfootnotes - % A \tab used to include \hskip1sp. But then the space in a template - % line is not enough. That is bad. So let's go back to just & until - % we encounter the problem it was intended to solve again. --karl, - % nathan@acm.org, 20apr99. - \let\tab=&% - \let\startfootins=\startsavedfootnote - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - \def\Emultitable{% - \global\setpercentfalse - \crcrwithfootnotes\crcr - \egroup\egroup - }% - % - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. - \everycr{\noalign{% - % - % \filbreak%% keeps underfull box messages off when table breaks over pages. - % Maybe so, but it also creates really weird page breaks when the table - % breaks over pages. Wouldn't \vfil be better? Wait until the problem - % manifests itself, so it can be fixed for real --karl. - \global\colcount=0\relax}}% - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup&\global\advance\colcount by 1\relax - \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt - \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively marking - % characters. - \noindent\ignorespaces##\unskip\multistrut}\cr -} - -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -\else -%% FIXME: what is \box0 supposed to be? -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi} - -% In case a @footnote appears inside an alignment, save the footnote -% text to a box and make the \insert when a row of the table is -% finished. Otherwise, the insertion is lost, it never migrates to the -% main vertical list. --kasal, 22jan03. -% -\newbox\savedfootnotes -% -% \dotable \let's \startfootins to this, so that \dofootnote will call -% it instead of starting the insertion right away. -\def\startsavedfootnote{% - \global\setbox\savedfootnotes = \vbox\bgroup - \unvbox\savedfootnotes -} -\def\crcrwithfootnotes{% - \crcr - \ifvoid\savedfootnotes \else - \noalign{\insert\footins{\box\savedfootnotes}}% - \fi -} - -\message{conditionals,} -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% - \let\chapter=\relax - \let\unnumbered=\relax - \let\top=\relax - \let\unnumberedsec=\relax - \let\unnumberedsection=\relax - \let\unnumberedsubsec=\relax - \let\unnumberedsubsection=\relax - \let\unnumberedsubsubsec=\relax - \let\unnumberedsubsubsection=\relax - \let\section=\relax - \let\subsec=\relax - \let\subsubsec=\relax - \let\subsection=\relax - \let\subsubsection=\relax - \let\appendix=\relax - \let\appendixsec=\relax - \let\appendixsection=\relax - \let\appendixsubsec=\relax - \let\appendixsubsection=\relax - \let\appendixsubsubsec=\relax - \let\appendixsubsubsection=\relax - \let\contents=\relax - \let\smallbook=\relax - \let\titlepage=\relax -} - -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -% We use \empty instead of \relax for the @def... commands, so that \end -% doesn't throw an error. For instance: -% @ignore -% @deffn ... -% @end deffn -% @end ignore -% -% The @end deffn is going to get expanded, because we're trying to allow -% nested conditionals. But we don't want to expand the actual @deffn, -% since it might be syntactically correct and intended to be ignored. -% Since \end checks for \relax, using \empty does not cause an error. -% -\def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \empty - \let\defcvx = \empty - \let\Edefcv = \empty - \let\deffn = \empty - \let\deffnx = \empty - \let\Edeffn = \empty - \let\defindex = \relax - \let\defivar = \empty - \let\defivarx = \empty - \let\Edefivar = \empty - \let\defmac = \empty - \let\defmacx = \empty - \let\Edefmac = \empty - \let\defmethod = \empty - \let\defmethodx = \empty - \let\Edefmethod = \empty - \let\defop = \empty - \let\defopx = \empty - \let\Edefop = \empty - \let\defopt = \empty - \let\defoptx = \empty - \let\Edefopt = \empty - \let\defspec = \empty - \let\defspecx = \empty - \let\Edefspec = \empty - \let\deftp = \empty - \let\deftpx = \empty - \let\Edeftp = \empty - \let\deftypefn = \empty - \let\deftypefnx = \empty - \let\Edeftypefn = \empty - \let\deftypefun = \empty - \let\deftypefunx = \empty - \let\Edeftypefun = \empty - \let\deftypeivar = \empty - \let\deftypeivarx = \empty - \let\Edeftypeivar = \empty - \let\deftypemethod = \empty - \let\deftypemethodx = \empty - \let\Edeftypemethod = \empty - \let\deftypeop = \empty - \let\deftypeopx = \empty - \let\Edeftypeop = \empty - \let\deftypevar = \empty - \let\deftypevarx = \empty - \let\Edeftypevar = \empty - \let\deftypevr = \empty - \let\deftypevrx = \empty - \let\Edeftypevr = \empty - \let\defun = \empty - \let\defunx = \empty - \let\Edefun = \empty - \let\defvar = \empty - \let\defvarx = \empty - \let\Edefvar = \empty - \let\defvr = \empty - \let\defvrx = \empty - \let\Edefvr = \empty - \let\clear = \relax - \let\down = \relax - \let\evenfooting = \relax - \let\evenheading = \relax - \let\everyfooting = \relax - \let\everyheading = \relax - \let\headings = \relax - \let\include = \relax - \let\item = \relax - \let\lowersections = \relax - \let\oddfooting = \relax - \let\oddheading = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\raisesections = \relax - \let\ref = \relax - \let\set = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\settitle = \relax - \let\up = \relax - \let\verbatiminclude = \relax - \let\xref = \relax -} - -% Ignore @ignore, @ifhtml, @ifinfo, and the like. -% -\def\direntry{\doignore{direntry}} -\def\documentdescriptionword{documentdescription} -\def\documentdescription{\doignore{documentdescription}} -\def\html{\doignore{html}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifinfo{\doignore{ifinfo}} -\def\ifnottex{\doignore{ifnottex}} -\def\ifplaintext{\doignore{ifplaintext}} -\def\ifxml{\doignore{ifxml}} -\def\ignore{\doignore{ignore}} -\def\menu{\doignore{menu}} -\def\xml{\doignore{xml}} - -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory = \comment - -% Ignore text until a line `@end #1'. -% -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - % This @ is a catcode 12 token (that is the normal catcode of @ in - % this texinfo.tex file). We change the catcode of @ below to match. - \long\def\doignoretext##1@end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode\spaceChar = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % We must not have @c interpreted as a control sequence. - \catcode`\@ = 12 - % - \def\ignoreword{#1}% - \ifx\ignoreword\documentdescriptionword - % The c kludge breaks documentdescription, since - % `documentdescription' contains a `c'. Means not everything will - % be ignored inside @documentdescription, but oh well... - \else - % Make the letter c a comment character so that the rest of the line - % will be ignored. This way, the document can have (for example) - % @c @end ifinfo - % and the @end ifinfo will be properly ignored. - % (We've just changed @ to catcode 12.) - \catcode`\c = 14 - \fi - % - % And now expand the command defined above. - \doignoretext -} - -% What we do to finish off ignored text. -% -\def\enddoignore{\endgroup\ignorespaces}% - -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{WARNING: for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue - \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the chance of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because some sites - % might not have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont - \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont - \let\tensf=\nullfont - % Similarly for index fonts. - \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont - \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont - \let\smallsf=\nullfont - % Similarly for smallexample fonts. - \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont - \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont - \let\smallersf=\nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex. - \def\tex{\doignore{tex}}% - % Do not execute macro definitions. - % `c' is a comment character, so the word `macro' will get cut off. - \def\macro{\doignore{ma}}% -} - -% @set VAR sets the variable VAR to an empty value. -% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. -% -% Since we want to separate VAR from REST-OF-LINE (which might be -% empty), we can't just use \parsearg; we have to insert a space of our -% own to delimit the rest of the line, and then take it out again if we -% didn't need it. Make sure the catcode of space is correct to avoid -% losing inside @example, for instance. -% -\def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -{ - \catcode`\_ = \active - % - % We might end up with active _ or - characters in the argument if - % we're called from @code, as @code{@value{foo-bar_}}. So \let any - % such active characters to their normal equivalents. - \gdef\value{\begingroup - \catcode`\-=\other \catcode`\_=\other - \indexbreaks \let_\normalunderscore - \valuexxx} -} -\def\valuexxx#1{\expandablevalue{#1}\endgroup} - -% We have this subroutine so that we can handle at least some @value's -% properly in indexes (we \let\value to this in \indexdummies). Ones -% whose names contain - or _ still won't work, but we can't do anything -% about that. The command has to be fully expandable (if the variable -% is set), since the result winds up in the index file. This means that -% if the variable's value contains other Texinfo commands, it's almost -% certain it will fail (although perhaps we could fix that with -% sufficient work to do a one-level expansion on the result, instead of -% complete). -% -\def\expandablevalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {[No value for ``#1'']}% - \message{Variable `#1', used in @value, is not set.}% - \else - \csname SET#1\endcsname - \fi -} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -\def\ifset{\parsearg\doifset} -\def\doifset#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \let\next=\ifsetfail - \else - \let\next=\ifsetsucceed - \fi - \next -} -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} - -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\doifclear} -\def\doifclear#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \let\next=\ifclearsucceed - \else - \let\next=\ifclearfail - \fi - \next -} -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we -% read the text following, through the first @end iftex (etc.). Make -% `@end iftex' (etc.) valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\def\ifnothtml{\conditionalsucceed{ifnothtml}} -\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} -\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} -\defineunmatchedend{iftex} -\defineunmatchedend{ifnothtml} -\defineunmatchedend{ifnotinfo} -\defineunmatchedend{ifnotplaintext} - -% True conditional. Since \set globally defines its variables, we can -% just start and end a group (to keep the @end definition undefined at -% the outer level). -% -\def\conditionalsucceed#1{\begingroup - \expandafter\def\csname E#1\endcsname{\endgroup}% -} - -% @defininfoenclose. -\let\definfoenclose=\comment - - -\message{indexing,} -% Index generation facilities - -% Define \newwrite to be identical to plain tex's \newwrite -% except not \outer, so it can be used within \newindex. -{\catcode`\@=11 -\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} - -% \newindex {foo} defines an index named foo. -% It automatically defines \fooindex such that -% \fooindex ...rest of line... puts an entry in the index foo. -% It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. -% The name of an index should be no more than 2 characters long -% for the sake of vms. -% -\def\newindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file - \fi - \expandafter\xdef\csname#1index\endcsname{% % Define @#1index - \noexpand\doindex{#1}} -} - -% @defindex foo == \newindex{foo} -% -\def\defindex{\parsearg\newindex} - -% Define @defcodeindex, like @defindex except put all entries in @code. -% -\def\defcodeindex{\parsearg\newcodeindex} -% -\def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi - \expandafter\xdef\csname#1index\endcsname{% - \noexpand\docodeindex{#1}}% -} - - -% @synindex foo bar makes index foo feed into index bar. -% Do this instead of @defindex foo if you don't want it as a separate index. -% -% @syncodeindex foo bar similar, but put all entries made for index foo -% inside @code. -% -\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} -\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} - -% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), -% #3 the target index (bar). -\def\dosynindex#1#2#3{% - % Only do \closeout if we haven't already done it, else we'll end up - % closing the target index. - \expandafter \ifx\csname donesynindex#2\endcsname \undefined - % The \closeout helps reduce unnecessary open files; the limit on the - % Acorn RISC OS is a mere 16 files. - \expandafter\closeout\csname#2indfile\endcsname - \expandafter\let\csname\donesynindex#2\endcsname = 1 - \fi - % redefine \fooindfile: - \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname - \expandafter\let\csname#2indfile\endcsname=\temp - % redefine \fooindex: - \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% -} - -% Define \doindex, the driver for all \fooindex macros. -% Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. - -% \doindex just uses \parsearg; it calls \doind for the actual work. -% This is because \doind is more useful to call from other macros. - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} -\def\singleindexer #1{\doind{\indexname}{#1}} - -% like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} -\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} - -% Take care of Texinfo commands that can appear in an index entry. -% Since there are some commands we want to expand, and others we don't, -% we have to laboriously prevent expansion for those that we don't. -% -\def\indexdummies{% - \def\@{@}% change to @@ when we switch to @ as escape char in index files. - \def\ {\realbackslash\space }% - % Need these in case \tex is in effect and \{ is a \delimiter again. - % But can't use \lbracecmd and \rbracecmd because texindex assumes - % braces and backslashes are used only as delimiters. - \let\{ = \mylbrace - \let\} = \myrbrace - % - % \definedummyword defines \#1 as \realbackslash #1\space, thus - % effectively preventing its expansion. This is used only for control - % words, not control letters, because the \space would be incorrect - % for control characters, but is needed to separate the control word - % from whatever follows. - % - % For control letters, we have \definedummyletter, which omits the - % space. - % - % These can be used both for control words that take an argument and - % those that do not. If it is followed by {arg} in the input, then - % that will dutifully get written to the index (or wherever). - % - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% - }% - % - % Do the redefinitions. - \commondummies -} - -% For the aux file, @ is the escape character. So we want to redefine -% everything using @ instead of \realbackslash. When everything uses -% @, this will be simpler. -% -\def\atdummies{% - \def\@{@@}% - \def\ {@ }% - \let\{ = \lbraceatcmd - \let\} = \rbraceatcmd - % - % (See comments in \indexdummies.) - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{@##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{@##1}% - }% - % - % Do the redefinitions. - \commondummies -} - -% Called from \indexdummies and \atdummies. \definedummyword and -% \definedummyletter must be defined first. -% -\def\commondummies{% - % - \normalturnoffactive - % - % Control letters and accents. - \definedummyletter{_}% - \definedummyletter{,}% - \definedummyletter{"}% - \definedummyletter{`}% - \definedummyletter{'}% - \definedummyletter{^}% - \definedummyletter{~}% - \definedummyletter{=}% - \definedummyword{u}% - \definedummyword{v}% - \definedummyword{H}% - \definedummyword{dotaccent}% - \definedummyword{ringaccent}% - \definedummyword{tieaccent}% - \definedummyword{ubaraccent}% - \definedummyword{udotaccent}% - \definedummyword{dotless}% - % - % Other non-English letters. - \definedummyword{AA}% - \definedummyword{AE}% - \definedummyword{L}% - \definedummyword{OE}% - \definedummyword{O}% - \definedummyword{aa}% - \definedummyword{ae}% - \definedummyword{l}% - \definedummyword{oe}% - \definedummyword{o}% - \definedummyword{ss}% - % - % Although these internal commands shouldn't show up, sometimes they do. - \definedummyword{bf}% - \definedummyword{gtr}% - \definedummyword{hat}% - \definedummyword{less}% - \definedummyword{sf}% - \definedummyword{sl}% - \definedummyword{tclose}% - \definedummyword{tt}% - % - % Texinfo font commands. - \definedummyword{b}% - \definedummyword{i}% - \definedummyword{r}% - \definedummyword{sc}% - \definedummyword{t}% - % - \definedummyword{TeX}% - \definedummyword{acronym}% - \definedummyword{cite}% - \definedummyword{code}% - \definedummyword{command}% - \definedummyword{dfn}% - \definedummyword{dots}% - \definedummyword{emph}% - \definedummyword{env}% - \definedummyword{file}% - \definedummyword{kbd}% - \definedummyword{key}% - \definedummyword{math}% - \definedummyword{option}% - \definedummyword{samp}% - \definedummyword{strong}% - \definedummyword{uref}% - \definedummyword{url}% - \definedummyword{var}% - \definedummyword{w}% - % - % Assorted special characters. - \definedummyword{bullet}% - \definedummyword{copyright}% - \definedummyword{dots}% - \definedummyword{enddots}% - \definedummyword{equiv}% - \definedummyword{error}% - \definedummyword{expansion}% - \definedummyword{minus}% - \definedummyword{pounds}% - \definedummyword{point}% - \definedummyword{print}% - \definedummyword{result}% - % - % Handle some cases of @value -- where the variable name does not - % contain - or _, and the value does not contain any - % (non-fully-expandable) commands. - \let\value = \expandablevalue - % - % Normal spaces, not active ones. - \unsepspaces - % - % No macro expansion. - \turnoffmacros -} - -% If an index command is used in an @example environment, any spaces -% therein should become regular spaces in the raw index file, not the -% expansion of \tie (\leavevmode \penalty \@M \ ). -{\obeyspaces - \gdef\unsepspaces{\obeyspaces\let =\space}} - - -% \indexnofonts is used when outputting the strings to sort the index -% by, and when constructing control sequence names. It eliminates all -% control sequences and just writes whatever the best ASCII sort string -% would be for a given command (usually its argument). -% -\def\indexdummytex{TeX} -\def\indexdummydots{...} -% -\def\indexnofonts{% - \def\ { }% - \def\@{@}% - % how to handle braces? - \def\_{\normalunderscore}% - % - \let\,=\asis - \let\"=\asis - \let\`=\asis - \let\'=\asis - \let\^=\asis - \let\~=\asis - \let\==\asis - \let\u=\asis - \let\v=\asis - \let\H=\asis - \let\dotaccent=\asis - \let\ringaccent=\asis - \let\tieaccent=\asis - \let\ubaraccent=\asis - \let\udotaccent=\asis - \let\dotless=\asis - % - % Other non-English letters. - \def\AA{AA}% - \def\AE{AE}% - \def\L{L}% - \def\OE{OE}% - \def\O{O}% - \def\aa{aa}% - \def\ae{ae}% - \def\l{l}% - \def\oe{oe}% - \def\o{o}% - \def\ss{ss}% - \def\exclamdown{!}% - \def\questiondown{?}% - % - % Don't no-op \tt, since it isn't a user-level command - % and is used in the definitions of the active chars like <, >, |, etc. - % Likewise with the other plain tex font commands. - %\let\tt=\asis - % - % Texinfo font commands. - \let\b=\asis - \let\i=\asis - \let\r=\asis - \let\sc=\asis - \let\t=\asis - % - \let\TeX=\indexdummytex - \let\acronym=\asis - \let\cite=\asis - \let\code=\asis - \let\command=\asis - \let\dfn=\asis - \let\dots=\indexdummydots - \let\emph=\asis - \let\env=\asis - \let\file=\asis - \let\kbd=\asis - \let\key=\asis - \let\math=\asis - \let\option=\asis - \let\samp=\asis - \let\strong=\asis - \let\uref=\asis - \let\url=\asis - \let\var=\asis - \let\w=\asis -} - -\let\indexbackslash=0 %overridden during \printindex. -\let\SETmarginindex=\relax % put index entries in margin (undocumented)? - -% For \ifx comparisons. -\def\emptymacro{\empty} - -% Most index entries go through here, but \dosubind is the general case. -% -\def\doind#1#2{\dosubind{#1}{#2}\empty} - -% Workhorse for all \fooindexes. -% #1 is name of index, #2 is stuff to put there, #3 is subentry -- -% \empty if called from \doind, as we usually are. The main exception -% is with defuns, which call us directly. -% -\def\dosubind#1#2#3{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% - \fi - {% - \count255=\lastpenalty - {% - \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ - {% - \let\folio = 0% We will expand all macros now EXCEPT \folio. - \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - % The main index entry text. - \toks0 = {#2}% - % - % If third arg is present, precede it with space in sort key. - \def\thirdarg{#3}% - \ifx\thirdarg\emptymacro \else - % If the third (subentry) arg is present, add it to the index - % line to write. - \toks0 = \expandafter{\the\toks0 \space #3}% - \fi - % - % Process the index entry with all font commands turned off, to - % get the string to sort by. - {\indexnofonts - \edef\temp{\the\toks0}% need full expansion - \xdef\indexsorttmp{\temp}% - }% - % - % Set up the complete index entry, with both the sort key and - % the original text, including any font commands. We write - % three arguments to \entry to the .?? file (four in the - % subentry case), texindex reduces to two when writing the .??s - % sorted result. - \edef\temp{% - \write\csname#1indfile\endcsname{% - \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% - }% - % - % If a skip is the last thing on the list now, preserve it - % by backing up by \lastskip, doing the \write, then inserting - % the skip again. Otherwise, the whatsit generated by the - % \write will make \lastskip zero. The result is that sequences - % like this: - % @end defun - % @tindex whatever - % @defun ... - % will have extra space inserted, because the \medbreak in the - % start of the @defun won't see the skip inserted by the @end of - % the previous defun. - % - % But don't do any of this if we're not in vertical mode. We - % don't want to do a \vskip and prematurely end a paragraph. - % - % Avoid page breaks due to these extra skips, too. - % - \iflinks - \ifvmode - \skip0 = \lastskip - \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi - \fi - % - \temp % do the write - % - \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi - \fi - }% - }% - \penalty\count255 - }% -} - -% The index entry written in the file actually looks like -% \entry {sortstring}{page}{topic} -% or -% \entry {sortstring}{page}{topic}{subtopic} -% The texindex program reads in these files and writes files -% containing these kinds of lines: -% \initial {c} -% before the first topic whose initial is c -% \entry {topic}{pagelist} -% for a topic that is used without subtopics -% \primary {topic} -% for the beginning of a topic that is used with subtopics -% \secondary {subtopic}{pagelist} -% for each subtopic. - -% Define the user-accessible indexing commands -% @findex, @vindex, @kindex, @cindex. - -\def\findex {\fnindex} -\def\kindex {\kyindex} -\def\cindex {\cpindex} -\def\vindex {\vrindex} -\def\tindex {\tpindex} -\def\pindex {\pgindex} - -\def\cindexsub {\begingroup\obeylines\cindexsub} -{\obeylines % -\gdef\cindexsub "#1" #2^^M{\endgroup % -\dosubind{cp}{#2}{#1}}} - -% Define the macros used in formatting output of the sorted index material. - -% @printindex causes a particular index (the ??s file) to get printed. -% It does not print any chapter heading (usually an @unnumbered). -% -\def\printindex{\parsearg\doprintindex} -\def\doprintindex#1{\begingroup - \dobreak \chapheadingskip{10000}% - % - \smallfonts \rm - \tolerance = 9500 - \indexbreaks - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 11 - \openin 1 \jobname.#1s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % and it loses the chapter title and the aux file entries for the - % index. The easiest way to prevent this problem is to make sure - % there is some text. - \putwordIndexNonexistent - \else - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \temp - \ifeof 1 - \putwordIndexIsEmpty - \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\rawbackslashxx}% - \catcode`\\ = 0 - \escapechar = `\\ - \begindoublecolumns - \input \jobname.#1s - \enddoublecolumns - \fi - \fi - \closein 1 -\endgroup} - -% These macros are used by the sorted index file itself. -% Change them to control the appearance of the index. - -\def\initial#1{{% - % Some minor font changes for the special characters. - \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt - % - % Remove any glue we may have, we'll be inserting our own. - \removelastskip - % - % We like breaks before the index initials, so insert a bonus. - \penalty -300 - % - % Typeset the initial. Making this add up to a whole number of - % baselineskips increases the chance of the dots lining up from column - % to column. It still won't often be perfect, because of the stretch - % we need before each entry, but it's better. - % - % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus .5\baselineskip - \leftline{\secbf #1}% - \vskip .33\baselineskip plus .1\baselineskip - % - % Do our best not to break after the initial. - \nobreak -}} - -% This typesets a paragraph consisting of #1, dot leaders, and then #2 -% flush to the right margin. It is used for index and table of contents -% entries. The paragraph is indented by \leftskip. -% -\def\entry#1#2{\begingroup - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % Do not fill out the last line with white space. - \parfillskip = 0in - % - % No extra space above this paragraph. - \parskip = 0in - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % A bit of stretch before each entry for the benefit of balancing columns. - \vskip 0pt plus1pt - % - % Start a ``paragraph'' for the index entry so the line breaking - % parameters we've set above will have an effect. - \noindent - % - % Insert the text of the index entry. TeX will do line-breaking on it. - #1% - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#2}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd\ \else% - % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 - \null\nobreak\indexdotfill % Have leaders before the page number. - % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ #2% The page number ends the paragraph. - \fi - \fi% - \par -\endgroup} - -% Like \dotfill except takes at least 1 em. -\def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} - -\def\primary #1{\line{#1\hfil}} - -\newskip\secondaryindent \secondaryindent=0.5cm -\def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - #2 - \fi - \par -}} - -% Define two-column mode, which we use to typeset indexes. -% Adapted from the TeXbook, page 416, which is to say, -% the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 - -\newbox\partialpage -\newdimen\doublecolumnhsize - -\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % Grab any single-column material above us. - \output = {% - % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case we just ship out what is in \partialpage with the normal - % output routine. Generally, \partialpage will be empty when this - % runs and this will be a no-op. See the indexspread.tex test case. - \ifvoid\partialpage \else - \onepageout{\pagecontents\partialpage}% - \fi - % - \global\setbox\partialpage = \vbox{% - % Unvbox the main output page. - \unvbox\PAGE - \kern-\topskip \kern\baselineskip - }% - }% - \eject % run that output routine to set \partialpage - % - % Use the double-column output routine for subsequent pages. - \output = {\doublecolumnout}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. (We don't need a separate register here, - % since nobody clobbers \vsize.) - \vsize = 2\vsize -} - -% The double-column output routine for all double-column pages except -% the last. -% -\def\doublecolumnout{% - \splittopskip=\topskip \splitmaxdepth=\maxdepth - % Get the available space for the double columns -- the normal - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@ = \vsize - \divide\dimen@ by 2 - \advance\dimen@ by -\ht\partialpage - % - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 - \penalty\outputpenalty -} -% -% Re-output the contents of the output page -- any previous material, -% followed by the two boxes we just split, in box0 and box2. -\def\pagesofar{% - \unvbox\partialpage - % - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% -} -% -% All done with double columns. -\def\enddoublecolumns{% - \output = {% - % Split the last of the double-column material. Leave it on the - % current page, no automatic page break. - \balancecolumns - % - % If we end up splitting too much material for the current page, - % though, there will be another page break right after this \output - % invocation ends. Having called \balancecolumns once, we do not - % want to call it again. Therefore, reset \output to its normal - % definition right away. (We hope \balancecolumns will never be - % called on to balance too much material, but if it is, this makes - % the output somewhat more palatable.) - \global\output = {\onepageout{\pagecontents\PAGE}}% - }% - \eject - \endgroup % started in \begindoublecolumns - % - % \pagegoal was set to the doubled \vsize above, since we restarted - % the current page. We're now back to normal single-column - % typesetting, so reset \pagegoal to the normal \vsize (after the - % \endgroup where \vsize got restored). - \pagegoal = \vsize -} -% -% Called at the end of the double column material. -\def\balancecolumns{% - \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 % target to split to - %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht3>\dimen@ - \global\advance\dimen@ by 1pt - \repeat - }% - %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% - % - \pagesofar -} -\catcode`\@ = \other - - -\message{sectioning,} -% Chapters, sections, etc. - -\newcount\chapno -\newcount\secno \secno=0 -\newcount\subsecno \subsecno=0 -\newcount\subsubsecno \subsubsecno=0 - -% This counter is funny since it counts through charcodes of letters A, B, ... -\newcount\appendixno \appendixno = `\@ -% \def\appendixletter{\char\the\appendixno} -% We do the following for the sake of pdftex, which needs the actual -% letter in the expansion, not just typeset. -\def\appendixletter{% - \ifnum\appendixno=`A A% - \else\ifnum\appendixno=`B B% - \else\ifnum\appendixno=`C C% - \else\ifnum\appendixno=`D D% - \else\ifnum\appendixno=`E E% - \else\ifnum\appendixno=`F F% - \else\ifnum\appendixno=`G G% - \else\ifnum\appendixno=`H H% - \else\ifnum\appendixno=`I I% - \else\ifnum\appendixno=`J J% - \else\ifnum\appendixno=`K K% - \else\ifnum\appendixno=`L L% - \else\ifnum\appendixno=`M M% - \else\ifnum\appendixno=`N N% - \else\ifnum\appendixno=`O O% - \else\ifnum\appendixno=`P P% - \else\ifnum\appendixno=`Q Q% - \else\ifnum\appendixno=`R R% - \else\ifnum\appendixno=`S S% - \else\ifnum\appendixno=`T T% - \else\ifnum\appendixno=`U U% - \else\ifnum\appendixno=`V V% - \else\ifnum\appendixno=`W W% - \else\ifnum\appendixno=`X X% - \else\ifnum\appendixno=`Y Y% - \else\ifnum\appendixno=`Z Z% - % The \the is necessary, despite appearances, because \appendixletter is - % expanded while writing the .toc file. \char\appendixno is not - % expandable, thus it is written literally, thus all appendixes come out - % with the same letter (or @) in the toc without it. - \else\char\the\appendixno - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} - -% Each @chapter defines this as the name of the chapter. -% page headings and footings can use it. @section does likewise. -\def\thischapter{} -\def\thissection{} - -\newcount\absseclevel % used to calculate proper heading level -\newcount\secbase\secbase=0 % @raise/lowersections modify this count - -% @raisesections: treat @section as chapter, @subsection as section, etc. -\def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name - -% @lowersections: treat @chapter as section, @section as subsection, etc. -\def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name - -% Choose a numbered-heading macro -% #1 is heading level if unmodified by @raisesections or @lowersections -% #2 is text for heading -\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \chapterzzz{#2} -\or - \seczzz{#2} -\or - \numberedsubseczzz{#2} -\or - \numberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \chapterzzz{#2} - \else - \numberedsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses appendix heading levels -\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \appendixzzz{#2} -\or - \appendixsectionzzz{#2} -\or - \appendixsubseczzz{#2} -\or - \appendixsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \appendixzzz{#2} - \else - \appendixsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses numberless heading levels -\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \unnumberedzzz{#2} -\or - \unnumberedseczzz{#2} -\or - \unnumberedsubseczzz{#2} -\or - \unnumberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \unnumberedzzz{#2} - \else - \unnumberedsubsubseczzz{#2} - \fi -\fi -} - -% @chapter, @appendix, @unnumbered. -\def\thischaptername{No Chapter Title} -\outer\def\chapter{\parsearg\chapteryyy} -\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% - \chapmacro {#1}{\the\chapno}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - % We don't substitute the actual chapter name into \thischapter - % because we don't want its macros evaluated now. - \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% - \writetocentry{chap}{#1}{{\the\chapno}} - \donoderef - \global\let\section = \numberedsec - \global\let\subsection = \numberedsubsec - \global\let\subsubsection = \numberedsubsubsec -} - -% we use \chapno to avoid indenting back -\def\appendixbox#1{% - \setbox0 = \hbox{\putwordAppendix{} \the\chapno}% - \hbox to \wd0{#1\hss}} - -\outer\def\appendix{\parsearg\appendixyyy} -\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \appendixno by 1 - \message{\putwordAppendix\space \appendixletter}% - \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% - \writetocentry{appendix}{#1}{{\appendixletter}} - \appendixnoderef - \global\let\section = \appendixsec - \global\let\subsection = \appendixsubsec - \global\let\subsubsection = \appendixsubsubsec -} - -% @centerchap is like @unnumbered, but the heading is centered. -\outer\def\centerchap{\parsearg\centerchapyyy} -\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} - -% @top is like @unnumbered. -\outer\def\top{\parsearg\unnumberedyyy} - -\outer\def\unnumbered{\parsearg\unnumberedyyy} -\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - % - % This used to be simply \message{#1}, but TeX fully expands the - % argument to \message. Therefore, if #1 contained @-commands, TeX - % expanded them. For example, in `@unnumbered The @cite{Book}', TeX - % expanded @cite (which turns out to cause errors because \cite is meant - % to be executed, not expanded). - % - % Anyway, we don't want the fully-expanded definition of @cite to appear - % as a result of the \message, we just want `@cite' itself. We use - % \the<toks register> to achieve this: TeX expands \the<toks> only once, - % simply yielding the contents of <toks register>. (We also do this for - % the toc entries.) - \toks0 = {#1}\message{(\the\toks0)}% - % - \unnumbchapmacro {#1}% - \gdef\thischapter{#1}\gdef\thissection{#1}% - \writetocentry{unnumbchap}{#1}{{\the\chapno}} - \unnumbnoderef - \global\let\section = \unnumberedsec - \global\let\subsection = \unnumberedsubsec - \global\let\subsubsection = \unnumberedsubsubsec -} - -% Sections. -\outer\def\numberedsec{\parsearg\secyyy} -\def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% - \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}} - \donoderef - \nobreak -} - -\outer\def\appendixsection{\parsearg\appendixsecyyy} -\outer\def\appendixsec{\parsearg\appendixsecyyy} -\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% - \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} -\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{% - \plainsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}} - \unnumbnoderef - \nobreak -} - -% Subsections. -\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} -\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% - \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} - \donoderef - \nobreak -} - -\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} -\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% - \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} -\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{% - \plainsubsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} - \unnumbnoderef - \nobreak -} - -% Subsubsections. -\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} -\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \donoderef - \nobreak -} - -\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} -\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} -\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{% - \plainsubsubsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \unnumbnoderef - \nobreak -} - -% These are variants which are not "outer", so they can appear in @ifinfo. -% Actually, they should now be obsolete; ordinary section commands should work. -\def\infotop{\parsearg\unnumberedzzz} -\def\infounnumbered{\parsearg\unnumberedzzz} -\def\infounnumberedsec{\parsearg\unnumberedseczzz} -\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} -\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} - -\def\infoappendix{\parsearg\appendixzzz} -\def\infoappendixsec{\parsearg\appendixseczzz} -\def\infoappendixsubsec{\parsearg\appendixsubseczzz} -\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} - -\def\infochapter{\parsearg\chapterzzz} -\def\infosection{\parsearg\sectionzzz} -\def\infosubsection{\parsearg\subsectionzzz} -\def\infosubsubsection{\parsearg\subsubsectionzzz} - -% These macros control what the section commands do, according -% to what kind of chapter we are in (ordinary, appendix, or unnumbered). -% Define them by default for a numbered chapter. -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec - -% Define @majorheading, @heading and @subheading - -% NOTE on use of \vbox for chapter headings, section headings, and such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. -% 3) Likewise, headings look best if no \parindent is used, and -% if justification is not attempted. Hence \raggedright. - - -\def\majorheading{\parsearg\majorheadingzzz} -\def\majorheadingzzz #1{% - {\advance\chapheadingskip by 10pt \chapbreak }% - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -\def\chapheading{\parsearg\chapheadingzzz} -\def\chapheadingzzz #1{\chapbreak % - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -% @heading, @subheading, @subsubheading. -\def\heading{\parsearg\plainsecheading} -\def\subheading{\parsearg\plainsubsecheading} -\def\subsubheading{\parsearg\plainsubsubsecheading} - -% These macros generate a chapter, section, etc. heading only -% (including whitespace, linebreaking, etc. around it), -% given all the information in convenient, parsed form. - -%%% Args are the skip and penalty (usually negative) -\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - -\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} - -%%% Define plain chapter starts, and page on/off switching for it -% Parameter controlling skip before chapter headings (if needed) - -\newskip\chapheadingskip - -\def\chapbreak{\dobreak \chapheadingskip {-4000}} -\def\chappager{\par\vfill\supereject} -\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} - -\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} - -\def\CHAPPAGoff{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} - -\def\CHAPPAGon{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager -\global\def\HEADINGSon{\HEADINGSsingle}} - -\def\CHAPPAGodd{ -\global\let\contentsalignmacro = \chapoddpage -\global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage -\global\def\HEADINGSon{\HEADINGSdouble}} - -\CHAPPAGon - -\def\CHAPFplain{ -\global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain -\global\let\centerchapmacro=\centerchfplain} - -% Plain chapter opening. -% #1 is the text, #2 the chapter number or empty if unnumbered. -\def\chfplain#1#2{% - \pchapsepmacro - {% - \chapfonts \rm - \def\chapnum{#2}% - \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak -} - -% Plain opening for unnumbered. -\def\unnchfplain#1{\chfplain{#1}{}} - -% @centerchap -- centered and unnumbered. -\let\centerparametersmaybe = \relax -\def\centerchfplain#1{{% - \def\centerparametersmaybe{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt - }% - \chfplain{#1}{}% -}} - -\CHAPFplain % The default - -\def\unnchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\nobreak -} - -\def\chfopen #1#2{\chapoddpage {\chapfonts -\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% -\par\penalty 5000 % -} - -\def\centerchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\nobreak -} - -\def\CHAPFopen{ -\global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen -\global\let\centerchapmacro=\centerchfopen} - - -% Section titles. -\newskip\secheadingskip -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} -\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} -\def\plainsecheading#1{\sectionheading{sec}{}{#1}} - -% Subsection titles. -\newskip \subsecheadingskip -\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} -\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} -\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} - -% Subsubsection titles. -\let\subsubsecheadingskip = \subsecheadingskip -\let\subsubsecheadingbreak = \subsecheadingbreak -\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} -\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} - - -% Print any size section title. -% -% #1 is the section type (sec/subsec/subsubsec), #2 is the section -% number (maybe empty), #3 the text. -\def\sectionheading#1#2#3{% - {% - \expandafter\advance\csname #1headingskip\endcsname by \parskip - \csname #1headingbreak\endcsname - }% - {% - % Switch to the right set of fonts. - \csname #1fonts\endcsname \rm - % - % Only insert the separating space if we have a section number. - \def\secnum{#2}% - \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% - % - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 % zero if no section number - \unhbox0 #3}% - }% - % Add extra space after the heading -- either a line space or a - % paragraph space, whichever is more. (Some people like to set - % \parskip to large values for some reason.) Don't allow stretch, though. - \nobreak - \ifdim\parskip>\normalbaselineskip - \kern\parskip - \else - \kern\normalbaselineskip - \fi - \nobreak -} - - -\message{toc,} -% Table of contents. -\newwrite\tocfile - -% Write an entry to the toc file, opening it if necessary. -% Called from @chapter, etc. We supply {\folio} at the end of the -% argument, which will end up as the last argument to the \...entry macro. -% -% Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}} -% We open the .toc file for writing here instead of at @setfilename (or -% any other fixed time) so that @contents can be anywhere in the document. -% -\newif\iftocfileopened -\def\writetocentry#1#2#3{% - \iftocfileopened\else - \immediate\openout\tocfile = \jobname.toc - \global\tocfileopenedtrue - \fi - % - \iflinks - \toks0 = {#2}% - \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}% - \temp - \fi - % - % Tell \shipout to create a page destination if we're doing pdf, which - % will be the target of the links in the table of contents. We can't - % just do it on every page because the title pages are numbered 1 and - % 2 (the page numbers aren't printed), and so are the first two pages - % of the document. Thus, we'd have two destinations named `1', and - % two named `2'. - \ifpdf \pdfmakepagedesttrue \fi -} - -\newskip\contentsrightmargin \contentsrightmargin=1in -\newcount\savepageno -\newcount\lastnegativepageno \lastnegativepageno = -1 - -% Finish up the main text and prepare to read what we've written -% to \tocfile. -% -\def\startcontents#1{% - % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund <tege@matematik.su.se> - \contentsalignmacro - \immediate\closeout\tocfile - % - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \unnumbchapmacro{#1}\def\thischapter{}% - \savepageno = \pageno - \begingroup % Set up to handle contents files properly. - \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - % We can't do this, because then an actual ^ in a section - % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. - %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi - \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. - % - % Roman numerals for page numbers. - \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi -} - - -% Normal (long) toc. -\def\contents{% - \startcontents{\putwordTOC}% - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \pdfmakeoutlines - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} - -% And just the chapters. -\def\summarycontents{% - \startcontents{\putwordShortTOC}% - % - \let\chapentry = \shortchapentry - \let\appendixentry = \shortappendixentry - \let\unnumbchapentry = \shortunnumberedentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf - \let\sl=\shortcontsl \let\tt=\shortconttt - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\secentry ##1##2##3##4{} - \def\subsecentry ##1##2##3##4##5{} - \def\subsubsecentry ##1##2##3##4##5##6{} - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} -\let\shortcontents = \summarycontents - -\ifpdf - \pdfcatalog{/PageMode /UseOutlines}% -\fi - -% These macros generate individual entries in the table of contents. -% The first argument is the chapter or section name. -% The last argument is the page number. -% The arguments in between are the chapter number, section number, ... - -% Chapters, in the main contents. -\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} -% -% Chapters, in the short toc. -% See comments in \dochapentry re vbox and related settings. -\def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% -} - -% Appendices, in the main contents. -\def\appendixentry#1#2#3{% - \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}} -% -% Appendices, in the short toc. -\let\shortappendixentry = \shortchapentry - -% Typeset the label for a chapter or appendix for the short contents. -% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. -% We could simplify the code here by writing out an \appendixentry -% command in the toc file for appendices, instead of using \chapentry -% for both, but it doesn't seem worth it. -% -\newdimen\shortappendixwidth -% -\def\shortchaplabel#1{% - % This space should be enough, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % But use \hss just in case. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - \dimen0 = 1em - \hbox to \dimen0{#1\hss}% -} - -% Unnumbered chapters. -\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}} -\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}} - -% Sections. -\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} -\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}} - -% Subsections. -\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} -\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}} - -% And subsubsections. -\def\subsubsecentry#1#2#3#4#5#6{% - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} -\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}} - -% This parameter controls the indentation of the various levels. -\newdimen\tocindent \tocindent = 3pc - -% Now for the actual typesetting. In all these, #1 is the text and #2 is the -% page number. -% -% If the toc has to be broken over pages, we want it to be at chapters -% if at all possible; hence the \penalty. -\def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip -} - -\def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -% Final typesetting of a toc entry; we use the same \entry macro as for -% the index entries, but we want to suppress hyphenation here. (We -% can't do that in the \entry macro, since index entries might consist -% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -\def\tocentry#1#2{\begingroup - \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - % Do not use \turnoffactive in these arguments. Since the toc is - % typeset in cmr, characters such as _ would come out wrong; we - % have to do the usual translation tricks. - \entry{#1}{#2}% -\endgroup} - -% Space between chapter (or whatever) number and the title. -\def\labelspace{\hskip1em \relax} - -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - -\def\chapentryfonts{\secfonts \rm} -\def\secentryfonts{\textfonts} -\let\subsecentryfonts = \textfonts -\let\subsubsecentryfonts = \textfonts - - -\message{environments,} -% @foo ... @end foo. - -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} -% -\global\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{ - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} - -% @tex ... @end tex escapes into raw Tex temporarily. -% One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. - -\def\tex{\begingroup - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie - \catcode `\%=14 - \catcode `\+=\other - \catcode `\"=\other - \catcode `\==\other - \catcode `\|=\other - \catcode `\<=\other - \catcode `\>=\other - \escapechar=`\\ - % - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\{=\ptexlbrace - \let\+=\tabalign - \let\}=\ptexrbrace - \let\*=\ptexstar - \let\t=\ptext - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% -\let\Etex=\endgroup} - -% Define @lisp ... @end lisp. -% @lisp does a \begingroup so it can rebind things, -% including the definition of @end lisp (which normally is erroneous). - -% Amount to narrow the margins by for @lisp. -\newskip\lispnarrowing \lispnarrowing=0.4in - -% This is the definition that ^^M gets inside @lisp, @example, and other -% such environments. \null is better than a space, since it doesn't -% have any width. -\def\lisppar{\null\endgraf} - -% Make each space character in the input produce a normal interword -% space in the output. Don't allow a line break at this space, as this -% is used only in environments like @example, where each line of input -% should produce a line of output anyway. -% -{\obeyspaces % -\gdef\sepspaces{\obeyspaces\let =\tie}} - -% Define \obeyedspace to be our active space, whatever it is. This is -% for use in \parsearg. -{\sepspaces% -\global\let\obeyedspace= } - -% This space is always present above and below environments. -\newskip\envskipamount \envskipamount = 0pt - -% Make spacing and below environment symmetrical. We use \parskip here -% to help in doing that, since in @example-like environments \parskip -% is reset to zero; thus the \afterenvbreak inserts no space -- but the -% start of the next paragraph will insert \parskip. -% -\def\aboveenvbreak{{% - % =10000 instead of <10000 because of a special case in \itemzzz, q.v. - \ifnum \lastpenalty=10000 \else - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - % it's not a good place to break if the last penalty was \nobreak - % or better ... - \ifnum\lastpenalty>10000 \else \penalty-50 \fi - \vskip\envskipamount - \fi - \fi -}} - -\let\afterenvbreak = \aboveenvbreak - -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. -\let\nonarrowing=\relax - -% @cartouche ... @end cartouche: draw rectangle w/rounded corners around -% environment contents. -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle -% -\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth -\def\ctr{{\hskip 6pt\circle\char'010}} -\def\cbl{{\circle\char'012\hskip -6pt}} -\def\cbr{{\hskip 6pt\circle\char'011}} -\def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} -\def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} -% -\newskip\lskip\newskip\rskip - -\def\cartouche{% -\par % can't be in the midst of a paragraph. -\begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char, and rule thickness - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip -\def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup -\endgroup -}} - - -% This macro is called at the beginning of all the @example variants, -% inside a group. -\def\nonfillstart{% - \aboveenvbreak - \inENV % This group ends at the end of the body - \hfuzz = 12pt % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - \parindent = 0pt - \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \let\exdent=\nofillexdent - \let\nonarrowing=\relax - \fi -} - -% Define the \E... control sequence only if we are inside the particular -% environment, so the error checking in \end will work. -% -% To end an @example-like environment, we first end the paragraph (via -% \afterenvbreak's vertical glue), and then the group. That way we keep -% the zero \parskip that the environments set -- \parskip glue will be -% inserted at the beginning of the next paragraph in the document, after -% the environment. -% -\def\nonfillfinish{\afterenvbreak\endgroup} - -% @lisp: indented, narrowed, typewriter font. -\def\lisp{\begingroup - \nonfillstart - \let\Elisp = \nonfillfinish - \tt - \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return -} - -% @example: Same as @lisp. -\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} - -% @smallexample and @smalllisp: use smaller fonts. -% Originally contributed by Pavel@xerox. -\def\smalllisp{\begingroup - \def\Esmalllisp{\nonfillfinish\endgroup}% - \def\Esmallexample{\nonfillfinish\endgroup}% - \smallexamplefonts - \lisp -} -\let\smallexample = \smalllisp - - -% @display: same as @lisp except keep current font. -% -\def\display{\begingroup - \nonfillstart - \let\Edisplay = \nonfillfinish - \gobble -} -% -% @smalldisplay: @display plus smaller fonts. -% -\def\smalldisplay{\begingroup - \def\Esmalldisplay{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \display -} - -% @format: same as @display except don't narrow margins. -% -\def\format{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eformat = \nonfillfinish - \gobble -} -% -% @smallformat: @format plus smaller fonts. -% -\def\smallformat{\begingroup - \def\Esmallformat{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \format -} - -% @flushleft (same as @format). -% -\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} - -% @flushright. -% -\def\flushright{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushright = \nonfillfinish - \advance\leftskip by 0pt plus 1fill - \gobble -} - - -% @quotation does normal linebreaking (hence we can't use \nonfillstart) -% and narrows the margins. -% -\def\quotation{% - \begingroup\inENV %This group ends at the end of the @quotation body - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \parindent=0pt - % We have retained a nonzero parskip for the environment, since we're - % doing normal filling. So to avoid extra space below the environment... - \def\Equotation{\parskip = 0pt \nonfillfinish}% - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \let\nonarrowing = \relax - \fi -} - - -% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>} -% If we want to allow any <char> as delimiter, -% we need the curly braces so that makeinfo sees the @verb command, eg: -% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org -% -% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. -% -% [Knuth] p.344; only we need to do the other characters Texinfo sets -% active too. Otherwise, they get lost as the first character on a -% verbatim line. -\def\dospecials{% - \do\ \do\\\do\{\do\}\do\$\do\&% - \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% - \do\<\do\>\do\|\do\@\do+\do\"% -} -% -% [Knuth] p. 380 -\def\uncatcodespecials{% - \def\do##1{\catcode`##1=12}\dospecials} -% -% [Knuth] pp. 380,381,391 -% Disable Spanish ligatures ?` and !` of \tt font -\begingroup - \catcode`\`=\active\gdef`{\relax\lq} -\endgroup -% -% Setup for the @verb command. -% -% Eight spaces for a tab -\begingroup - \catcode`\^^I=\active - \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} -\endgroup -% -\def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim - \def\par{\leavevmode\endgraf}% - \catcode`\`=\active - \tabeightspaces - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces -} - -% Setup for the @verbatim environment -% -% Real tab expansion -\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount -% -\def\starttabbox{\setbox0=\hbox\bgroup} -\begingroup - \catcode`\^^I=\active - \gdef\tabexpand{% - \catcode`\^^I=\active - \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox - }% - } -\endgroup -\def\setupverbatim{% - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% - \catcode`\`=\active - \tabexpand - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% -} - -% Do the @verb magic: verbatim text is quoted by unique -% delimiter characters. Before first delimiter expect a -% right brace, after last delimiter expect closing brace: -% -% \def\doverb'{'<char>#1<char>'}'{#1} -% -% [Knuth] p. 382; only eat outer {} -\begingroup - \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12 - \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] -\endgroup -% -\def\verb{\begingroup\setupverb\doverb} -% -% -% Do the @verbatim magic: define the macro \doverbatim so that -% the (first) argument ends when '@end verbatim' is reached, ie: -% -% \def\doverbatim#1@end verbatim{#1} -% -% For Texinfo it's a lot easier than for LaTeX, -% because texinfo's \verbatim doesn't stop at '\end{verbatim}': -% we need not redefine '\', '{' and '}'. -% -% Inspired by LaTeX's verbatim command set [latex.ltx] -%% Include LaTeX hack for completeness -- never know -%% \begingroup -%% \catcode`|=0 \catcode`[=1 -%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active -%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ -%% #1|endgroup|def|Everbatim[]|end[verbatim]] -%% |endgroup -% -\begingroup - \catcode`\ =\active - \obeylines % - % ignore everything up to the first ^^M, that's the newline at the end - % of the @verbatim input line itself. Otherwise we get an extra blank - % line in the output. - \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}% -\endgroup -% -\def\verbatim{% - \def\Everbatim{\nonfillfinish\endgroup}% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim\doverbatim -} - -% @verbatiminclude FILE - insert text of file in verbatim environment. -% -% Allow normal characters that we make active in the argument (a file name). -\def\verbatiminclude{% - \begingroup - \catcode`\\=\other - \catcode`~=\other - \catcode`^=\other - \catcode`_=\other - \catcode`|=\other - \catcode`<=\other - \catcode`>=\other - \catcode`+=\other - \parsearg\doverbatiminclude -} -\def\setupverbatiminclude{% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim -} -% -\def\doverbatiminclude#1{% - % Restore active chars for included file. - \endgroup - \begingroup - \let\value=\expandablevalue - \def\thisfile{#1}% - \expandafter\expandafter\setupverbatiminclude\input\thisfile - \endgroup - \nonfillfinish - \endgroup -} - -% @copying ... @end copying. -% Save the text away for @insertcopying later. Many commands won't be -% allowed in this context, but that's ok. -% -% We save the uninterpreted tokens, rather than creating a box. -% Saving the text in a box would be much easier, but then all the -% typesetting commands (@smallbook, font changes, etc.) have to be done -% beforehand -- and a) we want @copying to be done first in the source -% file; b) letting users define the frontmatter in as flexible order as -% possible is very desirable. -% -\def\copying{\begingroup - % Define a command to swallow text until we reach `@end copying'. - % \ is the escape char in this texinfo.tex file, so it is the - % delimiter for the command; @ will be the escape char when we read - % it, but that doesn't matter. - \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}% - % - % We must preserve ^^M's in the input file; see \insertcopying below. - \catcode`\^^M = \active - \docopying -} - -% What we do to finish off the copying text. -% -\def\enddocopying{\endgroup\ignorespaces} - -% @insertcopying. Here we must play games with ^^M's. On the one hand, -% we need them to delimit commands such as `@end quotation', so they -% must be active. On the other hand, we certainly don't want every -% end-of-line to be a \par, as would happen with the normal active -% definition of ^^M. On the third hand, two ^^M's in a row should still -% generate a \par. -% -% Our approach is to make ^^M insert a space and a penalty1 normally; -% then it can also check if \lastpenalty=1. If it does, then manually -% do \par. -% -% This messes up the normal definitions of @c[omment], so we redefine -% it. Similarly for @ignore. (These commands are used in the gcc -% manual for man page generation.) -% -% Seems pretty fragile, most line-oriented commands will presumably -% fail, but for the limited use of getting the copying text (which -% should be quite simple) inserted, we can hope it's ok. -% -{\catcode`\^^M=\active % -\gdef\insertcopying{\begingroup % - \parindent = 0pt % looks wrong on title page - \def^^M{% - \ifnum \lastpenalty=1 % - \par % - \else % - \space \penalty 1 % - \fi % - }% - % - % Fix @c[omment] for catcode 13 ^^M's. - \def\c##1^^M{\ignorespaces}% - \let\comment = \c % - % - % Don't bother jumping through all the hoops that \doignore does, it - % would be very hard since the catcodes are already set. - \long\def\ignore##1\end ignore{\ignorespaces}% - % - \copyingtext % -\endgroup}% -} - -\message{defuns,} -% @defun etc. - -% Allow user to change definition object font (\df) internally -\def\setdeffont#1 {\csname DEF#1\endcsname} - -\newskip\defbodyindent \defbodyindent=.4in -\newskip\defargsindent \defargsindent=50pt -\newskip\deflastargmargin \deflastargmargin=18pt - -\newcount\parencount - -% We want ()&[] to print specially on the defun line. -% -\def\activeparens{% - \catcode`\(=\active \catcode`\)=\active - \catcode`\&=\active - \catcode`\[=\active \catcode`\]=\active -} - -% Make control sequences which act like normal parenthesis chars. -\let\lparen = ( \let\rparen = ) - -{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) - -% Be sure that we always have a definition for `(', etc. For example, -% if the fn name has parens in it, \boldbrax will not be in effect yet, -% so TeX would otherwise complain about undefined control sequence. -\global\let(=\lparen \global\let)=\rparen -\global\let[=\lbrack \global\let]=\rbrack - -\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } -\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} -% This is used to turn on special parens -% but make & act ordinary (given that it's active). -\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} - -% Definitions of (, ) and & used in args for functions. -% This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested - \global\advance\parencount by 1 -} -% -% This is the definition of ( when already inside a level of parens. -\gdef\opnested{\char`\(\global\advance\parencount by 1 } -% -\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. - % also in that case restore the outer-level definition of (. - \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi - \global\advance \parencount by -1 } -% If we encounter &foo, then turn on ()-hacking afterwards -\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } -% -\gdef\normalparens{\boldbrax\let&=\ampnr} -} % End of definition inside \activeparens -%% These parens (in \boldbrax) actually are a little bolder than the -%% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } -\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } -\let\ampnr = \& -\def\lbrb{{\bf\char`\[}} -\def\rbrb{{\bf\char`\]}} - -% Active &'s sneak into the index arguments, so make sure it's defined. -{ - \catcode`& = \active - \global\let& = \ampnr -} - -% \defname, which formats the name of the @def (not the args). -% #1 is the function name. -% #2 is the type of definition, such as "Function". -% -\def\defname#1#2{% - % How we'll output the type name. Putting it in brackets helps - % distinguish it from the body text that may end up on the next line - % just below it. - \ifempty{#2}% - \def\defnametype{}% - \else - \def\defnametype{[\rm #2]}% - \fi - % - % Get the values of \leftskip and \rightskip as they were outside the @def... - \dimen2=\leftskip - \advance\dimen2 by -\defbodyindent - % - % Figure out values for the paragraph shape. - \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}% - \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line - \dimen1=\hsize \advance \dimen1 by -\defargsindent % size for continuations - \parshape 2 0in \dimen0 \defargsindent \dimen1 - % - % Output arg 2 ("Function" or some such) but stuck inside a box of - % width 0 so it does not interfere with linebreaking. - \noindent - % - {% Adjust \hsize to exclude the ambient margins, - % so that \rightline will obey them. - \advance \hsize by -\dimen2 - \dimen3 = 0pt % was -1.25pc - \rlap{\rightline{\defnametype\kern\dimen3}}% - }% - % - % Allow all lines to be underfull without complaint: - \tolerance=10000 \hbadness=10000 - \advance\leftskip by -\defbodyindent - \exdentamount=\defbodyindent - {\df #1}\enskip % output function name - % \defunargs will be called next to output the arguments, if any. -} - -% Common pieces to start any @def... -% #1 is the \E... control sequence to end the definition (which we define). -% #2 is the \...x control sequence (which our caller defines). -% #3 is the control sequence to process the header, such as \defunheader. -% -\def\parsebodycommon#1#2#3{% - \begingroup\inENV - % If there are two @def commands in a row, we'll have a \nobreak, - % which is there to keep the function description together with its - % header. But if there's nothing but headers, we want to allow a - % break after all. Check for penalty 10002 (inserted by - % \defargscommonending) instead of 10000, since the sectioning - % commands insert a \penalty10000, and we don't want to allow a break - % between a section heading and a defun. - \ifnum\lastpenalty=10002 \penalty0 \fi - \medbreak - % - % Define the \E... end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - % - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent -} - -% Common part of the \...x definitions. -% -\def\defxbodycommon{% - % As with \parsebodycommon above, allow line break if we have multiple - % x headers in a row. It's not a great place, though. - \ifnum\lastpenalty=10000 \penalty1000 \fi - % - \begingroup\obeylines -} - -% Process body of @defun, @deffn, @defmac, etc. -% -\def\defparsebody#1#2#3{% - \parsebodycommon{#1}{#2}{#3}% - \def#2{\defxbodycommon \activeparens \spacesplit#3}% - \catcode\equalChar=\active - \begingroup\obeylines\activeparens - \spacesplit#3% -} - -% #1, #2, #3 are the common arguments (see \parsebodycommon above). -% #4, delimited by the space, is the class name. -% -\def\defmethparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}% - \begingroup\obeylines\activeparens - % The \empty here prevents misinterpretation of a construct such as - % @deffn {whatever} {Enharmonic comma} - % See comments at \deftpparsebody, although in our case we don't have - % to remove the \empty afterwards, since it is empty. - \spacesplit{#3{#4}}\empty -} - -% Used for @deftypemethod and @deftypeivar. -% #1, #2, #3 are the common arguments (see \defparsebody). -% #4, delimited by a space, is the class name. -% #5 is the method's return type. -% -\def\deftypemethparsebody#1#2#3#4 #5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#4}{#5}}% -} - -% Used for @deftypeop. The change from \deftypemethparsebody is an -% extra argument at the beginning which is the `category', instead of it -% being the hardwired string `Method' or `Instance Variable'. We have -% to account for this both in the \...x definition and in parsing the -% input at hand. Thus also need a control sequence (passed as #5) for -% the \E... definition to assign the category name to. -% -\def\deftypeopparsebody#1#2#3#4#5 #6 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 ##3 {\def#4{##1}% - \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#5}{#6}}% -} - -% For @defop. -\def\defopparsebody #1#2#3#4#5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\def#4{##1}% - \defxbodycommon \activeparens \spacesplit{#3{##2}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#5}}% -} - -% These parsing functions are similar to the preceding ones -% except that they do not make parens into active characters. -% These are used for "variables" since they have no arguments. -% -\def\defvarparsebody #1#2#3{% - \parsebodycommon{#1}{#2}{#3}% - \def#2{\defxbodycommon \spacesplit#3}% - \catcode\equalChar=\active - \begingroup\obeylines - \spacesplit#3% -} - -% @defopvar. -\def\defopvarparsebody #1#2#3#4#5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\def#4{##1}% - \defxbodycommon \spacesplit{#3{##2}}}% - \begingroup\obeylines - \spacesplit{#3{#5}}% -} - -\def\defvrparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% - \begingroup\obeylines - \spacesplit{#3{#4}}% -} - -% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the -% type is just `struct', because we lose the braces in `{struct -% termios}' when \spacesplit reads its undelimited argument. Sigh. -% \let\deftpparsebody=\defvrparsebody -% -% So, to get around this, we put \empty in with the type name. That -% way, TeX won't find exactly `{...}' as an undelimited argument, and -% won't strip off the braces. -% -\def\deftpparsebody #1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% - \begingroup\obeylines - \spacesplit{\parsetpheaderline{#3{#4}}}\empty -} - -% Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does. -% -\def\removeemptybraces\empty#1\relax{#1} - -% After \spacesplit has done its work, this is called -- #1 is the final -% thing to call, #2 the type name (which starts with \empty), and #3 -% (which might be empty) the arguments. -% -\def\parsetpheaderline#1#2#3{% - #1{\removeemptybraces#2\relax}{#3}% -}% - -% Split up #2 (the rest of the input line) at the first space token. -% call #1 with two arguments: -% the first is all of #2 before the space token, -% the second is all of #2 after that space token. -% If #2 contains no space token, all of it is passed as the first arg -% and the second is passed as empty. -% -{\obeylines % - \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}% - \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{% - \ifx\relax #3% - #1{#2}{}% - \else % - #1{#2}{#3#4}% - \fi}% -} - -% Define @defun. - -% This is called to end the arguments processing for all the @def... commands. -% -\def\defargscommonending{% - \interlinepenalty = 10000 - \advance\rightskip by 0pt plus 1fil - \endgraf - \nobreak\vskip -\parskip - \penalty 10002 % signal to \parsebodycommon. -} - -% This expands the args and terminates the paragraph they comprise. -% -\def\defunargs#1{\functionparens \sl -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Set the font temporarily and use \font in case \setfont made \tensl a macro. -{\tensl\hyphenchar\font=0}% -#1% -{\tensl\hyphenchar\font=45}% -\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% - \defargscommonending -} - -\def\deftypefunargs #1{% -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Use \boldbraxnoamp, not \functionparens, so that & is not special. -\boldbraxnoamp -\tclose{#1}% avoid \code because of side effects on active chars - \defargscommonending -} - -% Do complete processing of one @defun or @defunx line already parsed. - -% @deffn Command forward-char nchars - -\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} - -\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% -\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defun == @deffn Function - -\def\defun{\defparsebody\Edefun\defunx\defunheader} - -\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDeffunc}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @deftypefun int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} - -% #1 is the data type. #2 is the name and args. -\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} -% #1 is the data type, #2 the name, #3 the args. -\def\deftypefunheaderx #1#2 #3\relax{% -\doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% -\deftypefunargs {#3}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} - -% \defheaderxcond#1\relax$.$ -% puts #1 in @code, followed by a space, but does nothing if #1 is null. -\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} - -% #1 is the classification. #2 is the data type. #3 is the name and args. -\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} -% #1 is the classification, #2 the data type, #3 the name, #4 the args. -\def\deftypefnheaderx #1#2#3 #4\relax{% -\doind {fn}{\code{#3}}% Make entry in function index -\begingroup -\normalparens % notably, turn off `&' magic, which prevents -% at least some C++ text from working -\defname {\defheaderxcond#2\relax$.$#3}{#1}% -\deftypefunargs {#4}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defmac == @deffn Macro - -\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} - -\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefmac}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defspec == @deffn Special Form - -\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} - -\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefspec}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defop CATEGORY CLASS OPERATION ARG... -% -\def\defop #1 {\def\defoptype{#1}% -\defopparsebody\Edefop\defopx\defopheader\defoptype} -% -\def\defopheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry - \begingroup - \defname{#2}{\defoptype\ \putwordon\ #1}% - \defunargs{#3}% - \endgroup -} - -% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... -% -\def\deftypeop #1 {\def\deftypeopcategory{#1}% - \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader - \deftypeopcategory} -% -% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. -\def\deftypeopheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\deftypeopcategory\ \putwordon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypemethod CLASS TYPE METHOD ARG... -% -\def\deftypemethod{% - \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} -% -% #1 is the class name, #2 the data type, #3 the method name, #4 the args. -\def\deftypemethodheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypeivar CLASS TYPE VARNAME -% -\def\deftypeivar{% - \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} -% -% #1 is the class name, #2 the data type, #3 the variable name. -\def\deftypeivarheader#1#2#3{% - \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\putwordInstanceVariableof\ \code{#1}}% - \defvarargs{#3}% - \endgroup -} - -% @defmethod == @defop Method -% -\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} -% -% #1 is the class name, #2 the method name, #3 the args. -\def\defmethodheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{#2}{\putwordMethodon\ \code{#1}}% - \defunargs{#3}% - \endgroup -} - -% @defcv {Class Option} foo-class foo-flag - -\def\defcv #1 {\def\defcvtype{#1}% -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} - -\def\defcvarheader #1#2#3{% - \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry - \begingroup - \defname{#2}{\defcvtype\ \putwordof\ #1}% - \defvarargs{#3}% - \endgroup -} - -% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME -% -\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} -% -\def\defivarheader#1#2#3{% - \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index - \begingroup - \defname{#2}{\putwordInstanceVariableof\ #1}% - \defvarargs{#3}% - \endgroup -} - -% @defvar -% First, define the processing that is wanted for arguments of @defvar. -% This is actually simple: just print them in roman. -% This must expand the args and terminate the paragraph they make up -\def\defvarargs #1{\normalparens #1% - \defargscommonending -} - -% @defvr Counter foo-count - -\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} - -\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% -\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} - -% @defvar == @defvr Variable - -\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} - -\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefvar}% -\defvarargs {#2}\endgroup % -} - -% @defopt == @defvr {User Option} - -\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} - -\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefopt}% -\defvarargs {#2}\endgroup % -} - -% @deftypevar int foobar - -\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} - -% #1 is the data type. #2 is the name, perhaps followed by text that -% is actually part of the data type, which should not be put into the index. -\def\deftypevarheader #1#2{% -\dovarind#2 \relax% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% - \defargscommonending -\endgroup} -\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} - -% @deftypevr {Global Flag} int enable - -\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} - -\def\deftypevrheader #1#2#3{\dovarind#3 \relax% -\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} - \defargscommonending -\endgroup} - -% Now define @deftp -% Args are printed in bold, a slight difference from @defvar. - -\def\deftpargs #1{\bf \defvarargs{#1}} - -% @deftp Class window height width ... - -\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} - -\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% -\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} - -% These definitions are used if you use @defunx (etc.) -% anywhere other than immediately after a @defun or @defunx. -% -\def\defcvx#1 {\errmessage{@defcvx in invalid context}} -\def\deffnx#1 {\errmessage{@deffnx in invalid context}} -\def\defivarx#1 {\errmessage{@defivarx in invalid context}} -\def\defmacx#1 {\errmessage{@defmacx in invalid context}} -\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\defopx#1 {\errmessage{@defopx in invalid context}} -\def\defspecx#1 {\errmessage{@defspecx in invalid context}} -\def\deftpx#1 {\errmessage{@deftpx in invalid context}} -\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} -\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} -\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} -\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} -\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} -\def\defunx#1 {\errmessage{@defunx in invalid context}} -\def\defvarx#1 {\errmessage{@defvarx in invalid context}} -\def\defvrx#1 {\errmessage{@defvrx in invalid context}} - - -\message{macros,} -% @macro. - -% To do this right we need a feature of e-TeX, \scantokens, -% which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\undefined - \newwrite\macscribble - \def\scanmacro#1{% - \begingroup \newlinechar`\^^M - % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=\other \escapechar=`\@ - % Append \endinput to make sure that TeX does not see the ending newline. - \toks0={#1\endinput}% - \immediate\openout\macscribble=\jobname.tmp - \immediate\write\macscribble{\the\toks0}% - \immediate\closeout\macscribble - \let\xeatspaces\eatspaces - \input \jobname.tmp - \endgroup -} -\else -\def\scanmacro#1{% -\begingroup \newlinechar`\^^M -% Undo catcode changes of \startcontents and \doprintindex -\catcode`\@=0 \catcode`\\=\other \escapechar=`\@ -\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} -\fi - -\newcount\paramno % Count of parameters -\newtoks\macname % Macro name -\newif\ifrecursive % Is it recursive? -\def\macrolist{} % List of all defined macros in the form - % \do\macro1\do\macro2... - -% Utility routines. -% Thisdoes \let #1 = #2, except with \csnames. -\def\cslet#1#2{% -\expandafter\expandafter -\expandafter\let -\expandafter\expandafter -\csname#1\endcsname -\csname#2\endcsname} - -% Trim leading and trailing spaces off a string. -% Concepts from aro-bend problem 15 (see CTAN). -{\catcode`\@=11 -\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} -\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} -\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} -\def\unbrace#1{#1} -\unbrace{\gdef\trim@@@ #1 } #2@{#1} -} - -% Trim a single trailing ^^M off a string. -{\catcode`\^^M=\other \catcode`\Q=3% -\gdef\eatcr #1{\eatcra #1Q^^MQ}% -\gdef\eatcra#1^^MQ{\eatcrb#1Q}% -\gdef\eatcrb#1Q#2Q{#1}% -} - -% Macro bodies are absorbed as an argument in a context where -% all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \. - -% It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro -% body, and then making it the \newlinechar in \scanmacro. - -\def\macrobodyctxt{% - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\{=\other - \catcode`\}=\other - \catcode`\@=\other - \catcode`\^^M=\other - \usembodybackslash} - -\def\macroargctxt{% - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\@=\other - \catcode`\\=\other} - -% \mbodybackslash is the definition of \ in @macro bodies. -% It maps \foo\ => \csname macarg.foo\endcsname => #N -% where N is the macro parameter number. -% We define \csname macarg.\endcsname to be \realbackslash, so -% \\ in macro replacement text gets you a backslash. - -{\catcode`@=0 @catcode`@\=@active - @gdef@usembodybackslash{@let\=@mbodybackslash} - @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} -} -\expandafter\def\csname macarg.\endcsname{\realbackslash} - -\def\macro{\recursivefalse\parsearg\macroxxx} -\def\rmacro{\recursivetrue\parsearg\macroxxx} - -\def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist - \ifx\argl\empty % no arguments - \paramno=0% - \else - \expandafter\parsemargdef \argl;% - \fi - \if1\csname ismacro.\the\macname\endcsname - \message{Warning: redefining \the\macname}% - \else - \expandafter\ifx\csname \the\macname\endcsname \relax - \else \errmessage{Macro name \the\macname\space already defined}\fi - \global\cslet{macsave.\the\macname}{\the\macname}% - \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - % Add the macroname to \macrolist - \toks0 = \expandafter{\macrolist\do}% - \xdef\macrolist{\the\toks0 - \expandafter\noexpand\csname\the\macname\endcsname}% - \fi - \begingroup \macrobodyctxt - \ifrecursive \expandafter\parsermacbody - \else \expandafter\parsemacbody - \fi} - -\def\unmacro{\parsearg\dounmacro} -\def\dounmacro#1{% - \if1\csname ismacro.#1\endcsname - \global\cslet{#1}{macsave.#1}% - \global\expandafter\let \csname ismacro.#1\endcsname=0% - % Remove the macro name from \macrolist: - \begingroup - \expandafter\let\csname#1\endcsname \relax - \let\do\unmacrodo - \xdef\macrolist{\macrolist}% - \endgroup - \else - \errmessage{Macro #1 not defined}% - \fi -} - -% Called by \do from \dounmacro on each macro. The idea is to omit any -% macro definitions that have been changed to \relax. -% -\def\unmacrodo#1{% - \ifx#1\relax - % remove this - \else - \noexpand\do \noexpand #1% - \fi -} - -% This makes use of the obscure feature that if the last token of a -% <parameter list> is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. -\def\getargs#1{\getargsxxx#1{}} -\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname #1 #2\relax{\macname={#1}} -\def\getmacargs#1{\def\argl{#1}} - -% Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.blah for each blah -% in the params list, to be ##N where N is the position in that list. -% That gets used by \mbodybackslash (above). - -% We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something -% unexpandable, insert that wherever you need a #, and then redefine -% it to # just before using the token list produced. -% -% The same technique is used to protect \eatspaces till just before -% the macro is used. - -\def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} -\def\parsemargdefxxx#1,{% - \if#1;\let\next=\relax - \else \let\next=\parsemargdefxxx - \advance\paramno by 1% - \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% - \edef\paramlist{\paramlist\hash\the\paramno,}% - \fi\next} - -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) - -\long\def\parsemacbody#1@end macro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\long\def\parsermacbody#1@end rmacro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% - -% This defines the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. -% Much magic with \expandafter here. -% \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. -\def\defmacro{% - \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% - \fi - \else - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \fi - \fi} - -\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} - -% \braceorline decides whether the next nonwhitespace character is a -% {. If so it reads up to the closing }, if not, it reads the whole -% line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg) -\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} -\def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg - \fi \next} - -% We mant to disable all macros during \shipout so that they are not -% expanded by \write. -\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% - \edef\next{\macrolist}\expandafter\endgroup\next} - - -% @alias. -% We need some trickery to remove the optional spaces around the equal -% sign. Just make them active and then expand them all to nothing. -\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} -\def\aliasxxx #1{\aliasyyy#1\relax} -\def\aliasyyy #1=#2\relax{\ignoreactivespaces -\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% - \expandafter\noexpand\csname#2\endcsname}% -\expandafter\endgroup\next} - - -\message{cross references,} -% @xref etc. - -\newwrite\auxfile - -\newif\ifhavexrefs % True if xref values are known. -\newif\ifwarnedxrefs % True if we warned once that they aren't known. - -% @inforef is relatively simple. -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - -% @node's job is to define \lastnode. -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -% The sectioning commands (@chapter, etc.) call these. -\def\donoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Ysectionnumberandtype}% - \global\let\lastnode=\relax - \fi -} -\def\unnumbnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% - \global\let\lastnode=\relax - \fi -} -\def\appendixnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Yappendixletterandtype}% - \global\let\lastnode=\relax - \fi -} - - -% @anchor{NAME} -- define xref target at arbitrary point. -% -\newcount\savesfregister -\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} -\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} -\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} - -% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an -% anchor), namely NAME-title (the corresponding @chapter/etc. name), -% NAME-pg (the page number), and NAME-snt (section number and type). -% Called from \foonoderef. -% -% We have to set \indexdummies so commands such as @code in a section -% title aren't expanded. It would be nicer not to expand the titles in -% the first place, but there's so many layers that that is hard to do. -% -% Likewise, use \turnoffactive so that punctuation chars such as underscore -% and backslash work in node names. -% -\def\setref#1#2{{% - \atdummies - \pdfmkdest{#1}% - % - \turnoffactive - \dosetq{#1-title}{Ytitle}% - \dosetq{#1-pg}{Ypagenumber}% - \dosetq{#1-snt}{#2}% -}} - -% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is -% the node name, #2 the name of the Info cross-reference, #3 the printed -% node name, #4 the name of the Info file, #5 the name of the printed -% manual. All but the node name can be omitted. -% -\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} -\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} -\def\ref#1{\xrefX[#1,,,,,,,]} -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \unsepspaces - \def\printedmanual{\ignorespaces #5}% - \def\printednodename{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual}% - \setbox0=\hbox{\printednodename}% - \ifdim \wd0 = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% - \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1 > 0pt - % It is in another manual, so we don't have it. - \def\printednodename{\ignorespaces #1}% - \else - \ifhavexrefs - % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printednodename{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifpdf - \leavevmode - \getfilename{#4}% - {\turnoffactive \otherbackslash - \ifnum\filenamelength>0 - \startlink attr{/Border [0 0 0]}% - goto file{\the\filename.pdf} name{#1}% - \else - \startlink attr{/Border [0 0 0]}% - goto name{#1}% - \fi - }% - \linkcolor - \fi - % - \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% - \else - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\turnoffactive \otherbackslash - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% - % [mynode], - [\printednodename],\space - % page 3 - \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}% - \fi - \endlink -\endgroup} - -% \dosetq is called from \setref to do the actual \write (\iflinks). -% -\def\dosetq#1#2{% - {\let\folio=0% - \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% - \iflinks \next \fi - }% -} - -% \internalsetq{foo}{page} expands into -% CHARACTERS @xrdef{foo}{...expansion of \page...} -\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}} - -% Things to be expanded by \internalsetq. -% -\def\Ypagenumber{\folio} -\def\Ytitle{\thissection} -\def\Ynothing{} -\def\Ysectionnumberandtype{% - \ifnum\secno=0 - \putwordChapter@tie \the\chapno - \else \ifnum\subsecno=0 - \putwordSection@tie \the\chapno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno - \else - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} - -\def\Yappendixletterandtype{% - \ifnum\secno=0 - \putwordAppendix@tie @char\the\appendixno{}% - \else \ifnum\subsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno - \else - \putwordSection@tie - @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} - -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Pre-3.0. -\else - \def\linenumber{\the\inputlineno:\space} -\fi - -% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. -% If its value is nonempty, SUFFIX is output afterward. -% -\def\refx#1#2{% - {% - \indexnofonts - \otherbackslash - \expandafter\global\expandafter\let\expandafter\thisrefX - \csname X#1\endcsname - }% - \ifx\thisrefX\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \iflinks - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \fi - \else - % It's defined, so just use it. - \thisrefX - \fi - #2% Output the suffix in any case. -} - -% This is the macro invoked by entries in the aux file. -% -\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname} - -% Read the last existing aux file, if any. No error if none exists. -\def\readauxfile{\begingroup - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\^=\other - % - % Special characters. Should be turned off anyway, but... - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - \catcode`\%=\other - \catcode`+=\other % avoid \+ for paranoia even though we've turned it off - % - % Make the characters 128-255 be printing characters - {% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi - }% - }% - % - % Turn off \ as an escape so we do not lose on - % entries which were dumped with control sequences in their names. - % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^ - % Reference to such entries still does not work the way one would wish, - % but at least they do not bomb out when the aux file is read in. - \catcode`\\=\other - % - % @ is our escape character in .aux files. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\@=0 - % - \openin 1 \jobname.aux - \ifeof 1 \else - \closein 1 - \input \jobname.aux - \global\havexrefstrue - \global\warnedobstrue - \fi - % Open the new aux file. TeX will close it automatically at exit. - \openout\auxfile=\jobname.aux -\endgroup} - - -% Footnotes. - -\newcount \footnoteno - -% The trailing space in the following definition for supereject is -% vital for proper filling; pages come out unaligned when you do a -% pagealignmacro call if that space before the closing brace is -% removed. (Generally, numeric constants should always be followed by a -% space to prevent strange expansion errors.) -\def\supereject{\par\penalty -20000\footnoteno =0 } - -% @footnotestyle is meaningful for info output only. -\let\footnotestyle=\comment - -\let\ptexfootnote=\footnote - -{\catcode `\@=11 -% -% Auto-number footnotes. Otherwise like plain. -\gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \dofootnote -}% - -% Don't bother with the trickery in plain.tex to not require the -% footnote text as a parameter. Our footnotes don't need to be so general. -% -% Oh yes, they do; otherwise, @ifset and anything else that uses -% \parseargline fail inside footnotes because the tokens are fixed when -% the footnote is read. --karl, 16nov96. -% -% The start of the footnote looks usually like this: -\gdef\startfootins{\insert\footins\bgroup} -% -% ... but this macro is redefined inside @multitable. -% -\gdef\dofootnote{% - \startfootins - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \hsize=\pagewidth - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - \smallfonts \rm - % - % Because we use hanging indentation in footnotes, a @noindent appears - % to exdent this text, so make it be a no-op. makeinfo does not use - % hanging indentation so @noindent can still be needed within footnote - % text after an @example or the like (not that this is good style). - \let\noindent = \relax - % - % Hang the footnote text off the number. Use \everypar in case the - % footnote extends for more than one paragraph. - \everypar = {\hang}% - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - \futurelet\next\fo@t -} -}%end \catcode `\@=11 - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt} - -% @image. We use the macros from epsf.tex to support this. -% If epsf.tex is not installed and @image is used, we complain. -% -% Check for and read epsf.tex up front. If we read it only at @image -% time, we might be inside a group, and then its definitions would get -% undone and the next image would fail. -\openin 1 = epsf.tex -\ifeof 1 \else - \closein 1 - % Do not bother showing banner with epsf.tex v2.7k (available in - % doc/epsf.tex and on ctan). - \def\epsfannounce{\toks0 = }% - \input epsf.tex -\fi -% -% We will only complain once about lack of epsf.tex. -\newif\ifwarnednoepsf -\newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from ftp://tug.org/tex/epsf.tex.} -% -\def\image#1{% - \ifx\epsfbox\undefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,,,\finish - \fi -} -% -% Arguments to @image: -% #1 is (mandatory) image filename; we tack on .eps extension. -% #2 is (optional) width, #3 is (optional) height. -% #4 is (ignored optional) html alt text. -% #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing this stuff. -\newif\ifimagevmode -\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup - \catcode`\^^M = 5 % in case we're inside an example - \normalturnoffactive % allow _ et al. in names - % If the image is by itself, center it. - \ifvmode - \imagevmodetrue - \nobreak\bigskip - % Usually we'll have text after the image which will insert - % \parskip glue, so insert it here too to equalize the space - % above and below. - \nobreak\vskip\parskip - \nobreak - \line\bgroup\hss - \fi - % - % Output the image. - \ifpdf - \dopdfimage{#1}{#2}{#3}% - \else - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% - \fi - % - \ifimagevmode \hss \egroup \bigbreak \fi % space after the image -\endgroup} - - -\message{localization,} -% and i18n. - -% @documentlanguage is usually given very early, just after -% @setfilename. If done too late, it may not override everything -% properly. Single argument is the language abbreviation. -% It would be nice if we could set up a hyphenation file here. -% -\def\documentlanguage{\parsearg\dodocumentlanguage} -\def\dodocumentlanguage#1{% - \tex % read txi-??.tex file in plain TeX. - % Read the file if it exists. - \openin 1 txi-#1.tex - \ifeof1 - \errhelp = \nolanghelp - \errmessage{Cannot read language file txi-#1.tex}% - \let\temp = \relax - \else - \def\temp{\input txi-#1.tex }% - \fi - \temp - \endgroup -} -\newhelp\nolanghelp{The given language definition file cannot be found or -is empty. Maybe you need to install it? In the current directory -should work if nowhere else does.} - - -% @documentencoding should change something in TeX eventually, most -% likely, but for now just recognize it. -\let\documentencoding = \comment - - -% Page size parameters. -% -\newdimen\defaultparindent \defaultparindent = 15pt - -\chapheadingskip = 15pt plus 4pt minus 2pt -\secheadingskip = 12pt plus 3pt minus 2pt -\subsecheadingskip = 9pt plus 2pt minus 2pt - -% Prevent underfull vbox error messages. -\vbadness = 10000 - -% Don't be so finicky about underfull hboxes, either. -\hbadness = 2000 - -% Following George Bush, just get rid of widows and orphans. -\widowpenalty=10000 -\clubpenalty=10000 - -% Use TeX 3.0's \emergencystretch to help line breaking, but if we're -% using an old version of TeX, don't do anything. We want the amount of -% stretch added to depend on the line length, hence the dependence on -% \hsize. We call this whenever the paper size is set. -% -\def\setemergencystretch{% - \ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% - \else - \emergencystretch = .15\hsize - \fi -} - -% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; -% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) -% physical page width. -% -% We also call \setleading{\textleading}, so the caller should define -% \textleading. The caller should also set \parskip. -% -\def\internalpagesizes#1#2#3#4#5#6#7#8{% - \voffset = #3\relax - \topskip = #6\relax - \splittopskip = \topskip - % - \vsize = #1\relax - \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin - \pageheight = \vsize - % - \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in - \pagewidth = \hsize - % - \normaloffset = #4\relax - \bindingoffset = #5\relax - % - \ifpdf - \pdfpageheight #7\relax - \pdfpagewidth #8\relax - \fi - % - \setleading{\textleading} - % - \parindent = \defaultparindent - \setemergencystretch -} - -% @letterpaper (the default). -\def\letterpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % If page is nothing but text, make it come out even. - \internalpagesizes{46\baselineskip}{6in}% - {\voffset}{.25in}% - {\bindingoffset}{36pt}% - {11in}{8.5in}% -}} - -% Use @smallbook to reset parameters for 7x9.5 (or so) format. -\def\smallbook{{\globaldefs = 1 - \parskip = 2pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.5in}{5in}% - {\voffset}{.25in}% - {\bindingoffset}{16pt}% - {9.25in}{7in}% - % - \lispnarrowing = 0.3in - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \defbodyindent = .5cm -}} - -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % Double-side printing via postscript on Laserjet 4050 - % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. - % To change the settings for a different printer or situation, adjust - % \normaloffset until the front-side and back-side texts align. Then - % do the same for \bindingoffset. You can set these for testing in - % your texinfo source file like this: - % @tex - % \global\normaloffset = -6mm - % \global\bindingoffset = 10mm - % @end tex - \internalpagesizes{51\baselineskip}{160mm} - {\voffset}{\hoffset}% - {\bindingoffset}{44pt}% - {297mm}{210mm}% - % - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \defbodyindent = 5mm -}} - -% Use @afivepaper to print on European A5 paper. -% From romildo@urano.iceb.ufop.br, 2 July 2000. -% He also recommends making @example and @lisp be small. -\def\afivepaper{{\globaldefs = 1 - \parskip = 2pt plus 1pt minus 0.1pt - \textleading = 12.5pt - % - \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% - {\bindingoffset}{8pt}% - {210mm}{148mm}% - % - \lispnarrowing = 0.2in - \tolerance = 800 - \hfuzz = 1.2pt - \contentsrightmargin = 0pt - \defbodyindent = 2mm - \tableindent = 12mm -}} - -% A specific text layout, 24x15cm overall, intended for A4 paper. -\def\afourlatex{{\globaldefs = 1 - \afourpaper - \internalpagesizes{237mm}{150mm}% - {\voffset}{4.6mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - % - % Must explicitly reset to 0 because we call \afourpaper. - \globaldefs = 0 -}} - -% Use @afourwide to print on A4 paper in landscape format. -\def\afourwide{{\globaldefs = 1 - \afourpaper - \internalpagesizes{241mm}{165mm}% - {\voffset}{-2.95mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - \globaldefs = 0 -}} - -% @pagesizes TEXTHEIGHT[,TEXTWIDTH] -% Perhaps we should allow setting the margins, \topskip, \parskip, -% and/or leading, also. Or perhaps we should compute them somehow. -% -\def\pagesizes{\parsearg\pagesizesxxx} -\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish} -\def\pagesizesyyy#1,#2,#3\finish{{% - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi - \globaldefs = 1 - % - \parskip = 3pt plus 2pt minus 1pt - \setleading{\textleading}% - % - \dimen0 = #1 - \advance\dimen0 by \voffset - % - \dimen2 = \hsize - \advance\dimen2 by \normaloffset - % - \internalpagesizes{#1}{\hsize}% - {\voffset}{\normaloffset}% - {\bindingoffset}{44pt}% - {\dimen0}{\dimen2}% -}} - -% Set default to letter. -% -\letterpaper - - -\message{and turning on texinfo input format.} - -% Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\catcode`\$=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} -\def\normaldollar{$}%$ font-lock fix - -% This macro is used to make a character print one way in ttfont -% where it can probably just be output, and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - -% Same as above, but check for italic font. Actually this also catches -% non-italic slanted fonts since it is impossible to distinguish them from -% italic fonts. But since this is only used by $ and it uses \sl anyway -% this is not a problem. -\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - -% Turn off all special characters except @ -% (and those which the user can use as if they were ordinary). -% Most of these we simply print from the \tt font, but for some, we can -% use math or other variants that look better in normal text. - -\catcode`\"=\active -\def\activedoublequote{{\tt\char34}} -\let"=\activedoublequote -\catcode`\~=\active -\def~{{\tt\char126}} -\chardef\hat=`\^ -\catcode`\^=\active -\def^{{\tt \hat}} - -\catcode`\_=\active -\def_{\ifusingtt\normalunderscore\_} -% Subroutine for the previous macro. -\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } - -\catcode`\|=\active -\def|{{\tt\char124}} -\chardef \less=`\< -\catcode`\<=\active -\def<{{\tt \less}} -\chardef \gtr=`\> -\catcode`\>=\active -\def>{{\tt \gtr}} -\catcode`\+=\active -\def+{{\tt \char 43}} -\catcode`\$=\active -\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix - -% Set up an active definition for =, but don't enable it most of the time. -{\catcode`\==\active -\global\def={{\tt \char 61}}} - -\catcode`+=\active -\catcode`\_=\active - -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have \everyjob (or @setfilename) turn them on. -% \otherifyactive is called near the end of this file. -\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - -\catcode`\@=0 - -% \rawbackslashxx outputs one backslash character in current font, -% as in \char`\\. -\global\chardef\rawbackslashxx=`\\ - -% \rawbackslash defines an active \ to do \rawbackslashxx. -% \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. -{\catcode`\\=\active - @gdef@rawbackslash{@let\=@rawbackslashxx} - @gdef@otherbackslash{@let\=@realbackslash} -} - -% \realbackslash is an actual character `\' with catcode other. -{\catcode`\\=\other @gdef@realbackslash{\}} - -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\rawbackslashxx}} - -\catcode`\\=\active - -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{% - @let"=@normaldoublequote - @let\=@realbackslash - @let~=@normaltilde - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar %$ font-lock fix -} - -% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. (Thus, \ is not expandable when this is in -% effect.) -% -@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} - -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive - -% If a .fmt file is being used, we don't want the `\input texinfo' to show up. -% That is what \eatinput is for; after that, the `\' should revert to printing -% a backslash. -% -@gdef@eatinput input texinfo{@fixbackslash} -@global@let\ = @eatinput - -% On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix -% that, assuming it is called before the first `\' could plausibly occur. -% Also back turn on active characters that might appear in the input -% file name, in case not using a pre-dumped format. -% -@gdef@fixbackslash{% - @ifx\@eatinput @let\ = @normalbackslash @fi - @catcode`+=@active - @catcode`@_=@active -} - -% Say @foo, not \foo, in error messages. -@escapechar = `@@ - -% These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other - -@c Set initial fonts. -@textfonts -@rm - - -@c Local variables: -@c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" -@c End: diff --git a/readline/examples/ChangeLog.gdb b/readline/examples/ChangeLog.gdb new file mode 100644 index 0000000..5ff9ba1 --- /dev/null +++ b/readline/examples/ChangeLog.gdb @@ -0,0 +1,10 @@ +2002-02-24 Elena Zannoni <ezannoni@redhat.com> + + * ChangeLog.gdb: Rename from ChangeLog.Cygnus. + +2000-07-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * Import of readline 4.1. + + New files: excallback.c, rlfe.c. + diff --git a/readline/examples/Makefile.in b/readline/examples/Makefile.in index e27bbc0..72c9904 100644 --- a/readline/examples/Makefile.in +++ b/readline/examples/Makefile.in @@ -40,8 +40,6 @@ INCLUDES = -I$(srcdir) -I$(top_srcdir) -I.. CCFLAGS = $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS) LDFLAGS = -g -L.. @LDFLAGS@ -PURIFY = @PURIFY@ - READLINE_LIB = ../libreadline.a HISTORY_LIB = ../libhistory.a @@ -52,35 +50,33 @@ TERMCAP_LIB = @TERMCAP_LIB@ $(CC) $(CCFLAGS) -c $< EXECUTABLES = fileman rltest rl rlcat rlversion histexamp -OBJECTS = fileman.o rltest.o rl.o rlcat.o rlversion.o histexamp.o +OBJECTS = fileman.o rltest.o rl.o rlversion.o histexamp.o all: $(EXECUTABLES) -everything: all +everything: all rlfe rl: rl.o $(READLINE_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ rl.o $(READLINE_LIB) $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ rl.o -lreadline $(TERMCAP_LIB) rlcat: rlcat.o $(READLINE_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ rlcat.o $(READLINE_LIB) $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ rlcat.o -lreadline $(TERMCAP_LIB) fileman: fileman.o $(READLINE_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ fileman.o $(READLINE_LIB) $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ fileman.o -lreadline $(TERMCAP_LIB) rltest: rltest.o $(READLINE_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ rltest.o $(READLINE_LIB) $(TERMCAP_LIB) - -rlptytest: rlptytest.o $(READLINE_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ rlptytest.o $(READLINE_LIB) $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ rltest.o -lreadline $(TERMCAP_LIB) rlversion: rlversion.o $(READLINE_LIB) - $(CC) $(LDFLAGS) -o $@ rlversion.o $(READLINE_LIB) $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ rlversion.o -lreadline $(TERMCAP_LIB) histexamp: histexamp.o $(HISTORY_LIB) - $(PURIFY) $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB) + $(CC) $(LDFLAGS) -o $@ histexamp.o -lhistory $(TERMCAP_LIB) clean mostlyclean: $(RM) $(OBJECTS) $(RM) $(EXECUTABLES) *.exe + $(RM) rlfe.o rlfe distclean maintainer-clean: clean $(RM) Makefile @@ -90,13 +86,19 @@ rltest.o: rltest.c rl.o: rl.c rlversion.o: rlversion.c histexamp.o: histexamp.c -rlcat.o: rlcat.c -rlptytest.o: rlptytest.c fileman.o: $(top_srcdir)/readline.h rltest.o: $(top_srcdir)/readline.h rl.o: $(top_srcdir)/readline.h rlversion.o: $(top_srcdir)/readline.h histexamp.o: $(top_srcdir)/history.h -rlcat.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h -rlptytest.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h + +# Stuff for Per Bothner's `rlfe' program + +rlfe: rlfe.o $(READLINE_LIB) $(HISTORY_LIB) + $(CC) $(LDFLAGS) -o $@ rlfe.o -lreadline -lhistory ${TERMCAP_LIB} + +rlfe.o: rlfe.c + +rlfe.o: $(top_srcdir)/readline.h +rlfe.o: $(top_srcdir)/history.h diff --git a/readline/examples/histexamp.c b/readline/examples/histexamp.c index 4f059c1..45651df 100644 --- a/readline/examples/histexamp.c +++ b/readline/examples/histexamp.c @@ -26,17 +26,14 @@ # include <readline/history.h> #endif -#include <string.h> - main (argc, argv) int argc; char **argv; { char line[1024], *t; - int len, done; + int len, done = 0; line[0] = 0; - done = 0; using_history (); while (!done) @@ -45,80 +42,71 @@ main (argc, argv) fflush (stdout); t = fgets (line, sizeof (line) - 1, stdin); if (t && *t) - { - len = strlen (t); - if (t[len - 1] == '\n') - t[len - 1] = '\0'; - } + { + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + } if (!t) - strcpy (line, "quit"); + strcpy (line, "quit"); if (line[0]) - { - char *expansion; - int result; + { + char *expansion; + int result; - using_history (); + using_history (); - result = history_expand (line, &expansion); - if (result) - fprintf (stderr, "%s\n", expansion); + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); - if (result < 0 || result == 2) - { - free (expansion); - continue; - } + if (result < 0 || result == 2) + { + free (expansion); + continue; + } - add_history (expansion); - strncpy (line, expansion, sizeof (line) - 1); - free (expansion); - } + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + } if (strcmp (line, "quit") == 0) - done = 1; + done = 1; else if (strcmp (line, "save") == 0) - write_history ("history_file"); + write_history ("history_file"); else if (strcmp (line, "read") == 0) - read_history ("history_file"); + read_history ("history_file"); else if (strcmp (line, "list") == 0) - { - register HIST_ENTRY **the_list; - register int i; - time_t tt; - char timestr[128]; - - the_list = history_list (); - if (the_list) - for (i = 0; the_list[i]; i++) - { - tt = history_get_time (the_list[i]); - if (tt) - strftime (timestr, sizeof (timestr), "%a %R", localtime(&tt)); - else - strcpy (timestr, "??"); - printf ("%d: %s: %s\n", i + history_base, timestr, the_list[i]->line); - } - } + { + register HIST_ENTRY **the_list; + register int i; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + printf ("%d: %s\n", i + history_base, the_list[i]->line); + } else if (strncmp (line, "delete", 6) == 0) - { - int which; - if ((sscanf (line + 6, "%d", &which)) == 1) - { - HIST_ENTRY *entry = remove_history (which); - if (!entry) - fprintf (stderr, "No such entry %d\n", which); - else - { - free (entry->line); - free (entry); - } - } - else - { - fprintf (stderr, "non-numeric arg given to `delete'\n"); - } - } + { + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + { + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + { + free (entry->line); + free (entry); + } + } + else + { + fprintf (stderr, "non-numeric arg given to `delete'\n"); + } + } } } diff --git a/readline/examples/rl.c b/readline/examples/rl.c index c608c15..d260489 100644 --- a/readline/examples/rl.c +++ b/readline/examples/rl.c @@ -31,19 +31,12 @@ #include <stdio.h> #include <sys/types.h> - -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#else -extern void exit(); -#endif +#include "posixstat.h" #if defined (READLINE_LIBRARY) -# include "posixstat.h" # include "readline.h" # include "history.h" #else -# include <sys/stat.h> # include <readline/readline.h> # include <readline/history.h> #endif diff --git a/readline/examples/rlcat.c b/readline/examples/rlcat.c index 33aea4a..176b9f4 100644 --- a/readline/examples/rlcat.c +++ b/readline/examples/rlcat.c @@ -40,12 +40,6 @@ #include <string.h> #include <errno.h> -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#else -extern void exit(); -#endif - #ifndef errno extern int errno; #endif diff --git a/readline/examples/rltest.c b/readline/examples/rltest.c index cb67bab..99f083b 100644 --- a/readline/examples/rltest.c +++ b/readline/examples/rltest.c @@ -31,12 +31,6 @@ #include <stdio.h> #include <sys/types.h> -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#else -extern void exit(); -#endif - #ifdef READLINE_LIBRARY # include "readline.h" # include "history.h" diff --git a/readline/examples/rlversion.c b/readline/examples/rlversion.c index 6c86874..53949d1 100644 --- a/readline/examples/rlversion.c +++ b/readline/examples/rlversion.c @@ -30,12 +30,6 @@ #include <sys/types.h> #include "posixstat.h" -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#else -extern void exit(); -#endif - #ifdef READLINE_LIBRARY # include "readline.h" #else diff --git a/readline/funmap.c b/readline/funmap.c index 9c760cc..fe9a1da 100644 --- a/readline/funmap.c +++ b/readline/funmap.c @@ -131,7 +131,6 @@ static FUNMAP default_funmap[] = { { "tty-status", rl_tty_status }, { "undo", rl_undo_command }, { "universal-argument", rl_universal_argument }, - { "unix-filename-rubout", rl_unix_filename_rubout }, { "unix-line-discard", rl_unix_line_discard }, { "unix-word-rubout", rl_unix_word_rubout }, { "upcase-word", rl_upcase_word }, @@ -176,7 +175,6 @@ static FUNMAP default_funmap[] = { { "vi-put", rl_vi_put }, { "vi-redo", rl_vi_redo }, { "vi-replace", rl_vi_replace }, - { "vi-rubout", rl_vi_rubout }, { "vi-search", rl_vi_search }, { "vi-search-again", rl_vi_search_again }, { "vi-set-mark", rl_vi_set_mark }, diff --git a/readline/histexpand.c b/readline/histexpand.c index 6847014..6c81196 100644 --- a/readline/histexpand.c +++ b/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2004 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. This file contains the GNU History Library (the Library), a set of routines for managing the text of previously typed lines. @@ -52,8 +52,6 @@ #define HISTORY_WORD_DELIMITERS " \t\n;&()|<>" #define HISTORY_QUOTE_CHARACTERS "\"'`" -#define slashify_in_quotes "\\`\"$" - typedef int _hist_search_func_t PARAMS((const char *, int)); extern int rl_byte_oriented; /* declared in mbutil.c */ @@ -67,8 +65,6 @@ static int subst_rhs_len; static char *get_history_word_specifier PARAMS((char *, char *, int *)); static char *history_find_word PARAMS((char *, int)); -static int history_tokenize_word PARAMS((const char *, int)); -static char *history_substring PARAMS((const char *, int, int)); static char *quote_breaks PARAMS((char *)); @@ -206,24 +202,23 @@ get_history_event (string, caller_index, delimiting_quote) /* Only a closing `?' or a newline delimit a substring search string. */ for (local_index = i; c = string[i]; i++) - { #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - int v; - mbstate_t ps; - - memset (&ps, 0, sizeof (mbstate_t)); - /* These produce warnings because we're passing a const string to a - function that takes a non-const string. */ - _rl_adjust_point ((char *)string, i, &ps); - if ((v = _rl_get_char_len ((char *)string + i, &ps)) > 1) - { - i += v - 1; - continue; - } - } + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int v; + mbstate_t ps; + memset (&ps, 0, sizeof (mbstate_t)); + /* These produce warnings because we're passing a const string to a + function that takes a non-const string. */ + _rl_adjust_point (string, i, &ps); + if ((v = _rl_get_char_len (string + i, &ps)) > 1) + { + i += v - 1; + continue; + } + } + else #endif /* HANDLE_MULTIBYTE */ if ((!substring_okay && (whitespace (c) || c == ':' || (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) || @@ -231,7 +226,6 @@ get_history_event (string, caller_index, delimiting_quote) string[i] == '\n' || (substring_okay && string[i] == '?')) break; - } which = i - local_index; temp = (char *)xmalloc (1 + which); @@ -523,7 +517,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) char *current_line; /* for !# */ { int i, n, starting_index; - int substitute_globally, subst_bywords, want_quotes, print_only; + int substitute_globally, want_quotes, print_only; char *event, *temp, *result, *tstr, *t, c, *word_spec; int result_len; #if defined (HANDLE_MULTIBYTE) @@ -605,25 +599,19 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) FREE (word_spec); /* Perhaps there are other modifiers involved. Do what they say. */ - want_quotes = substitute_globally = subst_bywords = print_only = 0; + want_quotes = substitute_globally = print_only = 0; starting_index = i; while (string[i] == ':') { c = string[i + 1]; - if (c == 'g' || c == 'a') + if (c == 'g') { substitute_globally = 1; i++; c = string[i + 1]; } - else if (c == 'G') - { - subst_bywords = 1; - i++; - c = string[i + 1]; - } switch (c) { @@ -695,7 +683,7 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) case 's': { char *new_event; - int delimiter, failed, si, l_temp, ws, we; + int delimiter, failed, si, l_temp; if (c == 's') { @@ -772,67 +760,33 @@ history_expand_internal (string, start, end_index_ptr, ret_string, current_line) } /* Find the first occurrence of THIS in TEMP. */ - /* Substitute SUBST_RHS for SUBST_LHS in TEMP. There are three - cases to consider: - - 1. substitute_globally == subst_bywords == 0 - 2. substitute_globally == 1 && subst_bywords == 0 - 3. substitute_globally == 0 && subst_bywords == 1 - - In the first case, we substitute for the first occurrence only. - In the second case, we substitute for every occurrence. - In the third case, we tokenize into words and substitute the - first occurrence of each word. */ - - si = we = 0; + si = 0; for (failed = 1; (si + subst_lhs_len) <= l_temp; si++) - { - /* First skip whitespace and find word boundaries if - we're past the end of the word boundary we found - the last time. */ - if (subst_bywords && si > we) - { - for (; temp[si] && whitespace (temp[si]); si++) - ; - ws = si; - we = history_tokenize_word (temp, si); - } - - if (STREQN (temp+si, subst_lhs, subst_lhs_len)) - { - int len = subst_rhs_len - subst_lhs_len + l_temp; - new_event = (char *)xmalloc (1 + len); - strncpy (new_event, temp, si); - strncpy (new_event + si, subst_rhs, subst_rhs_len); - strncpy (new_event + si + subst_rhs_len, - temp + si + subst_lhs_len, - l_temp - (si + subst_lhs_len)); - new_event[len] = '\0'; - free (temp); - temp = new_event; - - failed = 0; - - if (substitute_globally) - { - /* Reported to fix a bug that causes it to skip every - other match when matching a single character. Was - si += subst_rhs_len previously. */ - si += subst_rhs_len - 1; - l_temp = strlen (temp); - substitute_globally++; - continue; - } - else if (subst_bywords) - { - si = we; - l_temp = strlen (temp); - continue; - } - else - break; - } - } + if (STREQN (temp+si, subst_lhs, subst_lhs_len)) + { + int len = subst_rhs_len - subst_lhs_len + l_temp; + new_event = (char *)xmalloc (1 + len); + strncpy (new_event, temp, si); + strncpy (new_event + si, subst_rhs, subst_rhs_len); + strncpy (new_event + si + subst_rhs_len, + temp + si + subst_lhs_len, + l_temp - (si + subst_lhs_len)); + new_event[len] = '\0'; + free (temp); + temp = new_event; + + failed = 0; + + if (substitute_globally) + { + si += subst_rhs_len; + l_temp = strlen (temp); + substitute_globally++; + continue; + } + else + break; + } if (substitute_globally > 1) { @@ -925,7 +879,7 @@ history_expand (hstring, output) char **output; { register int j; - int i, r, l, passc, cc, modified, eindex, only_printing, dquote; + int i, r, l, passc, cc, modified, eindex, only_printing; char *string; /* The output string, and its length. */ @@ -988,7 +942,7 @@ history_expand (hstring, output) /* `!' followed by one of the characters in history_no_expand_chars is NOT an expansion. */ - for (i = dquote = 0; string[i]; i++) + for (i = 0; string[i]; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1030,19 +984,9 @@ history_expand (hstring, output) else break; } - /* Shell-like quoting: allow backslashes to quote double quotes - inside a double-quoted string. */ - else if (dquote && string[i] == '\\' && cc == '"') - i++; - /* More shell-like quoting: if we're paying attention to single - quotes and letting them quote the history expansion character, - then we need to pay attention to double quotes, because single - quotes are not special inside double-quoted strings. */ - else if (history_quotes_inhibit_expansion && string[i] == '"') - { - dquote = 1 - dquote; - } - else if (dquote == 0 && history_quotes_inhibit_expansion && string[i] == '\'') + /* XXX - at some point, might want to extend this to handle + double quotes as well. */ + else if (history_quotes_inhibit_expansion && string[i] == '\'') { /* If this is bash, single quotes inhibit history expansion. */ i++; @@ -1055,7 +999,6 @@ history_expand (hstring, output) if (cc == '\'' || cc == history_expansion_char) i++; } - } if (string[i] != history_expansion_char) @@ -1067,7 +1010,7 @@ history_expand (hstring, output) } /* Extract and perform the substitution. */ - for (passc = dquote = i = j = 0; i < l; i++) + for (passc = i = j = 0; i < l; i++) { int tchar = string[i]; @@ -1118,16 +1061,11 @@ history_expand (hstring, output) ADD_CHAR (tchar); break; - case '"': - dquote = 1 - dquote; - ADD_CHAR (tchar); - break; - case '\'': { /* If history_quotes_inhibit_expansion is set, single quotes inhibit history expansion. */ - if (dquote == 0 && history_quotes_inhibit_expansion) + if (history_quotes_inhibit_expansion) { int quote, slen; @@ -1222,9 +1160,7 @@ history_expand (hstring, output) if (only_printing) { -#if 0 add_history (result); -#endif return (2); } @@ -1287,10 +1223,7 @@ get_history_word_specifier (spec, from, caller_index) if (spec[i] == '-') first = 0; else if (spec[i] == '^') - { - first = 1; - i++; - } + first = 1; else if (_rl_digit_p (spec[i]) && expecting_word_spec) { for (first = 0; _rl_digit_p (spec[i]); i++) @@ -1405,103 +1338,7 @@ history_arg_extract (first, last, string) return (result); } -static int -history_tokenize_word (string, ind) - const char *string; - int ind; -{ - register int i; - int delimiter; - - i = ind; - delimiter = 0; - - if (member (string[i], "()\n")) - { - i++; - return i; - } - - if (member (string[i], "<>;&|$")) - { - int peek = string[i + 1]; - - if (peek == string[i] && peek != '$') - { - if (peek == '<' && string[i + 2] == '-') - i++; - i += 2; - return i; - } - else - { - if ((peek == '&' && (string[i] == '>' || string[i] == '<')) || - (peek == '>' && string[i] == '&') || - (peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */ - (peek == '(' && string[i] == '$')) /* ) */ - { - i += 2; - return i; - } - } - - if (string[i] != '$') - { - i++; - return i; - } - } - - /* Get word from string + i; */ - - if (member (string[i], HISTORY_QUOTE_CHARACTERS)) - delimiter = string[i++]; - - for (; string[i]; i++) - { - if (string[i] == '\\' && string[i + 1] == '\n') - { - i++; - continue; - } - - if (string[i] == '\\' && delimiter != '\'' && - (delimiter != '"' || member (string[i], slashify_in_quotes))) - { - i++; - continue; - } - - if (delimiter && string[i] == delimiter) - { - delimiter = 0; - continue; - } - - if (!delimiter && (member (string[i], history_word_delimiters))) - break; - - if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS)) - delimiter = string[i]; - } - - return i; -} - -static char * -history_substring (string, start, end) - const char *string; - int start, end; -{ - register int len; - register char *result; - - len = end - start; - result = (char *)xmalloc (len + 1); - strncpy (result, string + start, len); - result[len] = '\0'; - return result; -} +#define slashify_in_quotes "\\`\"$" /* Parse STRING into tokens and return an array of strings. If WIND is not -1 and INDP is not null, we also want the word surrounding index @@ -1514,6 +1351,7 @@ history_tokenize_internal (string, wind, indp) { char **result; register int i, start, result_index, size; + int len, delimiter; /* If we're searching for a string that's not part of a word (e.g., " "), make sure we set *INDP to a reasonable value. */ @@ -1524,6 +1362,8 @@ history_tokenize_internal (string, wind, indp) exactly where the shell would split them. */ for (i = result_index = size = 0, result = (char **)NULL; string[i]; ) { + delimiter = 0; + /* Skip leading whitespace. */ for (; string[i] && whitespace (string[i]); i++) ; @@ -1531,30 +1371,88 @@ history_tokenize_internal (string, wind, indp) return (result); start = i; + + if (member (string[i], "()\n")) + { + i++; + goto got_token; + } - i = history_tokenize_word (string, start); + if (member (string[i], "<>;&|$")) + { + int peek = string[i + 1]; - /* If we have a non-whitespace delimiter character (which would not be - skipped by the loop above), use it and any adjacent delimiters to - make a separate field. Any adjacent white space will be skipped the - next time through the loop. */ - if (i == start && history_word_delimiters) + if (peek == string[i] && peek != '$') + { + if (peek == '<' && string[i + 2] == '-') + i++; + i += 2; + goto got_token; + } + else + { + if ((peek == '&' && (string[i] == '>' || string[i] == '<')) || + ((peek == '>') && (string[i] == '&')) || + ((peek == '(') && (string[i] == '$'))) + { + i += 2; + goto got_token; + } + } + if (string[i] != '$') + { + i++; + goto got_token; + } + } + + /* Get word from string + i; */ + + if (member (string[i], HISTORY_QUOTE_CHARACTERS)) + delimiter = string[i++]; + + for (; string[i]; i++) { - i++; - while (string[i] && member (string[i], history_word_delimiters)) - i++; + if (string[i] == '\\' && string[i + 1] == '\n') + { + i++; + continue; + } + + if (string[i] == '\\' && delimiter != '\'' && + (delimiter != '"' || member (string[i], slashify_in_quotes))) + { + i++; + continue; + } + + if (delimiter && string[i] == delimiter) + { + delimiter = 0; + continue; + } + + if (!delimiter && (member (string[i], history_word_delimiters))) + break; + + if (!delimiter && member (string[i], HISTORY_QUOTE_CHARACTERS)) + delimiter = string[i]; } + got_token: + /* If we are looking for the word in which the character at a particular index falls, remember it. */ if (indp && wind != -1 && wind >= start && wind < i) *indp = result_index; + len = i - start; if (result_index + 2 >= size) result = (char **)xrealloc (result, ((size += 10) * sizeof (char *))); - - result[result_index++] = history_substring (string, start, i); - result[result_index] = (char *)NULL; + result[result_index] = (char *)xmalloc (1 + len); + strncpy (result[result_index], string + start, len); + result[result_index][len] = '\0'; + result[++result_index] = (char *)NULL; } return (result); diff --git a/readline/histfile.c b/readline/histfile.c index 717bbee..c19630d 100644 --- a/readline/histfile.c +++ b/readline/histfile.c @@ -1,6 +1,6 @@ /* histfile.c - functions to manipulate the history file. */ -/* Copyright (C) 1989-2003 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. This file contains the GNU History Library (the Library), a set of routines for managing the text of previously typed lines. @@ -23,13 +23,8 @@ /* The goal is to make the implementation transparent, so that you don't have to know what data types are used, just what functions you can call. I think I have done that. */ - #define READLINE_LIBRARY -#if defined (__TANDEM) -# include <floss.h> -#endif - #if defined (HAVE_CONFIG_H) # include <config.h> #endif @@ -37,7 +32,7 @@ #include <stdio.h> #include <sys/types.h> -#if ! defined (_MINIX) && defined (HAVE_SYS_FILE_H) +#ifndef _MINIX # include <sys/file.h> #endif #include "posixstat.h" @@ -57,7 +52,7 @@ # undef HAVE_MMAP #endif -#ifdef HISTORY_USE_MMAP +#ifdef HAVE_MMAP # include <sys/mman.h> # ifdef MAP_FILE @@ -72,7 +67,7 @@ # define MAP_FAILED ((void *)-1) # endif -#endif /* HISTORY_USE_MMAP */ +#endif /* HAVE_MMAP */ /* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment on win 95/98/nt), we want to open files with O_BINARY mode so that there @@ -98,13 +93,6 @@ extern int errno; #include "rlshell.h" #include "xmalloc.h" -/* If non-zero, we write timestamps to the history file in history_do_write() */ -int history_write_timestamps = 0; - -/* Does S look like the beginning of a history timestamp entry? Placeholder - for more extensive tests. */ -#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char) - /* Return the string that should be used in the place of this filename. This only matters when you don't specify the filename to read_history (), or write_history (). */ @@ -163,20 +151,13 @@ read_history_range (filename, from, to) const char *filename; int from, to; { - register char *line_start, *line_end, *p; - char *input, *buffer, *bufend, *last_ts; + register char *line_start, *line_end; + char *input, *buffer, *bufend; int file, current_line, chars_read; struct stat finfo; size_t file_size; -#if defined (EFBIG) - int overflow_errno = EFBIG; -#elif defined (EOVERFLOW) - int overflow_errno = EOVERFLOW; -#else - int overflow_errno = EIO; -#endif - buffer = last_ts = (char *)NULL; + buffer = (char *)NULL; input = history_filename (filename); file = open (input, O_RDONLY|O_BINARY, 0666); @@ -188,42 +169,37 @@ read_history_range (filename, from, to) /* check for overflow on very large files */ if (file_size != finfo.st_size || file_size + 1 < file_size) { - errno = overflow_errno; +#if defined (EFBIG) + errno = EFBIG; +#elif defined (EOVERFLOW) + errno = EOVERFLOW; +#endif goto error_and_exit; } -#ifdef HISTORY_USE_MMAP +#ifdef HAVE_MMAP /* We map read/write and private so we can change newlines to NULs without affecting the underlying object. */ buffer = (char *)mmap (0, file_size, PROT_READ|PROT_WRITE, MAP_RFLAGS, file, 0); if ((void *)buffer == MAP_FAILED) - { - errno = overflow_errno; - goto error_and_exit; - } + goto error_and_exit; chars_read = file_size; #else buffer = (char *)malloc (file_size + 1); if (buffer == 0) - { - errno = overflow_errno; - goto error_and_exit; - } + goto error_and_exit; chars_read = read (file, buffer, file_size); #endif if (chars_read < 0) { error_and_exit: - if (errno != 0) - chars_read = errno; - else - chars_read = EIO; + chars_read = errno; if (file >= 0) close (file); FREE (input); -#ifndef HISTORY_USE_MMAP +#ifndef HAVE_MMAP FREE (buffer); #endif @@ -244,37 +220,21 @@ read_history_range (filename, from, to) for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) if (*line_end == '\n') { - p = line_end + 1; - /* If we see something we think is a timestamp, continue with this - line. We should check more extensively here... */ - if (HIST_TIMESTAMP_START(p) == 0) - current_line++; - line_start = p; + current_line++; + line_start = line_end + 1; } /* If there are lines left to gobble, then gobble them now. */ for (line_end = line_start; line_end < bufend; line_end++) if (*line_end == '\n') { - *line_end = '\0'; + if (line_end - 1 >= line_start && *(line_end - 1) == '\r') + *(line_end - 1) = '\0'; + else + *line_end = '\0'; if (*line_start) - { - if (HIST_TIMESTAMP_START(line_start) == 0) - { - add_history (line_start); - if (last_ts) - { - add_history_time (last_ts); - last_ts = NULL; - } - } - else - { - last_ts = line_start; - current_line--; - } - } + add_history (line_start); current_line++; @@ -285,7 +245,7 @@ read_history_range (filename, from, to) } FREE (input); -#ifndef HISTORY_USE_MMAP +#ifndef HAVE_MMAP FREE (buffer); #else munmap (buffer, file_size); @@ -302,7 +262,7 @@ history_truncate_file (fname, lines) const char *fname; int lines; { - char *buffer, *filename, *bp, *bp1; /* bp1 == bp+1 */ + char *buffer, *filename, *bp; int file, chars_read, rv; struct stat finfo; size_t file_size; @@ -365,14 +325,11 @@ history_truncate_file (fname, lines) } /* Count backwards from the end of buffer until we have passed - LINES lines. bp1 is set funny initially. But since bp[1] can't - be a comment character (since it's off the end) and *bp can't be - both a newline and the history comment character, it should be OK. */ - for (bp1 = bp = buffer + chars_read - 1; lines && bp > buffer; bp--) + LINES lines. */ + for (bp = buffer + chars_read - 1; lines && bp > buffer; bp--) { - if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) + if (*bp == '\n') lines--; - bp1 = bp; } /* If this is the first line, then the file contains exactly the @@ -381,14 +338,11 @@ history_truncate_file (fname, lines) the current value of i and 0. Otherwise, write from the start of this line until the end of the buffer. */ for ( ; bp > buffer; bp--) - { - if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) - { - bp++; - break; - } - bp1 = bp; - } + if (*bp == '\n') + { + bp++; + break; + } /* Write only if there are more lines in the file than we want to truncate to. */ @@ -423,9 +377,9 @@ history_do_write (filename, nelements, overwrite) register int i; char *output; int file, mode, rv; -#ifdef HISTORY_USE_MMAP size_t cursize; +#ifdef HAVE_MMAP mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY; #else mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY; @@ -439,7 +393,7 @@ history_do_write (filename, nelements, overwrite) return (errno); } -#ifdef HISTORY_USE_MMAP +#ifdef HAVE_MMAP cursize = overwrite ? 0 : lseek (file, 0, SEEK_END); #endif @@ -457,18 +411,10 @@ history_do_write (filename, nelements, overwrite) the_history = history_list (); /* Calculate the total number of bytes to write. */ for (buffer_size = 0, i = history_length - nelements; i < history_length; i++) -#if 0 - buffer_size += 2 + HISTENT_BYTES (the_history[i]); -#else - { - if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) - buffer_size += strlen (the_history[i]->timestamp) + 1; - buffer_size += strlen (the_history[i]->line) + 1; - } -#endif + buffer_size += 1 + strlen (the_history[i]->line); /* Allocate the buffer, and fill it. */ -#ifdef HISTORY_USE_MMAP +#ifdef HAVE_MMAP if (ftruncate (file, buffer_size+cursize) == -1) goto mmap_error; buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize); @@ -493,18 +439,12 @@ mmap_error: for (j = 0, i = history_length - nelements; i < history_length; i++) { - if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) - { - strcpy (buffer + j, the_history[i]->timestamp); - j += strlen (the_history[i]->timestamp); - buffer[j++] = '\n'; - } strcpy (buffer + j, the_history[i]->line); j += strlen (the_history[i]->line); buffer[j++] = '\n'; } -#ifdef HISTORY_USE_MMAP +#ifdef HAVE_MMAP if (msync (buffer, buffer_size, 0) != 0 || munmap (buffer, buffer_size) != 0) rv = errno; #else diff --git a/readline/history.c b/readline/history.c index a538f91..4242f33 100644 --- a/readline/history.c +++ b/readline/history.c @@ -1,6 +1,6 @@ -/* history.c -- standalone history library */ +/* History.c -- standalone history library */ -/* Copyright (C) 1989-2005 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. This file contains the GNU History Library (the Library), a set of routines for managing the text of previously typed lines. @@ -52,8 +52,6 @@ /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 -static char *hist_inittime PARAMS((void)); - /* **************************************************************** */ /* */ /* History Functions */ @@ -125,15 +123,14 @@ using_history () } /* Return the number of bytes that the primary history entries are using. - This just adds up the lengths of the_history->lines and the associated - timestamps. */ + This just adds up the lengths of the_history->lines. */ int history_total_bytes () { register int i, result; for (i = result = 0; the_history && the_history[i]; i++) - result += HISTENT_BYTES (the_history[i]); + result += strlen (the_history[i]->line); return (result); } @@ -204,45 +201,11 @@ history_get (offset) int local_index; local_index = offset - history_base; - return (local_index >= history_length || local_index < 0 || the_history == 0) + return (local_index >= history_length || local_index < 0 || !the_history) ? (HIST_ENTRY *)NULL : the_history[local_index]; } -time_t -history_get_time (hist) - HIST_ENTRY *hist; -{ - char *ts; - time_t t; - - if (hist == 0 || hist->timestamp == 0) - return 0; - ts = hist->timestamp; - if (ts[0] != history_comment_char) - return 0; - t = (time_t) atol (ts + 1); /* XXX - should use strtol() here */ - return t; -} - -static char * -hist_inittime () -{ - time_t t; - char ts[64], *ret; - - t = (time_t) time ((time_t *)0); -#if defined (HAVE_VSNPRINTF) /* assume snprintf if vsnprintf exists */ - snprintf (ts, sizeof (ts) - 1, "X%lu", (unsigned long) t); -#else - sprintf (ts, "X%lu", (unsigned long) t); -#endif - ret = savestring (ts); - ret[0] = history_comment_char; - - return ret; -} - /* Place STRING at the end of the history list. The data field is set to NULL. */ void @@ -262,7 +225,10 @@ add_history (string) /* If there is something in the slot, then remove it. */ if (the_history[0]) - (void) free_history_entry (the_history[0]); + { + free (the_history[0]->line); + free (the_history[0]); + } /* Copy the rest of the entries, moving down one slot. */ for (i = 0; i < history_length; i++) @@ -294,41 +260,10 @@ add_history (string) temp->line = savestring (string); temp->data = (char *)NULL; - temp->timestamp = hist_inittime (); - the_history[history_length] = (HIST_ENTRY *)NULL; the_history[history_length - 1] = temp; } -/* Change the time stamp of the most recent history entry to STRING. */ -void -add_history_time (string) - const char *string; -{ - HIST_ENTRY *hs; - - hs = the_history[history_length - 1]; - FREE (hs->timestamp); - hs->timestamp = savestring (string); -} - -/* Free HIST and return the data so the calling application can free it - if necessary and desired. */ -histdata_t -free_history_entry (hist) - HIST_ENTRY *hist; -{ - histdata_t x; - - if (hist == 0) - return ((histdata_t) 0); - FREE (hist->line); - FREE (hist->timestamp); - x = hist->data; - free (hist); - return (x); -} - /* 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. */ @@ -340,7 +275,7 @@ replace_history_entry (which, line, data) { HIST_ENTRY *temp, *old_value; - if (which < 0 || which >= history_length) + if (which >= history_length) return ((HIST_ENTRY *)NULL); temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); @@ -348,7 +283,6 @@ replace_history_entry (which, line, data) temp->line = savestring (line); temp->data = data; - temp->timestamp = savestring (old_value->timestamp); the_history[which] = temp; return (old_value); @@ -364,15 +298,17 @@ remove_history (which) HIST_ENTRY *return_value; register int i; - if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) - return ((HIST_ENTRY *)NULL); - - return_value = the_history[which]; + if (which >= history_length || !history_length) + return_value = (HIST_ENTRY *)NULL; + else + { + return_value = the_history[which]; - for (i = which; i < history_length; i++) - the_history[i] = the_history[i + 1]; + for (i = which; i < history_length; i++) + the_history[i] = the_history[i + 1]; - history_length--; + history_length--; + } return (return_value); } @@ -391,7 +327,10 @@ stifle_history (max) { /* This loses because we cannot free the data. */ for (i = 0, j = history_length - max; i < j; i++) - free_history_entry (the_history[i]); + { + free (the_history[i]->line); + free (the_history[i]); + } history_base = i; for (j = 0, i = history_length - max; j < max; i++, j++) @@ -433,7 +372,8 @@ clear_history () /* This loses because we cannot free the data. */ for (i = 0; i < history_length; i++) { - free_history_entry (the_history[i]); + free (the_history[i]->line); + free (the_history[i]); the_history[i] = (HIST_ENTRY *)NULL; } diff --git a/readline/history.h b/readline/history.h index 14ca2a9..58b5de4 100644 --- a/readline/history.h +++ b/readline/history.h @@ -1,5 +1,5 @@ -/* history.h -- the names of functions that you can call in history. */ -/* Copyright (C) 1989-2003 Free Software Foundation, Inc. +/* History.h -- the names of functions that you can call in history. */ +/* Copyright (C) 1989, 1992 Free Software Foundation, Inc. This file contains the GNU History Library (the Library), a set of routines for managing the text of previously typed lines. @@ -26,8 +26,6 @@ extern "C" { #endif -#include <time.h> /* XXX - for history timestamp code */ - #if defined READLINE_LIBRARY # include "rlstdc.h" # include "rltypedefs.h" @@ -45,13 +43,9 @@ typedef char *histdata_t; /* The structure used to store a history entry. */ typedef struct _hist_entry { char *line; - char *timestamp; /* char * rather than time_t for read/write */ histdata_t data; } HIST_ENTRY; -/* Size of the history-library-managed space in history entry HS. */ -#define HISTENT_BYTES(hs) (strlen ((hs)->line) + strlen ((hs)->timestamp)) - /* A structure used to pass the current state of the history stuff around. */ typedef struct _hist_state { HIST_ENTRY **entries; /* Pointer to the entries themselves. */ @@ -82,19 +76,11 @@ extern void history_set_history_state PARAMS((HISTORY_STATE *)); The associated data field (if any) is set to NULL. */ extern void add_history PARAMS((const char *)); -/* Change the timestamp associated with the most recent history entry to - STRING. */ -extern void add_history_time PARAMS((const char *)); - /* A reasonably useless function, only here for completeness. WHICH is the magic number that tells us which element to delete. The elements are numbered from 0. */ extern HIST_ENTRY *remove_history PARAMS((int)); -/* Free the history entry H and return any application-specific data - associated with it. */ -extern histdata_t free_history_entry PARAMS((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. */ @@ -133,10 +119,6 @@ extern HIST_ENTRY *current_history PARAMS((void)); array. OFFSET is relative to history_base. */ extern HIST_ENTRY *history_get PARAMS((int)); -/* Return the timestamp associated with the HIST_ENTRY * passed as an - argument */ -extern time_t history_get_time PARAMS((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)); @@ -249,8 +231,6 @@ extern char *history_no_expand_chars; extern char *history_search_delimiter_chars; extern int history_quotes_inhibit_expansion; -extern int history_write_timestamps; - /* Backwards compatibility */ extern int max_input_history; diff --git a/readline/histsearch.c b/readline/histsearch.c index 1cc5875..d94fd6c 100644 --- a/readline/histsearch.c +++ b/readline/histsearch.c @@ -77,11 +77,11 @@ history_search_internal (string, direction, anchored) if (string == 0 || *string == '\0') return (-1); - if (!history_length || ((i >= history_length) && !reverse)) + if (!history_length || ((i == history_length) && !reverse)) return (-1); - if (reverse && (i >= history_length)) - i = history_length - 1; + if (reverse && (i == history_length)) + i--; #define NEXT_LINE() do { if (reverse) i--; else i++; } while (0) diff --git a/readline/input.c b/readline/input.c index 0ec507e..9120dfa 100644 --- a/readline/input.c +++ b/readline/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2005 Free Software Foundation, Inc. +/* Copyright (C) 1994 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -21,10 +21,6 @@ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #define READLINE_LIBRARY -#if defined (__TANDEM) -# include <floss.h> -#endif - #if defined (HAVE_CONFIG_H) # include <config.h> #endif @@ -158,12 +154,6 @@ _rl_unget_char (key) return (0); } -int -_rl_pushed_input_available () -{ - return (push_index != pop_index); -} - /* If a character is available to be read, then read it and stuff it into IBUFFER. Otherwise, just return. Returns number of characters read (0 if none available) and -1 on error (EIO). */ @@ -172,7 +162,7 @@ rl_gather_tyi () { int tty; register int tem, result; - int chars_avail, k; + int chars_avail; char input; #if defined(HAVE_SELECT) fd_set readfds, exceptfds; @@ -212,11 +202,6 @@ rl_gather_tyi () fcntl (tty, F_SETFL, tem); if (chars_avail == -1 && errno == EAGAIN) return 0; - if (chars_avail == 0) /* EOF */ - { - rl_stuff_char (EOF); - return (0); - } } #endif /* O_NDELAY */ @@ -240,12 +225,7 @@ rl_gather_tyi () if (result != -1) { while (chars_avail--) - { - k = (*rl_getc_function) (rl_instream); - rl_stuff_char (k); - if (k == NEWLINE || k == RETURN) - break; - } + rl_stuff_char ((*rl_getc_function) (rl_instream)); } else { @@ -444,9 +424,12 @@ rl_getc (stream) while (1) { -#if defined (__MINGW32__) +#ifdef __MINGW32__ + /* On Windows, use a special routine to read a single character + from the console. (Otherwise, no characters are available + until the user hits the return key.) */ if (isatty (fileno (stream))) - return (getch ()); + return getch (); #endif result = read (fileno (stream), &c, sizeof (unsigned char)); @@ -523,12 +506,6 @@ _rl_read_mbchar (mbchar, size) ps = ps_back; continue; } - else if (mbchar_bytes_length == 0) - { - mbchar[0] = '\0'; /* null wide character */ - mb_len = 1; - break; - } else if (mbchar_bytes_length > (size_t)(0)) break; } diff --git a/readline/isearch.c b/readline/isearch.c index d7d8520..c1ea5b3 100644 --- a/readline/isearch.c +++ b/readline/isearch.c @@ -4,7 +4,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. This file contains the Readline Library (the Library), a set of routines for providing Emacs style line input to programs that ask @@ -56,17 +56,12 @@ /* Variables exported to other files in the readline library. */ 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; +/* Forward declarations */ 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 int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); - /* Last line found by the current incremental search, so we don't `find' identical lines many times in a row. */ static char *prev_line_found; @@ -77,57 +72,6 @@ static int last_isearch_string_len; static char *default_isearch_terminators = "\033\012"; -_rl_search_cxt * -_rl_scxt_alloc (type, flags) - int type, flags; -{ - _rl_search_cxt *cxt; - - cxt = (_rl_search_cxt *)xmalloc (sizeof (_rl_search_cxt)); - - cxt->type = type; - cxt->sflags = flags; - - cxt->search_string = 0; - cxt->search_string_size = cxt->search_string_index = 0; - - cxt->lines = 0; - cxt->allocated_line = 0; - cxt->hlen = cxt->hindex = 0; - - cxt->save_point = rl_point; - cxt->save_mark = rl_mark; - cxt->save_line = where_history (); - cxt->last_found_line = cxt->save_line; - cxt->prev_line_found = 0; - - cxt->save_undo_list = 0; - - cxt->history_pos = 0; - cxt->direction = 0; - - cxt->lastc = 0; - - cxt->sline = 0; - cxt->sline_len = cxt->sline_index = 0; - - cxt->search_terminators = 0; - - return cxt; -} - -void -_rl_scxt_dispose (cxt, flags) - _rl_search_cxt *cxt; - int flags; -{ - FREE (cxt->search_string); - FREE (cxt->allocated_line); - FREE (cxt->lines); - - free (cxt); -} - /* Search backwards through the history looking for a string which is typed interactively. Start with the current line. */ int @@ -148,7 +92,7 @@ rl_forward_search_history (sign, key) /* Display the current state of the search in the echo-area. SEARCH_STRING contains the string that is being searched for, - DIRECTION is zero for forward, or non-zero for reverse, + DIRECTION is zero for forward, or 1 for reverse, WHERE is the history list number of the current line. If it is -1, then this line is the starting one. */ static void @@ -196,23 +140,66 @@ rl_display_search (search_string, reverse_p, where) (*rl_redisplay_function) (); } -static _rl_search_cxt * -_rl_isearch_init (direction) - int direction; +/* Search through the history looking for an interactively typed string. + This is analogous to i-search. We start the search in the current line. + DIRECTION is which direction to search; >= 0 means forward, < 0 means + backwards. */ +static int +rl_search_history (direction, invoking_key) + int direction, invoking_key; { - _rl_search_cxt *cxt; - register int i; + /* The string that the user types in to search for. */ + char *search_string; + + /* The current length of SEARCH_STRING. */ + int search_string_index; + + /* The amount of space that SEARCH_STRING has allocated to it. */ + int search_string_size; + + /* The list of lines to search through. */ + char **lines, *allocated_line; + + /* The length of LINES. */ + int hlen; + + /* Where we get LINES from. */ HIST_ENTRY **hlist; - cxt = _rl_scxt_alloc (RL_SEARCH_ISEARCH, 0); - if (direction < 0) - cxt->sflags |= SF_REVERSE; + register int i; + int orig_point, orig_mark, orig_line, last_found_line; + int c, found, failed, sline_len; + int n, wstart, wlen; +#if defined (HANDLE_MULTIBYTE) + char mb[MB_LEN_MAX]; +#endif + + /* The line currently being searched. */ + char *sline; + + /* Offset in that line. */ + int line_index; - cxt->search_terminators = _rl_isearch_terminators ? _rl_isearch_terminators + /* Non-zero if we are doing a reverse search. */ + int reverse; + + /* The list of characters which terminate the search, but are not + subsequently executed. If the variable isearch-terminators has + been set, we use that value, otherwise we use ESC and C-J. */ + char *isearch_terminators; + + RL_SETSTATE(RL_STATE_ISEARCH); + orig_point = rl_point; + orig_mark = rl_mark; + last_found_line = orig_line = where_history (); + reverse = direction < 0; + hlist = history_list (); + allocated_line = (char *)NULL; + + isearch_terminators = _rl_isearch_terminators ? _rl_isearch_terminators : default_isearch_terminators; /* Create an arrary of pointers to the lines that we want to search. */ - hlist = history_list (); rl_maybe_replace_line (); i = 0; if (hlist) @@ -220,447 +207,354 @@ _rl_isearch_init (direction) /* Allocate space for this many lines, +1 for the current input line, and remember those lines. */ - cxt->lines = (char **)xmalloc ((1 + (cxt->hlen = i)) * sizeof (char *)); - for (i = 0; i < cxt->hlen; i++) - cxt->lines[i] = hlist[i]->line; + lines = (char **)xmalloc ((1 + (hlen = i)) * sizeof (char *)); + for (i = 0; i < hlen; i++) + lines[i] = hlist[i]->line; if (_rl_saved_line_for_history) - cxt->lines[i] = _rl_saved_line_for_history->line; + lines[i] = _rl_saved_line_for_history->line; else { /* Keep track of this so we can free it. */ - cxt->allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer)); - strcpy (cxt->allocated_line, &rl_line_buffer[0]); - cxt->lines[i] = cxt->allocated_line; + allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer)); + strcpy (allocated_line, &rl_line_buffer[0]); + lines[i] = allocated_line; } - cxt->hlen++; + hlen++; /* The line where we start the search. */ - cxt->history_pos = cxt->save_line; + i = orig_line; rl_save_prompt (); /* Initialize search parameters. */ - cxt->search_string = (char *)xmalloc (cxt->search_string_size = 128); - cxt->search_string[cxt->search_string_index = 0] = '\0'; + search_string = (char *)xmalloc (search_string_size = 128); + *search_string = '\0'; + search_string_index = 0; + prev_line_found = (char *)0; /* XXX */ /* Normalize DIRECTION into 1 or -1. */ - cxt->direction = (direction >= 0) ? 1 : -1; + direction = (direction >= 0) ? 1 : -1; - cxt->sline = rl_line_buffer; - cxt->sline_len = strlen (cxt->sline); - cxt->sline_index = rl_point; + rl_display_search (search_string, reverse, -1); - _rl_iscxt = cxt; /* save globally */ + sline = rl_line_buffer; + sline_len = strlen (sline); + line_index = rl_point; - return cxt; -} - -static void -_rl_isearch_fini (cxt) - _rl_search_cxt *cxt; -{ - /* First put back the original state. */ - strcpy (rl_line_buffer, cxt->lines[cxt->save_line]); - - rl_restore_prompt (); - - /* Save the search string for possible later use. */ - FREE (last_isearch_string); - last_isearch_string = cxt->search_string; - last_isearch_string_len = cxt->search_string_index; - cxt->search_string = 0; - - if (cxt->last_found_line < cxt->save_line) - rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0); - else - rl_get_next_history (cxt->last_found_line - cxt->save_line, 0); - - /* If the string was not found, put point at the end of the last matching - line. If last_found_line == orig_line, we didn't find any matching - history lines at all, so put point back in its original position. */ - if (cxt->sline_index < 0) + found = failed = 0; + for (;;) { - if (cxt->last_found_line == cxt->save_line) - cxt->sline_index = cxt->save_point; - else - cxt->sline_index = strlen (rl_line_buffer); - rl_mark = cxt->save_mark; - } + rl_command_func_t *f = (rl_command_func_t *)NULL; - rl_point = cxt->sline_index; - /* Don't worry about where to put the mark here; rl_get_previous_history - and rl_get_next_history take care of it. */ - - rl_clear_message (); -} - -int -_rl_search_getchar (cxt) - _rl_search_cxt *cxt; -{ - int c; - - /* Read a key and decide how to proceed. */ - RL_SETSTATE(RL_STATE_MOREINPUT); - c = cxt->lastc = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + /* Read a key and decide how to proceed. */ + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + c = _rl_read_mbstring (c, mb, MB_LEN_MAX); #endif - return c; -} - -/* Process just-read character C according to isearch context CXT. Return - -1 if the caller should just free the context and return, 0 if we should - break out of the loop, and 1 if we should continue to read characters. */ -int -_rl_isearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; -{ - int n, wstart, wlen, limit, cval; - rl_command_func_t *f; - - f = (rl_command_func_t *)NULL; - - /* Translate the keys we do something with to opcodes. */ - if (c >= 0 && _rl_keymap[c].type == ISFUNC) - { - f = _rl_keymap[c].function; - - if (f == rl_reverse_search_history) - cxt->lastc = (cxt->sflags & SF_REVERSE) ? -1 : -2; - else if (f == rl_forward_search_history) - cxt->lastc = (cxt->sflags & SF_REVERSE) ? -2 : -1; - else if (f == rl_rubout) - cxt->lastc = -3; - else if (c == CTRL ('G')) - cxt->lastc = -4; - else if (c == CTRL ('W')) /* XXX */ - cxt->lastc = -5; - else if (c == CTRL ('Y')) /* XXX */ - cxt->lastc = -6; - } + /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC) + { + f = _rl_keymap[c].function; + + if (f == rl_reverse_search_history) + c = reverse ? -1 : -2; + else if (f == rl_forward_search_history) + c = !reverse ? -1 : -2; + else if (f == rl_rubout) + c = -3; + else if (c == CTRL ('G')) + c = -4; + else if (c == CTRL ('W')) /* XXX */ + c = -5; + else if (c == CTRL ('Y')) /* XXX */ + c = -6; + } - /* The characters in isearch_terminators (set from the user-settable - variable isearch-terminators) are used to terminate the search but - not subsequently execute the character as a command. The default - value is "\033\012" (ESC and C-J). */ - if (strchr (cxt->search_terminators, cxt->lastc)) - { - /* ESC still terminates the search, but if there is pending - input or if input arrives within 0.1 seconds (on systems - with select(2)) it is used as a prefix character - with rl_execute_next. WATCH OUT FOR THIS! This is intended - to allow the arrow keys to be used like ^F and ^B are used - to terminate the search and execute the movement command. - XXX - since _rl_input_available depends on the application- - settable keyboard timeout value, this could alternatively - use _rl_input_queued(100000) */ - if (cxt->lastc == ESC && _rl_input_available ()) - rl_execute_next (ESC); - return (0); - } + /* The characters in isearch_terminators (set from the user-settable + variable isearch-terminators) are used to terminate the search but + not subsequently execute the character as a command. The default + value is "\033\012" (ESC and C-J). */ + if (strchr (isearch_terminators, c)) + { + /* ESC still terminates the search, but if there is pending + input or if input arrives within 0.1 seconds (on systems + with select(2)) it is used as a prefix character + with rl_execute_next. WATCH OUT FOR THIS! This is intended + to allow the arrow keys to be used like ^F and ^B are used + to terminate the search and execute the movement command. + XXX - since _rl_input_available depends on the application- + settable keyboard timeout value, this could alternatively + use _rl_input_queued(100000) */ + if (c == ESC && _rl_input_available ()) + rl_execute_next (ESC); + break; + } #define ENDSRCH_CHAR(c) \ ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G'))) #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - if (cxt->lastc >= 0 && (cxt->mb[0] && cxt->mb[1] == '\0') && ENDSRCH_CHAR (cxt->lastc)) - { - /* This sets rl_pending_input to c; it will be picked up the next - time rl_read_key is called. */ - rl_execute_next (cxt->lastc); - return (0); - } - } - else -#endif - if (cxt->lastc >= 0 && ENDSRCH_CHAR (cxt->lastc)) - { - /* This sets rl_pending_input to LASTC; it will be picked up the next - time rl_read_key is called. */ - rl_execute_next (cxt->lastc); - return (0); - } - - /* Now dispatch on the character. `Opcodes' affect the search string or - state. Other characters are added to the string. */ - switch (cxt->lastc) - { - /* search again */ - case -1: - if (cxt->search_string_index == 0) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - if (last_isearch_string) + if (c >= 0 && strlen (mb) == 1 && ENDSRCH_CHAR (c)) { - cxt->search_string_size = 64 + last_isearch_string_len; - cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); - strcpy (cxt->search_string, last_isearch_string); - cxt->search_string_index = last_isearch_string_len; - rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), -1); + /* This sets rl_pending_input to c; it will be picked up the next + time rl_read_key is called. */ + rl_execute_next (c); break; } - return (1); } - else if (cxt->sflags & SF_REVERSE) - cxt->sline_index--; - else if (cxt->sline_index != cxt->sline_len) - cxt->sline_index++; - else - rl_ding (); - break; - - /* switch directions */ - case -2: - cxt->direction = -cxt->direction; - if (cxt->direction < 0) - cxt->sflags |= SF_REVERSE; else - cxt->sflags &= ~SF_REVERSE; - break; - - /* delete character from search string. */ - case -3: /* C-H, DEL */ - /* This is tricky. To do this right, we need to keep a - stack of search positions for the current search, with - sentinels marking the beginning and end. But this will - do until we have a real isearch-undo. */ - if (cxt->search_string_index == 0) - rl_ding (); - else - cxt->search_string[--cxt->search_string_index] = '\0'; - break; - - case -4: /* C-G, abort */ - rl_replace_line (cxt->lines[cxt->save_line], 0); - rl_point = cxt->save_point; - rl_mark = cxt->save_mark; - rl_restore_prompt(); - rl_clear_message (); - - return -1; - - case -5: /* C-W */ - /* skip over portion of line we already matched and yank word */ - wstart = rl_point + cxt->search_string_index; - if (wstart >= rl_end) +#endif + if (c >= 0 && ENDSRCH_CHAR (c)) { - rl_ding (); + /* This sets rl_pending_input to c; it will be picked up the next + time rl_read_key is called. */ + rl_execute_next (c); break; } - /* if not in a word, move to one. */ - cval = _rl_char_value (rl_line_buffer, wstart); - if (_rl_walphabetic (cval) == 0) + switch (c) { - rl_ding (); + case -1: + if (search_string_index == 0) + { + if (last_isearch_string) + { + search_string_size = 64 + last_isearch_string_len; + search_string = (char *)xrealloc (search_string, search_string_size); + strcpy (search_string, last_isearch_string); + search_string_index = last_isearch_string_len; + rl_display_search (search_string, reverse, -1); + break; + } + continue; + } + else if (reverse) + --line_index; + else if (line_index != sline_len) + ++line_index; + else + rl_ding (); break; - } - n = MB_NEXTCHAR (rl_line_buffer, wstart, 1, MB_FIND_NONZERO);; - while (n < rl_end) - { - cval = _rl_char_value (rl_line_buffer, n); - if (_rl_walphabetic (cval) == 0) - break; - n = MB_NEXTCHAR (rl_line_buffer, n, 1, MB_FIND_NONZERO);; - } - wlen = n - wstart + 1; - if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) - { - cxt->search_string_size += wlen + 1; - cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); - } - for (; wstart < n; wstart++) - cxt->search_string[cxt->search_string_index++] = rl_line_buffer[wstart]; - cxt->search_string[cxt->search_string_index] = '\0'; - break; - - case -6: /* C-Y */ - /* skip over portion of line we already matched and yank rest */ - wstart = rl_point + cxt->search_string_index; - if (wstart >= rl_end) - { - rl_ding (); + + /* switch directions */ + case -2: + direction = -direction; + reverse = direction < 0; break; - } - n = rl_end - wstart + 1; - if (cxt->search_string_index + n + 1 >= cxt->search_string_size) - { - cxt->search_string_size += n + 1; - cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); - } - for (n = wstart; n < rl_end; n++) - cxt->search_string[cxt->search_string_index++] = rl_line_buffer[n]; - cxt->search_string[cxt->search_string_index] = '\0'; - break; - - /* Add character to search string and continue search. */ - default: - if (cxt->search_string_index + 2 >= cxt->search_string_size) - { - cxt->search_string_size += 128; - cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); - } -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - { - int j, l; - for (j = 0, l = strlen (cxt->mb); j < l; ) - cxt->search_string[cxt->search_string_index++] = cxt->mb[j++]; - } - else -#endif - cxt->search_string[cxt->search_string_index++] = c; - cxt->search_string[cxt->search_string_index] = '\0'; - break; - } - for (cxt->sflags &= ~(SF_FOUND|SF_FAILED);; ) - { - limit = cxt->sline_len - cxt->search_string_index + 1; + /* delete character from search string. */ + case -3: /* C-H, DEL */ + /* This is tricky. To do this right, we need to keep a + stack of search positions for the current search, with + sentinels marking the beginning and end. But this will + do until we have a real isearch-undo. */ + if (search_string_index == 0) + rl_ding (); + else + search_string[--search_string_index] = '\0'; - /* Search the current line. */ - while ((cxt->sflags & SF_REVERSE) ? (cxt->sline_index >= 0) : (cxt->sline_index < limit)) - { - if (STREQN (cxt->search_string, cxt->sline + cxt->sline_index, cxt->search_string_index)) + break; + + case -4: /* C-G */ + rl_replace_line (lines[orig_line], 0); + rl_point = orig_point; + rl_mark = orig_mark; + rl_restore_prompt(); + rl_clear_message (); + if (allocated_line) + free (allocated_line); + free (lines); + RL_UNSETSTATE(RL_STATE_ISEARCH); + return 0; + + case -5: /* C-W */ + /* skip over portion of line we already matched */ + wstart = rl_point + search_string_index; + if (wstart >= rl_end) { - cxt->sflags |= SF_FOUND; + rl_ding (); break; } - else - cxt->sline_index += cxt->direction; - } - if (cxt->sflags & SF_FOUND) - break; - /* Move to the next line, but skip new copies of the line - we just found and lines shorter than the string we're - searching for. */ - do - { - /* Move to the next line. */ - cxt->history_pos += cxt->direction; + /* if not in a word, move to one. */ + if (rl_alphabetic(rl_line_buffer[wstart]) == 0) + { + rl_ding (); + break; + } + n = wstart; + while (n < rl_end && rl_alphabetic(rl_line_buffer[n])) + n++; + wlen = n - wstart + 1; + if (search_string_index + wlen + 1 >= search_string_size) + { + search_string_size += wlen + 1; + search_string = (char *)xrealloc (search_string, search_string_size); + } + for (; wstart < n; wstart++) + search_string[search_string_index++] = rl_line_buffer[wstart]; + search_string[search_string_index] = '\0'; + break; - /* At limit for direction? */ - if ((cxt->sflags & SF_REVERSE) ? (cxt->history_pos < 0) : (cxt->history_pos == cxt->hlen)) + case -6: /* C-Y */ + /* skip over portion of line we already matched */ + wstart = rl_point + search_string_index; + if (wstart >= rl_end) { - cxt->sflags |= SF_FAILED; + rl_ding (); break; } + n = rl_end - wstart + 1; + if (search_string_index + n + 1 >= search_string_size) + { + search_string_size += n + 1; + search_string = (char *)xrealloc (search_string, search_string_size); + } + for (n = wstart; n < rl_end; n++) + search_string[search_string_index++] = rl_line_buffer[n]; + search_string[search_string_index] = '\0'; + break; - /* We will need these later. */ - cxt->sline = cxt->lines[cxt->history_pos]; - cxt->sline_len = strlen (cxt->sline); + default: + /* Add character to search string and continue search. */ + if (search_string_index + 2 >= search_string_size) + { + search_string_size += 128; + search_string = (char *)xrealloc (search_string, search_string_size); + } +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int j, l; + for (j = 0, l = strlen (mb); j < l; ) + search_string[search_string_index++] = mb[j++]; + } + else +#endif + search_string[search_string_index++] = c; + search_string[search_string_index] = '\0'; + break; } - while ((cxt->prev_line_found && STREQ (cxt->prev_line_found, cxt->lines[cxt->history_pos])) || - (cxt->search_string_index > cxt->sline_len)); - if (cxt->sflags & SF_FAILED) - break; + for (found = failed = 0;;) + { + int limit = sline_len - search_string_index + 1; - /* Now set up the line for searching... */ - cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; - } + /* Search the current line. */ + while (reverse ? (line_index >= 0) : (line_index < limit)) + { + if (STREQN (search_string, sline + line_index, search_string_index)) + { + found++; + break; + } + else + line_index += direction; + } + if (found) + break; - if (cxt->sflags & SF_FAILED) - { - /* We cannot find the search string. Ding the bell. */ - rl_ding (); - cxt->history_pos = cxt->last_found_line; - return 1; - } + /* Move to the next line, but skip new copies of the line + we just found and lines shorter than the string we're + searching for. */ + do + { + /* Move to the next line. */ + i += direction; + + /* At limit for direction? */ + if (reverse ? (i < 0) : (i == hlen)) + { + failed++; + break; + } + + /* We will need these later. */ + sline = lines[i]; + sline_len = strlen (sline); + } + while ((prev_line_found && STREQ (prev_line_found, lines[i])) || + (search_string_index > sline_len)); - /* We have found the search string. Just display it. But don't - actually move there in the history list until the user accepts - the location. */ - if (cxt->sflags & SF_FOUND) - { - cxt->prev_line_found = cxt->lines[cxt->history_pos]; - rl_replace_line (cxt->lines[cxt->history_pos], 0); - rl_point = cxt->sline_index; - cxt->last_found_line = cxt->history_pos; - rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); - } + if (failed) + break; - return 1; -} + /* Now set up the line for searching... */ + line_index = reverse ? sline_len - search_string_index : 0; + } -static int -_rl_isearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; -{ - if (r >= 0) - _rl_isearch_fini (cxt); - _rl_scxt_dispose (cxt, 0); - _rl_iscxt = 0; + if (failed) + { + /* We cannot find the search string. Ding the bell. */ + rl_ding (); + i = last_found_line; + continue; /* XXX - was break */ + } - RL_UNSETSTATE(RL_STATE_ISEARCH); + /* We have found the search string. Just display it. But don't + actually move there in the history list until the user accepts + the location. */ + if (found) + { + prev_line_found = lines[i]; + rl_replace_line (lines[i], 0); + rl_point = line_index; + last_found_line = i; + rl_display_search (search_string, reverse, (i == orig_line) ? -1 : i); + } + } - return (r != 0); -} + /* The searching is over. The user may have found the string that she + was looking for, or else she may have exited a failing search. If + LINE_INDEX is -1, then that shows that the string searched for was + not found. We use this to determine where to place rl_point. */ -/* Search through the history looking for an interactively typed string. - This is analogous to i-search. We start the search in the current line. - DIRECTION is which direction to search; >= 0 means forward, < 0 means - backwards. */ -static int -rl_search_history (direction, invoking_key) - int direction, invoking_key; -{ - _rl_search_cxt *cxt; /* local for now, but saved globally */ - int c, r; + /* First put back the original state. */ + strcpy (rl_line_buffer, lines[orig_line]); - RL_SETSTATE(RL_STATE_ISEARCH); - cxt = _rl_isearch_init (direction); + rl_restore_prompt (); - rl_display_search (cxt->search_string, (cxt->sflags & SF_REVERSE), -1); + /* Save the search string for possible later use. */ + FREE (last_isearch_string); + last_isearch_string = search_string; + last_isearch_string_len = search_string_index; - /* If we are using the callback interface, all we do is set up here and - return. The key is that we leave RL_STATE_ISEARCH set. */ - if (RL_ISSTATE (RL_STATE_CALLBACK)) - return (0); + if (last_found_line < orig_line) + rl_get_previous_history (orig_line - last_found_line, 0); + else + rl_get_next_history (last_found_line - orig_line, 0); - r = -1; - for (;;) + /* If the string was not found, put point at the end of the last matching + line. If last_found_line == orig_line, we didn't find any matching + history lines at all, so put point back in its original position. */ + if (line_index < 0) { - c = _rl_search_getchar (cxt); - /* We might want to handle EOF here (c == 0) */ - r = _rl_isearch_dispatch (cxt, cxt->lastc); - if (r <= 0) - break; + if (last_found_line == orig_line) + line_index = orig_point; + else + line_index = strlen (rl_line_buffer); + rl_mark = orig_mark; } - /* The searching is over. The user may have found the string that she - was looking for, or else she may have exited a failing search. If - LINE_INDEX is -1, then that shows that the string searched for was - not found. We use this to determine where to place rl_point. */ - return (_rl_isearch_cleanup (cxt, r)); -} + rl_point = line_index; + /* Don't worry about where to put the mark here; rl_get_previous_history + and rl_get_next_history take care of it. */ -#if defined (READLINE_CALLBACKS) -/* Called from the callback functions when we are ready to read a key. The - callback functions know to call this because RL_ISSTATE(RL_STATE_ISEARCH). - If _rl_isearch_dispatch finishes searching, this function is responsible - for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */ -int -_rl_isearch_callback (cxt) - _rl_search_cxt *cxt; -{ - int c, r; + rl_clear_message (); - c = _rl_search_getchar (cxt); - /* We might want to handle EOF here */ - r = _rl_isearch_dispatch (cxt, cxt->lastc); + FREE (allocated_line); + free (lines); - return (r <= 0) ? _rl_isearch_cleanup (cxt, r) : 0; + RL_UNSETSTATE(RL_STATE_ISEARCH); + + return 0; } -#endif diff --git a/readline/keymaps.c b/readline/keymaps.c index 70d0cc0..12506d3 100644 --- a/readline/keymaps.c +++ b/readline/keymaps.c @@ -64,13 +64,11 @@ rl_make_bare_keymap () keymap[i].function = (rl_command_func_t *)NULL; } -#if 0 for (i = 'A'; i < ('Z' + 1); i++) { keymap[i].type = ISFUNC; keymap[i].function = rl_do_lowercase_version; } -#endif return (keymap); } @@ -81,9 +79,8 @@ rl_copy_keymap (map) Keymap map; { register int i; - Keymap temp; + Keymap temp = rl_make_bare_keymap (); - temp = rl_make_bare_keymap (); for (i = 0; i < KEYMAP_SIZE; i++) { temp[i].type = map[i].type; @@ -112,8 +109,12 @@ rl_make_keymap () newmap[CTRL('H')].function = rl_rubout; #if KEYMAP_SIZE > 128 - /* Printing characters in ISO Latin-1 and some 8-bit character sets. */ - for (i = 128; i < 256; i++) + /* Printing characters in some 8-bit character sets. */ + for (i = 128; i < 160; i++) + newmap[i].function = rl_insert; + + /* ISO Latin-1 printing characters should self-insert. */ + for (i = 160; i < 256; i++) newmap[i].function = rl_insert; #endif /* KEYMAP_SIZE > 128 */ diff --git a/readline/kill.c b/readline/kill.c index 1d3254c..a616b92 100644 --- a/readline/kill.c +++ b/readline/kill.c @@ -339,47 +339,6 @@ rl_unix_word_rubout (count, key) if (rl_editing_mode == emacs_mode) rl_mark = rl_point; } - - return 0; -} - -/* This deletes one filename component in a Unix pathname. That is, it - deletes backward to directory separator (`/') or whitespace. */ -int -rl_unix_filename_rubout (count, key) - int count, key; -{ - int orig_point, c; - - if (rl_point == 0) - rl_ding (); - else - { - orig_point = rl_point; - if (count <= 0) - count = 1; - - while (count--) - { - c = rl_line_buffer[rl_point - 1]; - while (rl_point && (whitespace (c) || c == '/')) - { - rl_point--; - c = rl_line_buffer[rl_point - 1]; - } - - while (rl_point && (whitespace (c) == 0) && c != '/') - { - rl_point--; - c = rl_line_buffer[rl_point - 1]; - } - } - - rl_kill_text (orig_point, rl_point); - if (rl_editing_mode == emacs_mode) - rl_mark = rl_point; - } - return 0; } diff --git a/readline/macro.c b/readline/macro.c index 2975bf1..b73c3af 100644 --- a/readline/macro.c +++ b/readline/macro.c @@ -100,8 +100,6 @@ _rl_with_macro_input (string) int _rl_next_macro_key () { - int c; - if (rl_executing_macro == 0) return (0); @@ -111,14 +109,7 @@ _rl_next_macro_key () return (_rl_next_macro_key ()); } -#if defined (READLINE_CALLBACKS) - c = rl_executing_macro[executing_macro_index++]; - if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_READCMD) && rl_executing_macro[executing_macro_index] == 0) - _rl_pop_executing_macro (); - return c; -#else return (rl_executing_macro[executing_macro_index++]); -#endif } /* Save the currently executing macro on a stack of saved macros. */ diff --git a/readline/mbutil.c b/readline/mbutil.c index 17dde53..8794d02 100644 --- a/readline/mbutil.c +++ b/readline/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2005 Free Software Foundation, Inc. +/* Copyright (C) 2001 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -77,29 +77,27 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) char *string; int seed, count, find_non_zero; { - size_t tmp; + size_t tmp = 0; mbstate_t ps; - int point; + int point = 0; wchar_t wc; - tmp = 0; - memset(&ps, 0, sizeof (mbstate_t)); if (seed < 0) seed = 0; if (count <= 0) return seed; - point = seed + _rl_adjust_point (string, seed, &ps); + point = seed + _rl_adjust_point(string, seed, &ps); /* if this is true, means that seed was not pointed character started byte. So correct the point and consume count */ if (seed < point) - count--; + count --; while (count > 0) { tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps); - if (MB_INVALIDCH ((size_t)tmp)) + if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) { /* invalid bytes. asume a byte represents a character */ point++; @@ -107,8 +105,9 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) /* reset states. */ memset(&ps, 0, sizeof(mbstate_t)); } - else if (MB_NULLWCH (tmp)) - break; /* found wide '\0' */ + else if (tmp == (size_t)0) + /* found '\0' char */ + break; else { /* valid bytes */ @@ -128,16 +127,15 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) if (find_non_zero) { tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); - while (tmp > 0 && wcwidth (wc) == 0) + while (wcwidth (wc) == 0) { point += tmp; tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); - if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) + if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2)) break; } } - - return point; + return point; } static int @@ -162,7 +160,7 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) while (point < seed) { tmp = mbrtowc (&wc, string + point, length - point, &ps); - if (MB_INVALIDCH ((size_t)tmp)) + if ((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) { /* in this case, bytes are invalid or shorted to compose multibyte char, so assume that the first byte represents @@ -171,12 +169,8 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) /* clear the state of the byte sequence, because in this case effect of mbstate is undefined */ memset(&ps, 0, sizeof (mbstate_t)); - - /* Since we're assuming that this byte represents a single - non-zero-width character, don't forget about it. */ - prev = point; } - else if (MB_NULLWCH (tmp)) + else if (tmp == 0) break; /* Found '\0' char. Can this happen? */ else { @@ -279,7 +273,7 @@ _rl_adjust_point(string, point, ps) while (pos < point) { tmp = mbrlen (string + pos, length - pos, ps); - if (MB_INVALIDCH ((size_t)tmp)) + if((size_t)(tmp) == (size_t)-1 || (size_t)(tmp) == (size_t)-2) { /* in this case, bytes are invalid or shorted to compose multibyte char, so assume that the first byte represents @@ -290,7 +284,7 @@ _rl_adjust_point(string, point, ps) if (ps) memset (ps, 0, sizeof (mbstate_t)); } - else if (MB_NULLWCH (tmp)) + else if (tmp == 0) pos++; else pos += tmp; @@ -316,28 +310,6 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length) return 0; return 1; } - -wchar_t -_rl_char_value (buf, ind) - char *buf; - int ind; -{ - size_t tmp; - wchar_t wc; - mbstate_t ps; - int l; - - if (MB_LEN_MAX == 1 || rl_byte_oriented) - return ((wchar_t) buf[ind]); - l = strlen (buf); - if (ind >= l - 1) - return ((wchar_t) buf[ind]); - memset (&ps, 0, sizeof (mbstate_t)); - tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); - if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) - return ((wchar_t) buf[ind]); - return wc; -} #endif /* HANDLE_MULTIBYTE */ /* Find next `count' characters started byte point of the specified seed. diff --git a/readline/misc.c b/readline/misc.c index d455832..f3775d3 100644 --- a/readline/misc.c +++ b/readline/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -63,8 +63,6 @@ void _rl_free_history_entry PARAMS((HIST_ENTRY *)); to preserve the value of rl_point from line to line. */ int _rl_history_preserve_point = 0; -_rl_arg_cxt _rl_argcxt; - /* Saved target point for when _rl_history_preserve_point is set. Special value of -1 means that point is at the end of the line. */ int _rl_history_saved_point = -1; @@ -75,74 +73,77 @@ int _rl_history_saved_point = -1; /* */ /* **************************************************************** */ -int -_rl_arg_overflow () +/* Handle C-u style numeric args, as well as M--, and M-digits. */ +static int +rl_digit_loop () { - if (rl_numeric_arg > 1000000) - { - _rl_argcxt = 0; - rl_explicit_arg = rl_numeric_arg = 0; - rl_ding (); - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - return 1; - } - return 0; -} + int key, c, sawminus, sawdigits; -void -_rl_arg_init () -{ rl_save_prompt (); - _rl_argcxt = 0; - RL_SETSTATE(RL_STATE_NUMERICARG); -} -int -_rl_arg_getchar () -{ - int c; - - rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); - RL_SETSTATE(RL_STATE_MOREINPUT); - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + RL_SETSTATE(RL_STATE_NUMERICARG); + sawminus = sawdigits = 0; + while (1) + { + if (rl_numeric_arg > 1000000) + { + sawdigits = rl_explicit_arg = rl_numeric_arg = 0; + rl_ding (); + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + return 1; + } + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); + RL_SETSTATE(RL_STATE_MOREINPUT); + key = c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); - return c; -} + if (c < 0) + { + _rl_abort_internal (); + return -1; + } -/* Process C as part of the current numeric argument. Return -1 if the - argument should be aborted, 0 if we should not read any more chars, and - 1 if we should continue to read chars. */ -int -_rl_arg_dispatch (cxt, c) - _rl_arg_cxt cxt; - int c; -{ - int key, r; + /* If we see a key bound to `universal-argument' after seeing digits, + it ends the argument but is otherwise ignored. */ + if (_rl_keymap[c].type == ISFUNC && + _rl_keymap[c].function == rl_universal_argument) + { + if (sawdigits == 0) + { + rl_numeric_arg *= 4; + continue; + } + else + { + RL_SETSTATE(RL_STATE_MOREINPUT); + key = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + return (_rl_dispatch (key, _rl_keymap)); + } + } - key = c; + c = UNMETA (c); - /* If we see a key bound to `universal-argument' after seeing digits, - it ends the argument but is otherwise ignored. */ - if (_rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) - { - if ((cxt & NUM_SAWDIGITS) == 0) + if (_rl_digit_p (c)) { - rl_numeric_arg *= 4; - return 1; + rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + c - '0' : c - '0'; + sawdigits = rl_explicit_arg = 1; + } + else if (c == '-' && rl_explicit_arg == 0) + { + rl_numeric_arg = sawminus = 1; + rl_arg_sign = -1; } - else if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_argcxt |= NUM_READONE; - return 0; /* XXX */ - } else { - RL_SETSTATE(RL_STATE_MOREINPUT); - key = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); + /* Make M-- command equivalent to M--1 command. */ + if (sawminus && rl_numeric_arg == 1 && rl_explicit_arg == 0) + rl_explicit_arg = 1; rl_restore_prompt (); rl_clear_message (); RL_UNSETSTATE(RL_STATE_NUMERICARG); @@ -150,96 +151,35 @@ _rl_arg_dispatch (cxt, c) } } - c = UNMETA (c); - - if (_rl_digit_p (c)) - { - r = _rl_digit_value (c); - rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + r : r; - rl_explicit_arg = 1; - _rl_argcxt |= NUM_SAWDIGITS; - } - else if (c == '-' && rl_explicit_arg == 0) - { - rl_numeric_arg = 1; - _rl_argcxt |= NUM_SAWMINUS; - rl_arg_sign = -1; - } - else - { - /* Make M-- command equivalent to M--1 command. */ - if ((_rl_argcxt & NUM_SAWMINUS) && rl_numeric_arg == 1 && rl_explicit_arg == 0) - rl_explicit_arg = 1; - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - - r = _rl_dispatch (key, _rl_keymap); - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - /* At worst, this will cause an extra redisplay. Otherwise, - we have to wait until the next character comes in. */ - if (rl_done == 0) - (*rl_redisplay_function) (); - r = 0; - } - return r; - } - - return 1; + /*NOTREACHED*/ } -/* Handle C-u style numeric args, as well as M--, and M-digits. */ -static int -rl_digit_loop () +/* Add the current digit to the argument in progress. */ +int +rl_digit_argument (ignore, key) + int ignore, key; { - int c, r; - - while (1) - { - if (_rl_arg_overflow ()) - return 1; - - c = _rl_arg_getchar (); - - if (c < 0) - { - _rl_abort_internal (); - return -1; - } - - r = _rl_arg_dispatch (_rl_argcxt, c); - if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) - break; - } + rl_execute_next (key); + return (rl_digit_loop ()); } -/* Create a default argument. */ -void -_rl_reset_argument () +/* What to do when you abort reading an argument. */ +int +rl_discard_argument () { - rl_numeric_arg = rl_arg_sign = 1; - rl_explicit_arg = 0; - _rl_argcxt = 0; + rl_ding (); + rl_clear_message (); + _rl_init_argument (); + return 0; } -/* Start a numeric argument with initial value KEY */ +/* Create a default argument. */ int -rl_digit_argument (ignore, key) - int ignore, key; +_rl_init_argument () { - _rl_arg_init (); - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_arg_dispatch (_rl_argcxt, key); - rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); - return 0; - } - else - { - rl_execute_next (key); - return (rl_digit_loop ()); - } + rl_numeric_arg = rl_arg_sign = 1; + rl_explicit_arg = 0; + return 0; } /* C-u, universal argument. Multiply the current argument by 4. @@ -249,43 +189,8 @@ int rl_universal_argument (count, key) int count, key; { - _rl_arg_init (); rl_numeric_arg *= 4; - - return (RL_ISSTATE (RL_STATE_CALLBACK) ? 0 : rl_digit_loop ()); -} - -int -_rl_arg_callback (cxt) - _rl_arg_cxt cxt; -{ - int c, r; - - c = _rl_arg_getchar (); - - if (_rl_argcxt & NUM_READONE) - { - _rl_argcxt &= ~NUM_READONE; - rl_restore_prompt (); - rl_clear_message (); - RL_UNSETSTATE(RL_STATE_NUMERICARG); - rl_execute_next (c); - return 0; - } - - r = _rl_arg_dispatch (cxt, c); - return (r != 1); -} - -/* What to do when you abort reading an argument. */ -int -rl_discard_argument () -{ - rl_ding (); - rl_clear_message (); - _rl_reset_argument (); - - return 0; + return (rl_digit_loop ()); } /* **************************************************************** */ @@ -320,10 +225,8 @@ _rl_free_history_entry (entry) { if (entry == 0) return; - - FREE (entry->line); - FREE (entry->timestamp); - + if (entry->line) + free (entry->line); free (entry); } @@ -339,7 +242,6 @@ rl_maybe_replace_line () { temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); free (temp->line); - FREE (temp->timestamp); free (temp); } return 0; @@ -351,8 +253,6 @@ rl_maybe_unsave_line () { if (_rl_saved_line_for_history) { - /* Can't call with `1' because rl_undo_list might point to an undo - 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; _rl_free_history_entry (_rl_saved_line_for_history); @@ -372,10 +272,8 @@ rl_maybe_save_line () { _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); _rl_saved_line_for_history->line = savestring (rl_line_buffer); - _rl_saved_line_for_history->timestamp = (char *)NULL; _rl_saved_line_for_history->data = (char *)rl_undo_list; } - return 0; } @@ -400,7 +298,7 @@ _rl_history_set_point () rl_point = rl_end; #if defined (VI_MODE) - if (rl_editing_mode == vi_mode && _rl_keymap != vi_insertion_keymap) + if (rl_editing_mode == vi_mode) rl_point = 0; #endif /* VI_MODE */ @@ -413,8 +311,6 @@ rl_replace_from_history (entry, flags) HIST_ENTRY *entry; int flags; /* currently unused */ { - /* Can't call with `1' because rl_undo_list might point to an undo list - from a history entry, just like we're setting up here. */ rl_replace_line (entry->line, 0); rl_undo_list = (UNDO_LIST *)entry->data; rl_point = rl_end; @@ -539,7 +435,6 @@ rl_get_previous_history (count, key) rl_replace_from_history (temp, 0); _rl_history_set_point (); } - return 0; } diff --git a/readline/nls.c b/readline/nls.c index bcee875..706c819 100644 --- a/readline/nls.c +++ b/readline/nls.c @@ -75,23 +75,6 @@ static char *normalize_codeset PARAMS((char *)); static char *find_codeset PARAMS((char *, size_t *)); #endif /* !HAVE_SETLOCALE */ -static char *_rl_get_locale_var PARAMS((const char *)); - -static char * -_rl_get_locale_var (v) - const char *v; -{ - char *lspec; - - lspec = sh_get_env_value ("LC_ALL"); - if (lspec == 0 || *lspec == 0) - lspec = sh_get_env_value (v); - if (lspec == 0 || *lspec == 0) - lspec = sh_get_env_value ("LANG"); - - return lspec; -} - /* 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. */ @@ -101,21 +84,10 @@ _rl_init_eightbit () /* 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. */ #if defined (HAVE_SETLOCALE) - char *lspec, *t; + char *t; /* Set the LC_CTYPE locale category from environment variables. */ - lspec = _rl_get_locale_var ("LC_CTYPE"); - /* Since _rl_get_locale_var queries the right environment variables, - we query the current locale settings with setlocale(), and, if - 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 (lspec == 0 || *lspec == 0) - lspec = setlocale (LC_CTYPE, (char *)NULL); - if (lspec == 0) - lspec = ""; - t = setlocale (LC_CTYPE, lspec); - + t = setlocale (LC_CTYPE, ""); if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) { _rl_meta_flag = 1; @@ -133,8 +105,9 @@ _rl_init_eightbit () /* 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"); - + lspec = sh_get_env_value ("LC_ALL"); + if (lspec == 0) lspec = sh_get_env_value ("LC_CTYPE"); + if (lspec == 0) lspec = sh_get_env_value ("LANG"); if (lspec == 0 || (t = normalize_codeset (lspec)) == 0) return (0); for (i = 0; t && legal_lang_values[i]; i++) diff --git a/readline/parens.c b/readline/parens.c index 737f767..54ef1f3 100644 --- a/readline/parens.c +++ b/readline/parens.c @@ -21,10 +21,6 @@ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #define READLINE_LIBRARY -#if defined (__TANDEM) -# include <floss.h> -#endif - #include "rlconf.h" #if defined (HAVE_CONFIG_H) diff --git a/readline/posixdir.h b/readline/posixdir.h index 91f6d96..505e279 100644 --- a/readline/posixdir.h +++ b/readline/posixdir.h @@ -25,11 +25,7 @@ #if defined (HAVE_DIRENT_H) # include <dirent.h> -# if defined (HAVE_STRUCT_DIRENT_D_NAMLEN) -# define D_NAMLEN(d) ((d)->d_namlen) -# else -# define D_NAMLEN(d) (strlen ((d)->d_name)) -# endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */ +# define D_NAMLEN(d) (strlen ((d)->d_name)) #else # if defined (HAVE_SYS_NDIR_H) # include <sys/ndir.h> @@ -46,11 +42,11 @@ # define D_NAMLEN(d) ((d)->d_namlen) #endif /* !HAVE_DIRENT_H */ -#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) +#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO) # define d_fileno d_ino #endif -#if defined (_POSIX_SOURCE) && (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)) +#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO)) /* Posix does not require that the d_ino field be present, and some systems do not provide it. */ # define REAL_DIR_ENTRY(dp) 1 diff --git a/readline/readline.c b/readline/readline.c index 5e9767a..07fb58f 100644 --- a/readline/readline.c +++ b/readline/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-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -68,11 +68,11 @@ #include "xmalloc.h" #ifndef RL_LIBRARY_VERSION -# define RL_LIBRARY_VERSION "5.1" +# define RL_LIBRARY_VERSION "4.3" #endif #ifndef RL_READLINE_VERSION -# define RL_READLINE_VERSION 0x0501 +# define RL_READLINE_VERSION 0x0403 #endif extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); @@ -85,10 +85,6 @@ static void bind_arrow_keys_internal PARAMS((Keymap)); static void bind_arrow_keys PARAMS((void)); static void readline_default_bindings PARAMS((void)); -static void reset_default_bindings PARAMS((void)); - -static int _rl_subseq_result PARAMS((int, Keymap, int, int)); -static int _rl_subseq_getchar PARAMS((int)); /* **************************************************************** */ /* */ @@ -107,7 +103,6 @@ int rl_gnu_readline_p = 1; By default, it is the standard emacs keymap. */ Keymap _rl_keymap = emacs_standard_keymap; - /* The current style of editing. */ int rl_editing_mode = emacs_mode; @@ -223,9 +218,6 @@ char *_rl_comment_begin; /* Keymap holding the function currently being executed. */ Keymap rl_executing_keymap; -/* Keymap we're currently using to dispatch. */ -Keymap _rl_dispatching_keymap; - /* Non-zero means to erase entire line, including prompt, on empty input lines. */ int rl_erase_empty_line = 0; @@ -237,9 +229,6 @@ int rl_num_chars_to_read; char *rl_line_buffer = (char *)NULL; int rl_line_buffer_len = 0; -/* Key sequence `contexts' */ -_rl_keyseq_cxt *_rl_kscxt = 0; - /* Forward declarations used by the display, termcap, and history code. */ /* **************************************************************** */ @@ -261,10 +250,6 @@ int _rl_convert_meta_chars_to_ascii = 1; rather than as a meta-prefixed escape sequence. */ int _rl_output_meta_chars = 0; -/* Non-zero means to look at the termios special characters and bind - them to equivalent readline functions at startup. */ -int _rl_bind_stty_chars = 1; - /* **************************************************************** */ /* */ /* Top Level Functions */ @@ -305,16 +290,14 @@ readline (prompt) rl_set_prompt (prompt); rl_initialize (); - if (rl_prep_term_function) - (*rl_prep_term_function) (_rl_meta_flag); + (*rl_prep_term_function) (_rl_meta_flag); #if defined (HANDLE_SIGNALS) rl_set_signals (); #endif value = readline_internal (); - if (rl_deprep_term_function) - (*rl_deprep_term_function) (); + (*rl_deprep_term_function) (); #if defined (HANDLE_SIGNALS) rl_clear_signals (); @@ -364,7 +347,7 @@ readline_internal_setup () #if defined (VI_MODE) if (rl_editing_mode == vi_mode) - rl_vi_insertion_mode (1, 'i'); + rl_vi_insertion_mode (1, 0); #endif /* VI_MODE */ if (rl_pre_input_hook) @@ -404,36 +387,6 @@ readline_internal_teardown (eof) return (eof ? (char *)NULL : savestring (the_line)); } -void -_rl_internal_char_cleanup () -{ -#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. */ - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) - rl_vi_check (); -#endif /* VI_MODE */ - - if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - rl_newline (1, '\n'); - } - - if (rl_done == 0) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - } - - /* If the application writer has told us to erase the entire line if - the only character typed was something bound to rl_newline, do so. */ - if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline && - rl_point == 0 && rl_end == 0) - _rl_erase_entire_line (); -} - STATIC_CALLBACK int #if defined (READLINE_CALLBACKS) readline_internal_char () @@ -456,21 +409,12 @@ readline_internal_charloop () code = setjmp (readline_top_level); if (code) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - /* If we get here, we're not being called from something dispatched - from _rl_callback_read_char(), which sets up its own value of - readline_top_level (saving and restoring the old, of course), so - we can just return here. */ - if (RL_ISSTATE (RL_STATE_CALLBACK)) - return (0); - } + (*rl_redisplay_function) (); if (rl_pending_input == 0) { /* Then initialize the argument and number of keys read. */ - _rl_reset_argument (); + _rl_init_argument (); rl_key_sequence_length = 0; } @@ -504,7 +448,27 @@ readline_internal_charloop () if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) _rl_last_command_was_kill = 0; - _rl_internal_char_cleanup (); +#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. */ + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) + rl_vi_check (); +#endif /* VI_MODE */ + + if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read) + { + (*rl_redisplay_function) (); + rl_newline (1, '\n'); + } + + if (rl_done == 0) + (*rl_redisplay_function) (); + + /* If the application writer has told us to erase the entire line if + the only character typed was something bound to rl_newline, do so. */ + if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline && + rl_point == 0 && rl_end == 0) + _rl_erase_entire_line (); #if defined (READLINE_CALLBACKS) return 0; @@ -554,107 +518,6 @@ _rl_set_the_line () the_line = rl_line_buffer; } -#if defined (READLINE_CALLBACKS) -_rl_keyseq_cxt * -_rl_keyseq_cxt_alloc () -{ - _rl_keyseq_cxt *cxt; - - cxt = (_rl_keyseq_cxt *)xmalloc (sizeof (_rl_keyseq_cxt)); - - cxt->flags = cxt->subseq_arg = cxt->subseq_retval = 0; - - cxt->okey = 0; - cxt->ocxt = _rl_kscxt; - cxt->childval = 42; /* sentinel value */ - - return cxt; -} - -void -_rl_keyseq_cxt_dispose (cxt) - _rl_keyseq_cxt *cxt; -{ - free (cxt); -} - -void -_rl_keyseq_chain_dispose () -{ - _rl_keyseq_cxt *cxt; - - while (_rl_kscxt) - { - cxt = _rl_kscxt; - _rl_kscxt = _rl_kscxt->ocxt; - _rl_keyseq_cxt_dispose (cxt); - } -} -#endif - -static int -_rl_subseq_getchar (key) - int key; -{ - int k; - - if (key == ESC) - RL_SETSTATE(RL_STATE_METANEXT); - RL_SETSTATE(RL_STATE_MOREINPUT); - k = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - if (key == ESC) - RL_UNSETSTATE(RL_STATE_METANEXT); - - return k; -} - -#if defined (READLINE_CALLBACKS) -int -_rl_dispatch_callback (cxt) - _rl_keyseq_cxt *cxt; -{ - int nkey, r; - - /* For now */ -#if 1 - /* The first time this context is used, we want to read input and dispatch - on it. When traversing the chain of contexts back `up', we want to use - the value from the next context down. We're simulating recursion using - a chain of contexts. */ - if ((cxt->flags & KSEQ_DISPATCHED) == 0) - { - nkey = _rl_subseq_getchar (cxt->okey); - r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); - cxt->flags |= KSEQ_DISPATCHED; - } - else - r = cxt->childval; -#else - r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); -#endif - - /* For now */ - r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); - - if (r == 0) /* success! */ - { - _rl_keyseq_chain_dispose (); - RL_UNSETSTATE (RL_STATE_MULTIKEY); - return r; - } - - if (r != -3) /* magic value that says we added to the chain */ - _rl_kscxt = cxt->ocxt; - if (_rl_kscxt) - _rl_kscxt->childval = r; - if (r != -3) - _rl_keyseq_cxt_dispose (cxt); - - return r; -} -#endif /* READLINE_CALLBACKS */ - /* Do the command associated with KEY in MAP. If the associated command is really a keymap, then read another key, and dispatch into that map. */ @@ -663,7 +526,6 @@ _rl_dispatch (key, map) register int key; Keymap map; { - _rl_dispatching_keymap = map; return _rl_dispatch_subseq (key, map, 0); } @@ -676,9 +538,6 @@ _rl_dispatch_subseq (key, map, got_subseq) int r, newkey; char *macro; rl_command_func_t *func; -#if defined (READLINE_CALLBACKS) - _rl_keyseq_cxt *cxt; -#endif if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) { @@ -712,6 +571,10 @@ _rl_dispatch_subseq (key, map, got_subseq) rl_executing_keymap = map; +#if 0 + _rl_suppress_redisplay = (map[key].function == rl_insert) && _rl_input_available (); +#endif + rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); @@ -743,10 +606,6 @@ _rl_dispatch_subseq (key, map, got_subseq) } else { -#if defined (READLINE_CALLBACKS) - RL_UNSETSTATE (RL_STATE_MULTIKEY); - _rl_keyseq_chain_dispose (); -#endif _rl_abort_internal (); return -1; } @@ -768,43 +627,44 @@ _rl_dispatch_subseq (key, map, got_subseq) #endif rl_key_sequence_length++; - _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key); - /* Allocate new context here. Use linked contexts (linked through - cxt->ocxt) to simulate recursion */ -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - /* Return 0 only the first time, to indicate success to - _rl_callback_read_char. The rest of the time, we're called - from _rl_dispatch_callback, so we return 3 to indicate - special handling is necessary. */ - r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0; - cxt = _rl_keyseq_cxt_alloc (); - - if (got_subseq) - cxt->flags |= KSEQ_SUBSEQ; - cxt->okey = key; - cxt->oldmap = map; - cxt->dmap = _rl_dispatching_keymap; - cxt->subseq_arg = got_subseq || cxt->dmap[ANYOTHERKEY].function; - - RL_SETSTATE (RL_STATE_MULTIKEY); - _rl_kscxt = cxt; - - return r; /* don't indicate immediate success */ - } -#endif + if (key == ESC) + RL_SETSTATE(RL_STATE_METANEXT); + RL_SETSTATE(RL_STATE_MOREINPUT); + newkey = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (key == ESC) + RL_UNSETSTATE(RL_STATE_METANEXT); - newkey = _rl_subseq_getchar (key); if (newkey < 0) { _rl_abort_internal (); return -1; } - r = _rl_dispatch_subseq (newkey, _rl_dispatching_keymap, got_subseq || map[ANYOTHERKEY].function); - return _rl_subseq_result (r, map, key, got_subseq); + r = _rl_dispatch_subseq (newkey, FUNCTION_TO_KEYMAP (map, key), got_subseq || map[ANYOTHERKEY].function); + + if (r == -2) + /* We didn't match anything, and the keymap we're indexed into + shadowed a function previously bound to that prefix. Call + the function. The recursive call to _rl_dispatch_subseq has + already taken care of pushing any necessary input back onto + the input queue with _rl_unget_char. */ + r = _rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)); + else if (r && map[ANYOTHERKEY].function) + { + /* We didn't match (r is probably -1), so return something to + tell the caller that it should try ANYOTHERKEY for an + overridden function. */ + _rl_unget_char (key); + return -2; + } + else if (r && got_subseq) + { + /* OK, back up the chain. */ + _rl_unget_char (key); + return -1; + } } else { @@ -828,69 +688,9 @@ _rl_dispatch_subseq (key, map, got_subseq) _rl_vi_textmod_command (key)) _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); #endif - return (r); } -static int -_rl_subseq_result (r, map, key, got_subseq) - int r; - Keymap map; - int key, got_subseq; -{ - Keymap m; - int type, nt; - rl_command_func_t *func, *nf; - - if (r == -2) - /* We didn't match anything, and the keymap we're indexed into - shadowed a function previously bound to that prefix. Call - the function. The recursive call to _rl_dispatch_subseq has - already taken care of pushing any necessary input back onto - the input queue with _rl_unget_char. */ - { - m = _rl_dispatching_keymap; - type = m[ANYOTHERKEY].type; - func = m[ANYOTHERKEY].function; - if (type == ISFUNC && func == rl_do_lowercase_version) - r = _rl_dispatch (_rl_to_lower (key), map); - else if (type == ISFUNC && func == rl_insert) - { - /* If the function that was shadowed was self-insert, we - somehow need a keymap with map[key].func == self-insert. - Let's use this one. */ - nt = m[key].type; - nf = m[key].function; - - m[key].type = type; - m[key].function = func; - r = _rl_dispatch (key, m); - m[key].type = nt; - m[key].function = nf; - } - else - r = _rl_dispatch (ANYOTHERKEY, m); - } - else if (r && map[ANYOTHERKEY].function) - { - /* We didn't match (r is probably -1), so return something to - tell the caller that it should try ANYOTHERKEY for an - overridden function. */ - _rl_unget_char (key); - _rl_dispatching_keymap = map; - return -2; - } - else if (r && got_subseq) - { - /* OK, back up the chain. */ - _rl_unget_char (key); - _rl_dispatching_keymap = map; - return -1; - } - - return r; -} - /* **************************************************************** */ /* */ /* Initializations */ @@ -1039,7 +839,7 @@ readline_initialize_everything () /* 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; + rl_completer_word_break_characters = rl_basic_word_break_characters; } /* If this system allows us to look at the values of the regular @@ -1048,20 +848,7 @@ readline_initialize_everything () static void readline_default_bindings () { - if (_rl_bind_stty_chars) - rl_tty_set_default_bindings (_rl_keymap); -} - -/* Reset the default bindings for the terminal special characters we're - interested in back to rl_insert and read the new ones. */ -static void -reset_default_bindings () -{ - if (_rl_bind_stty_chars) - { - rl_tty_unset_default_bindings (_rl_keymap); - rl_tty_set_default_bindings (_rl_keymap); - } + rl_tty_set_default_bindings (_rl_keymap); } /* Bind some common arrow key sequences in MAP. */ @@ -1075,33 +862,42 @@ bind_arrow_keys_internal (map) _rl_keymap = map; #if defined (__MSDOS__) - rl_bind_keyseq_if_unbound ("\033[0A", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033[0B", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033[0C", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033[0D", rl_get_next_history); + _rl_bind_if_unbound ("\033[0A", rl_get_previous_history); + _rl_bind_if_unbound ("\033[0B", rl_backward_char); + _rl_bind_if_unbound ("\033[0C", rl_forward_char); + _rl_bind_if_unbound ("\033[0D", rl_get_next_history); #endif - rl_bind_keyseq_if_unbound ("\033[A", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033[B", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\033[C", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033[D", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033[H", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\033[F", rl_end_of_line); - - rl_bind_keyseq_if_unbound ("\033OA", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033OB", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\033OC", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033OD", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); - -#if defined (__MINGW32__) - rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\340M", rl_forward_char); - rl_bind_keyseq_if_unbound ("\340K", rl_backward_char); +#ifdef __MINGW32__ + /* Under Windows, when an extend key (like an arrow key) is + pressed, getch() will return 340 (octal) followed by a code for + the extended key. We use macros to transform those into the + normal ANSI terminal sequences for these keys. */ + + /* Up arrow. */ + rl_macro_bind ("\340H", "\033[A", map); + /* Left arrow. */ + rl_macro_bind ("\340K", "\033[D", map); + /* Right arrow. */ + rl_macro_bind ("\340M", "\033[C", map); + /* Down arrow. */ + rl_macro_bind ("\340P", "\033[B", map); #endif + _rl_bind_if_unbound ("\033[A", rl_get_previous_history); + _rl_bind_if_unbound ("\033[B", rl_get_next_history); + _rl_bind_if_unbound ("\033[C", rl_forward_char); + _rl_bind_if_unbound ("\033[D", rl_backward_char); + _rl_bind_if_unbound ("\033[H", rl_beg_of_line); + _rl_bind_if_unbound ("\033[F", rl_end_of_line); + + _rl_bind_if_unbound ("\033OA", rl_get_previous_history); + _rl_bind_if_unbound ("\033OB", rl_get_next_history); + _rl_bind_if_unbound ("\033OC", rl_forward_char); + _rl_bind_if_unbound ("\033OD", rl_backward_char); + _rl_bind_if_unbound ("\033OH", rl_beg_of_line); + _rl_bind_if_unbound ("\033OF", rl_end_of_line); + _rl_keymap = xkeymap; } @@ -1154,7 +950,9 @@ rl_save_state (sp) sp->macro = rl_executing_macro; sp->catchsigs = rl_catch_signals; +#if defined (SIGWINCH) sp->catchsigwinch = rl_catch_sigwinch; +#endif return (0); } @@ -1188,7 +986,9 @@ rl_restore_state (sp) rl_executing_macro = sp->macro; rl_catch_signals = sp->catchsigs; +#if defined (SIGWINCH) rl_catch_sigwinch = sp->catchsigwinch; +#endif return (0); } diff --git a/readline/readline.h b/readline/readline.h index fade6d4..f11b3d0 100644 --- a/readline/readline.h +++ b/readline/readline.h @@ -1,6 +1,6 @@ /* Readline.h -- the names of functions callable from within readline. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -40,9 +40,9 @@ extern "C" { #endif /* Hex-encoded Readline version number. */ -#define RL_READLINE_VERSION 0x0501 /* Readline 5.1 */ -#define RL_VERSION_MAJOR 5 -#define RL_VERSION_MINOR 1 +#define RL_READLINE_VERSION 0x0403 /* Readline 4.3 */ +#define RL_VERSION_MAJOR 4 +#define RL_VERSION_MINOR 3 /* Readline data structures. */ @@ -160,7 +160,6 @@ 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)); @@ -241,7 +240,6 @@ 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_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_first_print PARAMS((int, int)); @@ -260,8 +258,6 @@ extern int rl_vi_check PARAMS((void)); extern int rl_vi_domove PARAMS((int, int *)); extern int rl_vi_bracktype PARAMS((int)); -extern void rl_vi_start_inserting PARAMS((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)); @@ -294,22 +290,12 @@ 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_set_key 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 *)); -/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */ -extern int rl_set_key PARAMS((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)); @@ -372,7 +358,7 @@ extern int rl_clear_message PARAMS((void)); extern int rl_reset_line_state PARAMS((void)); extern int rl_crlf PARAMS((void)); -#if defined (USE_VARARGS) && defined (PREFER_STDARG) +#if (defined (__STDC__) || defined (__cplusplus)) && defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else extern int rl_message (); @@ -398,13 +384,11 @@ extern char *rl_copy_text PARAMS((int, int)); 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 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 char *rl_get_termcap PARAMS((const char *)); @@ -532,11 +516,6 @@ extern const char *rl_terminal_name; extern FILE *rl_instream; extern FILE *rl_outstream; -/* If non-zero, Readline gives values of LINES and COLUMNS from the environment - greater precedence than values fetched from the kernel when computing the - screen dimensions. */ -extern int rl_prefer_env_winsize; - /* If non-zero, then this is the address of a function to call just before readline_internal () prints the first prompt. */ extern rl_hook_func_t *rl_startup_hook; @@ -624,12 +603,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; - -/* Hook function to allow an application to set the completion word - break characters before readline breaks up the line. Allows - position-dependent word break characters. */ -extern rl_cpvfunc_t *rl_completion_word_break_hook; +extern const char *rl_completer_word_break_characters; /* List of characters which can be used to quote a substring of the line. Completion occurs on the entire substring, and within the substring @@ -713,11 +687,6 @@ extern int rl_attempted_completion_over; functions. */ extern int rl_completion_type; -/* Up to this many items will be displayed in response to a - possible-completions call. After that, we ask the user if she - is sure she wants to see them all. The default value is 100. */ -extern int rl_completion_query_items; - /* Character appended to completed words when at the end of the line. The default is a space. Nothing is added if this is '\0'. */ extern int rl_completion_append_character; @@ -726,18 +695,10 @@ extern int rl_completion_append_character; rl_completion_append_character will not be appended. */ extern int rl_completion_suppress_append; -/* Set to any quote character readline thinks it finds before any application - completion function is called. */ -extern int rl_completion_quote_character; - -/* Set to a non-zero value if readline found quoting anywhere in the word to - be completed; set before any application completion function is called. */ -extern int rl_completion_found_quote; - -/* If non-zero, the completion functions don't append any closing quote. - This is set to 0 by rl_complete_internal and may be changed by an - application-specific completion function. */ -extern int rl_completion_suppress_quote; +/* Up to this many items will be displayed in response to a + possible-completions call. After that, we ask the user if she + is sure she wants to see them all. The default value is 100. */ +extern int rl_completion_query_items; /* If non-zero, a slash will be appended to completed filenames that are symbolic links to directory names, subject to the value of the @@ -768,33 +729,28 @@ extern int rl_inhibit_completion; #define MULT_MATCH 2 /* Possible state values for rl_readline_state */ -#define RL_STATE_NONE 0x000000 /* no state; before first call */ - -#define RL_STATE_INITIALIZING 0x000001 /* initializing */ -#define RL_STATE_INITIALIZED 0x000002 /* initialization done */ -#define RL_STATE_TERMPREPPED 0x000004 /* terminal is prepped */ -#define RL_STATE_READCMD 0x000008 /* reading a command key */ -#define RL_STATE_METANEXT 0x000010 /* reading input after ESC */ -#define RL_STATE_DISPATCHING 0x000020 /* dispatching to a command */ -#define RL_STATE_MOREINPUT 0x000040 /* reading more input in a command function */ -#define RL_STATE_ISEARCH 0x000080 /* doing incremental search */ -#define RL_STATE_NSEARCH 0x000100 /* doing non-inc search */ -#define RL_STATE_SEARCH 0x000200 /* doing a history search */ -#define RL_STATE_NUMERICARG 0x000400 /* reading numeric argument */ -#define RL_STATE_MACROINPUT 0x000800 /* getting input from a macro */ -#define RL_STATE_MACRODEF 0x001000 /* defining keyboard macro */ -#define RL_STATE_OVERWRITE 0x002000 /* overwrite mode */ -#define RL_STATE_COMPLETING 0x004000 /* doing completion */ -#define RL_STATE_SIGHANDLER 0x008000 /* in readline sighandler */ -#define RL_STATE_UNDOING 0x010000 /* doing an undo */ -#define RL_STATE_INPUTPENDING 0x020000 /* rl_execute_next called */ -#define RL_STATE_TTYCSAVED 0x040000 /* tty special chars saved */ -#define RL_STATE_CALLBACK 0x080000 /* using the callback interface */ -#define RL_STATE_VIMOTION 0x100000 /* reading vi motion arg */ -#define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ -#define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ - -#define RL_STATE_DONE 0x800000 /* done; accepted line */ +#define RL_STATE_NONE 0x00000 /* no state; before first call */ + +#define RL_STATE_INITIALIZING 0x00001 /* initializing */ +#define RL_STATE_INITIALIZED 0x00002 /* initialization done */ +#define RL_STATE_TERMPREPPED 0x00004 /* terminal is prepped */ +#define RL_STATE_READCMD 0x00008 /* reading a command key */ +#define RL_STATE_METANEXT 0x00010 /* reading input after ESC */ +#define RL_STATE_DISPATCHING 0x00020 /* dispatching to a command */ +#define RL_STATE_MOREINPUT 0x00040 /* reading more input in a command function */ +#define RL_STATE_ISEARCH 0x00080 /* doing incremental search */ +#define RL_STATE_NSEARCH 0x00100 /* doing non-inc search */ +#define RL_STATE_SEARCH 0x00200 /* doing a history search */ +#define RL_STATE_NUMERICARG 0x00400 /* reading numeric argument */ +#define RL_STATE_MACROINPUT 0x00800 /* getting input from a macro */ +#define RL_STATE_MACRODEF 0x01000 /* defining keyboard macro */ +#define RL_STATE_OVERWRITE 0x02000 /* overwrite mode */ +#define RL_STATE_COMPLETING 0x04000 /* doing completion */ +#define RL_STATE_SIGHANDLER 0x08000 /* in readline sighandler */ +#define RL_STATE_UNDOING 0x10000 /* doing an undo */ +#define RL_STATE_INPUTPENDING 0x20000 /* rl_execute_next called */ + +#define RL_STATE_DONE 0x80000 /* done; accepted line */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) @@ -829,12 +785,6 @@ struct readline_state { int catchsigs; int catchsigwinch; - /* search state */ - - /* completion state */ - - /* options state */ - /* reserved for future expansion, so the struct size doesn't change */ char reserved[64]; }; diff --git a/readline/rldefs.h b/readline/rldefs.h index 0f6c874..b80db8c 100644 --- a/readline/rldefs.h +++ b/readline/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-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987,1989 Free Software Foundation, Inc. This file contains the Readline Library (the Library), a set of routines for providing Emacs style line input to programs that ask @@ -32,17 +32,15 @@ #include "rlstdc.h" -#if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) +#if defined (__MINGW32__) +# define NO_TTY_DRIVER +#elif defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) # define TERMIOS_TTY_DRIVER #else # if defined (HAVE_TERMIO_H) # define TERMIO_TTY_DRIVER # else -# if !defined (__MINGW32__) -# define NEW_TTY_DRIVER -# else -# define NO_TTY_DRIVER -# endif +# define NEW_TTY_DRIVER # endif #endif @@ -81,7 +79,7 @@ extern int _rl_stricmp PARAMS((char *, char *)); extern int _rl_strnicmp PARAMS((char *, char *, int)); #endif -#if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) +#if defined (HAVE_STRPBRK) # define _rl_strpbrk(a,b) strpbrk((a),(b)) #else extern char *_rl_strpbrk PARAMS((const char *, const char *)); diff --git a/readline/rlmbutil.h b/readline/rlmbutil.h index 11adacb..dab954f 100644 --- a/readline/rlmbutil.h +++ b/readline/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -30,33 +30,27 @@ /************************************************/ /* For platforms which support the ISO C amendement 1 functionality we - support user defined character classes. */ + support user defined character classes. + + Some platforms have the multibyte functions such as mbsrtowcs but + are lacking the multitype type mbstate_t. BeOS (unknown version) + and HP/UX 11.23 without _XOPEN_SOURCE=500 are like this. + + We really need mbstate_t type to operate properly. For example, see + compute_lcd_of_matches, where two mbstate_t's are active at the same + time. So we require both the functions and the mbstate_t type in + order to enable multibyte support. */ + /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */ #if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) # include <wchar.h> # include <wctype.h> -# if defined (HAVE_MBSRTOWCS) && defined (HAVE_MBRTOWC) && defined (HAVE_MBRLEN) && defined (HAVE_WCWIDTH) +# if defined (HAVE_MBSTATE_T) && defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */ # define HANDLE_MULTIBYTE 1 # endif #endif -/* If we don't want multibyte chars even on a system that supports them, let - the configuring user turn multibyte support off. */ -#if defined (NO_MULTIBYTE_SUPPORT) -# undef HANDLE_MULTIBYTE -#endif - -/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ -#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T) -# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0) -# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0) -# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0) -# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0) -# define mbrlen(s, n, ps) (mbrlen) (s, n, 0) -# define mbstate_t int -#endif - /* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to handle multibyte chars (some systems define MB_LEN_MAX as 1) */ #ifdef HANDLE_MULTIBYTE @@ -97,24 +91,6 @@ extern int _rl_read_mbstring PARAMS((int, char *, int)); extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); -extern wchar_t _rl_char_value PARAMS((char *, int)); -extern int _rl_walphabetic PARAMS((wchar_t)); - -#define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) -#define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) - -#define MB_NEXTCHAR(b,s,c,f) \ - ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ - ? _rl_find_next_mbchar ((b), (s), (c), (f)) \ - : ((s) + (c))) -#define MB_PREVCHAR(b,s,f) \ - ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ - ? _rl_find_prev_mbchar ((b), (s), (f)) \ - : ((s) - 1)) - -#define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) -#define MB_NULLWCH(x) ((x) == 0) - #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -126,19 +102,6 @@ extern int _rl_walphabetic PARAMS((wchar_t)); #define _rl_find_prev_mbchar(b, i, f) (((i) == 0) ? (i) : ((i) - 1)) #define _rl_find_next_mbchar(b, i1, i2, f) ((i1) + (i2)) -#define _rl_char_value(buf,ind) ((buf)[(ind)]) - -#define _rl_walphabetic(c) (rl_alphabetic (c)) - -#define _rl_to_wupper(c) (_rl_to_upper (c)) -#define _rl_to_wlower(c) (_rl_to_lower (c)) - -#define MB_NEXTCHAR(b,s,c,f) ((s) + (c)) -#define MB_PREVCHAR(b,s,f) ((s) - 1) - -#define MB_INVALIDCH(x) (0) -#define MB_NULLWCH(x) (0) - #endif /* !HANDLE_MULTIBYTE */ extern int rl_byte_oriented; diff --git a/readline/rlprivate.h b/readline/rlprivate.h index 1c216ea..ccb9144 100644 --- a/readline/rlprivate.h +++ b/readline/rlprivate.h @@ -1,7 +1,7 @@ /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ -/* Copyright (C) 1999-2005 Free Software Foundation, Inc. +/* Copyright (C) 1999 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -30,95 +30,6 @@ /************************************************************************* * * - * Global structs undocumented in texinfo manual and not in readline.h * - * * - *************************************************************************/ -/* search types */ -#define RL_SEARCH_ISEARCH 0x01 /* incremental search */ -#define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */ -#define RL_SEARCH_CSEARCH 0x04 /* intra-line char search */ - -/* search flags */ -#define SF_REVERSE 0x01 -#define SF_FOUND 0x02 -#define SF_FAILED 0x04 - -typedef struct __rl_search_context -{ - int type; - int sflags; - - char *search_string; - int search_string_index; - int search_string_size; - - char **lines; - char *allocated_line; - int hlen; - int hindex; - - int save_point; - int save_mark; - int save_line; - int last_found_line; - char *prev_line_found; - - UNDO_LIST *save_undo_list; - - int history_pos; - int direction; - - int lastc; -#if defined (HANDLE_MULTIBYTE) - char mb[MB_LEN_MAX]; -#endif - - char *sline; - int sline_len; - int sline_index; - - char *search_terminators; -} _rl_search_cxt; - -/* Callback data for reading numeric arguments */ -#define NUM_SAWMINUS 0x01 -#define NUM_SAWDIGITS 0x02 -#define NUM_READONE 0x04 - -typedef int _rl_arg_cxt; - -/* A context for reading key sequences longer than a single character when - using the callback interface. */ -#define KSEQ_DISPATCHED 0x01 -#define KSEQ_SUBSEQ 0x02 -#define KSEQ_RECURSIVE 0x04 - -typedef struct __rl_keyseq_context -{ - int flags; - int subseq_arg; - int subseq_retval; /* XXX */ - Keymap dmap; - - Keymap oldmap; - int okey; - struct __rl_keyseq_context *ocxt; - int childval; -} _rl_keyseq_cxt; - - /* fill in more as needed */ -/* `Generic' callback data and functions */ -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 *)); - -/************************************************************************* - * * * Global functions undocumented in texinfo manual and not in readline.h * * * *************************************************************************/ @@ -143,8 +54,6 @@ extern int readline_echoing_p; extern int rl_key_sequence_length; extern int rl_byte_oriented; -extern _rl_keyseq_cxt *_rl_kscxt; - /* display.c */ extern int rl_display_fixed; @@ -191,19 +100,10 @@ extern void readline_internal_setup PARAMS((void)); extern char *readline_internal_teardown PARAMS((int)); extern int readline_internal_char PARAMS((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 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 *)); - #endif /* READLINE_CALLBACKS */ /* bind.c */ +extern void _rl_bind_if_unbound PARAMS((const char *, rl_command_func_t *)); /* complete.c */ extern char _rl_find_completion_word PARAMS((int *, int *)); @@ -231,16 +131,6 @@ extern int _rl_input_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)); - -/* isearch.c */ -extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)); -extern void _rl_scxt_dispose PARAMS((_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_search_getchar PARAMS((_rl_search_cxt *)); /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); @@ -251,12 +141,7 @@ extern void _rl_add_macro_char PARAMS((int)); extern void _rl_kill_kbd_macro PARAMS((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_init_argument PARAMS((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)); @@ -272,15 +157,11 @@ 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)); /* rltty.c */ extern int _rl_disable_tty_signals PARAMS((void)); extern int _rl_restore_tty_signals PARAMS((void)); -/* search.c */ -extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); - /* terminal.c */ extern void _rl_get_screen_size PARAMS((int, int)); extern int _rl_init_terminal_io PARAMS((const char *)); @@ -336,13 +217,8 @@ extern void _rl_vi_done_inserting PARAMS((void)); extern const char *_rl_possible_control_prefixes[]; extern const char *_rl_possible_meta_prefixes[]; -/* callback.c */ -extern _rl_callback_func_t *_rl_callback_func; -extern _rl_callback_generic_arg *_rl_callback_data; - /* complete.c */ extern int _rl_complete_show_all; -extern int _rl_complete_show_unmodified; extern int _rl_complete_mark_directories; extern int _rl_complete_mark_symlink_dirs; extern int _rl_print_completions_horizontally; @@ -354,14 +230,11 @@ extern int _rl_page_completions; extern int _rl_vis_botlin; extern int _rl_last_c_pos; extern int _rl_suppress_redisplay; -extern int _rl_want_redisplay; extern char *rl_display_prompt; /* isearch.c */ extern char *_rl_isearch_terminators; -extern _rl_search_cxt *_rl_iscxt; - /* macro.c */ extern char *_rl_executing_macro; @@ -369,8 +242,6 @@ extern char *_rl_executing_macro; extern int _rl_history_preserve_point; extern int _rl_history_saved_point; -extern _rl_arg_cxt _rl_argcxt; - /* readline.c */ extern int _rl_horizontal_scroll_mode; extern int _rl_mark_modified_lines; @@ -378,7 +249,6 @@ extern int _rl_bell_preference; extern int _rl_meta_flag; extern int _rl_convert_meta_chars_to_ascii; extern int _rl_output_meta_chars; -extern int _rl_bind_stty_chars; extern char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; @@ -388,9 +258,6 @@ extern int _rl_last_command_was_kill; extern int _rl_eof_char; extern procenv_t readline_top_level; -/* search.c */ -extern _rl_search_cxt *_rl_nscxt; - /* terminal.c */ extern int _rl_enable_keypad; extern int _rl_enable_meta; @@ -414,7 +281,4 @@ extern int _rl_term_autowrap; extern int _rl_doing_an_undo; extern int _rl_undo_group_level; -/* vi_mode.c */ -extern int _rl_vi_last_command; - #endif /* _RL_PRIVATE_H_ */ diff --git a/readline/rlstdc.h b/readline/rlstdc.h index 847fa9c..d6a22b3 100644 --- a/readline/rlstdc.h +++ b/readline/rlstdc.h @@ -37,7 +37,7 @@ #endif #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ # define __attribute__(x) # endif #endif diff --git a/readline/rltty.c b/readline/rltty.c index 9a0326e..2ccb9d1 100644 --- a/readline/rltty.c +++ b/readline/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2005 Free Software Foundation, Inc. +/* Copyright (C) 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -188,8 +188,6 @@ static int set_tty_settings PARAMS((int, TIOTYPE *)); static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); -static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t)); - static void save_tty_chars (tiop) TIOTYPE *tiop; @@ -231,11 +229,12 @@ get_tty_settings (tty, tiop) int tty; TIOTYPE *tiop; { +#if defined (TIOCGWINSZ) set_winsize (tty); +#endif tiop->flags = tiop->lflag = 0; - errno = 0; if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0) return -1; tiop->flags |= SGTTY_SET; @@ -405,9 +404,6 @@ static int set_tty_settings PARAMS((int, TIOTYPE *)); static void prepare_terminal_settings PARAMS((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)); - #if defined (FLUSHO) # define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO) #else @@ -519,9 +515,10 @@ get_tty_settings (tty, tiop) int tty; TIOTYPE *tiop; { +#if defined (TIOCGWINSZ) set_winsize (tty); +#endif - errno = 0; if (_get_tty_settings (tty, tiop) < 0) return -1; @@ -635,9 +632,10 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ } -#endif /* !NEW_TTY_DRIVER */ +#endif /* NEW_TTY_DRIVER */ -/* Put the terminal in CBREAK mode so that we can detect key presses. */ +/* Put the terminal in CBREAK mode so that we can detect key + presses. */ #if defined (NO_TTY_DRIVER) void rl_prep_terminal (meta_flag) @@ -652,6 +650,7 @@ rl_deprep_terminal () } #else /* ! NO_TTY_DRIVER */ +/* Put the terminal in CBREAK mode so that we can detect key presses. */ void rl_prep_terminal (meta_flag) int meta_flag; @@ -669,43 +668,13 @@ rl_prep_terminal (meta_flag) if (get_tty_settings (tty, &tio) < 0) { -#if defined (ENOTSUP) - /* MacOS X, at least, lies about the value of errno if tcgetattr fails. */ - if (errno == ENOTTY || errno == ENOTSUP) -#else - if (errno == ENOTTY) -#endif - readline_echoing_p = 1; /* XXX */ release_sigint (); return; } otio = tio; - if (_rl_bind_stty_chars) - { -#if defined (VI_MODE) - /* If editing in vi mode, make sure we restore the bindings in the - insertion keymap no matter what keymap we ended up in. */ - if (rl_editing_mode == vi_mode) - rl_tty_unset_default_bindings (vi_insertion_keymap); - else -#endif - rl_tty_unset_default_bindings (_rl_keymap); - } save_tty_chars (&otio); - RL_SETSTATE(RL_STATE_TTYCSAVED); - if (_rl_bind_stty_chars) - { -#if defined (VI_MODE) - /* If editing in vi mode, make sure we set the bindings in the - insertion keymap no matter what keymap we ended up in. */ - if (rl_editing_mode == vi_mode) - _rl_bind_tty_special_chars (vi_insertion_keymap, tio); - else -#endif - _rl_bind_tty_special_chars (_rl_keymap, tio); - } prepare_terminal_settings (meta_flag, otio, &tio); @@ -840,105 +809,71 @@ rl_stop_output (count, key) /* */ /* **************************************************************** */ -#if !defined (NO_TTY_DRIVER) -#define SET_SPECIAL(sc, func) set_special_char(kmap, &ttybuff, sc, func) -#endif - -#if defined (NO_TTY_DRIVER) - -#define SET_SPECIAL(sc, func) -#define RESET_SPECIAL(c) - -#elif defined (NEW_TTY_DRIVER) -static void -set_special_char (kmap, tiop, sc, func) +/* Set the system's default editing characters to their readline equivalents + in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ +void +rltty_set_default_bindings (kmap) Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; { - if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC) - kmap[(unsigned char)sc].function = func; -} +#if !defined (NO_TTY_DRIVER) + TIOTYPE ttybuff; + int tty = fileno (rl_instream); -#define RESET_SPECIAL(c) \ - if (c != -1 && kmap[(unsigned char)c].type == ISFUNC) - kmap[(unsigned char)c].function = rl_insert; +#if defined (NEW_TTY_DRIVER) -static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; -{ - if (ttybuff.flags & SGTTY_SET) +#define SET_SPECIAL(sc, func) \ + do \ + { \ + int ic; \ + ic = sc; \ + if (ic != -1 && kmap[(unsigned char)ic].type == ISFUNC) \ + kmap[(unsigned char)ic].function = func; \ + } \ + while (0) + + if (get_tty_settings (tty, &ttybuff) == 0) { - SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout); - SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard); - } + if (ttybuff.flags & SGTTY_SET) + { + SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout); + SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard); + } # if defined (TIOCGLTC) - if (ttybuff.flags & LTCHARS_SET) - { - SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout); - SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert); - } + if (ttybuff.flags & LTCHARS_SET) + { + SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout); + SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert); + } # endif /* TIOCGLTC */ -} + } #else /* !NEW_TTY_DRIVER */ -static void -set_special_char (kmap, tiop, sc, func) - Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; -{ - unsigned char uc; - uc = tiop->c_cc[sc]; - if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) - kmap[uc].function = func; -} - -/* used later */ -#define RESET_SPECIAL(uc) \ - if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \ - kmap[uc].function = rl_insert; +#define SET_SPECIAL(sc, func) \ + do \ + { \ + unsigned char uc; \ + uc = ttybuff.c_cc[sc]; \ + if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \ + kmap[uc].function = func; \ + } \ + while (0) -static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; -{ - SET_SPECIAL (VERASE, rl_rubout); - SET_SPECIAL (VKILL, rl_unix_line_discard); + if (get_tty_settings (tty, &ttybuff) == 0) + { + SET_SPECIAL (VERASE, rl_rubout); + SET_SPECIAL (VKILL, rl_unix_line_discard); # if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) - SET_SPECIAL (VLNEXT, rl_quoted_insert); + SET_SPECIAL (VLNEXT, rl_quoted_insert); # endif /* VLNEXT && TERMIOS_TTY_DRIVER */ # if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) - SET_SPECIAL (VWERASE, rl_unix_word_rubout); + SET_SPECIAL (VWERASE, rl_unix_word_rubout); # endif /* VWERASE && TERMIOS_TTY_DRIVER */ -} - + } #endif /* !NEW_TTY_DRIVER */ - -/* Set the system's default editing characters to their readline equivalents - in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ -void -rltty_set_default_bindings (kmap) - Keymap kmap; -{ -#if !defined (NO_TTY_DRIVER) - TIOTYPE ttybuff; - int tty; - static int called = 0; - - tty = fileno (rl_instream); - - if (get_tty_settings (tty, &ttybuff) == 0) - _rl_bind_tty_special_chars (kmap, ttybuff); #endif } @@ -951,30 +886,6 @@ rl_tty_set_default_bindings (kmap) rltty_set_default_bindings (kmap); } -/* Rebind all of the tty special chars that readline worries about back - to self-insert. Call this before saving the current terminal special - chars with save_tty_chars(). This only works on POSIX termios or termio - systems. */ -void -rl_tty_unset_default_bindings (kmap) - Keymap kmap; -{ - /* Don't bother before we've saved the tty special chars at least once. */ - if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0) - return; - - RESET_SPECIAL (_rl_tty_chars.t_erase); - RESET_SPECIAL (_rl_tty_chars.t_kill); - -# if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) - RESET_SPECIAL (_rl_tty_chars.t_lnext); -# endif /* VLNEXT && TERMIOS_TTY_DRIVER */ - -# if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) - RESET_SPECIAL (_rl_tty_chars.t_werase); -# endif /* VWERASE && TERMIOS_TTY_DRIVER */ -} - #if defined (HANDLE_SIGNALS) #if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) diff --git a/readline/rltty.h b/readline/rltty.h index 142e96b..029a3fb 100644 --- a/readline/rltty.h +++ b/readline/rltty.h @@ -61,22 +61,22 @@ #endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ typedef struct _rl_tty_chars { - unsigned char t_eof; - unsigned char t_eol; - unsigned char t_eol2; - unsigned char t_erase; - unsigned char t_werase; - unsigned char t_kill; - unsigned char t_reprint; - unsigned char t_intr; - unsigned char t_quit; - unsigned char t_susp; - unsigned char t_dsusp; - unsigned char t_start; - unsigned char t_stop; - unsigned char t_lnext; - unsigned char t_flush; - unsigned char t_status; + char t_eof; + char t_eol; + char t_eol2; + char t_erase; + char t_werase; + char t_kill; + char t_reprint; + char t_intr; + char t_quit; + char t_susp; + char t_dsusp; + char t_start; + char t_stop; + char t_lnext; + char t_flush; + char t_status; } _RL_TTY_CHARS; #endif /* _RLTTY_H_ */ diff --git a/readline/rltypedefs.h b/readline/rltypedefs.h index 862bdb8..f3280e9 100644 --- a/readline/rltypedefs.h +++ b/readline/rltypedefs.h @@ -1,6 +1,6 @@ /* rltypedefs.h -- Type declarations for readline functions. */ -/* Copyright (C) 2000-2004 Free Software Foundation, Inc. +/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -79,12 +79,6 @@ 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 **)); - #endif /* _RL_FUNCTION_TYPEDEF */ #ifdef __cplusplus diff --git a/readline/savestring.c b/readline/savestring.c index 820428d..c7ebeb1 100644 --- a/readline/savestring.c +++ b/readline/savestring.c @@ -1,6 +1,6 @@ /* savestring.c */ -/* Copyright (C) 1998,2003 Free Software Foundation, Inc. +/* Copyright (C) 1998 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -19,7 +19,6 @@ is generally kept in a file called COPYING or LICENSE. If you do not have a copy of the license, write to the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ -#define READLINE_LIBRARY #include <config.h> #ifdef HAVE_STRING_H diff --git a/readline/search.c b/readline/search.c index 8013916..7e0d60b 100644 --- a/readline/search.c +++ b/readline/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2005 Free Software Foundation, Inc. +/* Copyright (C) 1992 Free Software Foundation, Inc. This file is part of the Readline Library (the Library), a set of routines for providing Emacs style line input to programs that ask @@ -53,8 +53,6 @@ #endif #define abs(x) (((x) >= 0) ? (x) : -(x)) -_rl_search_cxt *_rl_nscxt = 0; - extern HIST_ENTRY *_rl_saved_line_for_history; /* Functions imported from the rest of the library. */ @@ -70,19 +68,13 @@ static int rl_history_search_pos; static char *history_search_string; static int history_string_size; -static UNDO_LIST *noninc_saved_undo_list; static void make_history_line_current PARAMS((HIST_ENTRY *)); static int noninc_search_from_pos PARAMS((char *, int, int)); -static int noninc_dosearch PARAMS((char *, int)); -static int noninc_search PARAMS((int, int)); +static void noninc_dosearch PARAMS((char *, int)); +static void noninc_search PARAMS((int, int)); static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((void)); -static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); -static int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); -static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); -static int _rl_nsearch_dispatch PARAMS((_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 must set it. */ @@ -90,16 +82,8 @@ static void make_history_line_current (entry) HIST_ENTRY *entry; { - _rl_replace_text (entry->line, 0, rl_end); - _rl_fix_point (1); -#if defined (VI_MODE) - if (rl_editing_mode == vi_mode) - /* POSIX.2 says that the `U' command doesn't affect the copy of any - command lines to the edit line. We're going to implement that by - making the undo list start after the matching line is copied to the - current editing buffer. */ - rl_free_undo_list (); -#endif + rl_replace_line (entry->line, 0); + rl_undo_list = (UNDO_LIST *)entry->data; if (_rl_saved_line_for_history) _rl_free_history_entry (_rl_saved_line_for_history); @@ -141,8 +125,8 @@ noninc_search_from_pos (string, pos, dir) /* Search for a line in the history containing STRING. If DIR is < 0, the search is backwards through previous entries, else through subsequent - entries. Returns 1 if the search was successful, 0 otherwise. */ -static int + entries. */ +static void noninc_dosearch (string, dir) char *string; int dir; @@ -153,7 +137,7 @@ noninc_dosearch (string, dir) if (string == 0 || *string == '\0' || noninc_history_pos < 0) { rl_ding (); - return 0; + return; } pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir); @@ -164,7 +148,7 @@ noninc_dosearch (string, dir) rl_clear_message (); rl_point = 0; rl_ding (); - return 0; + return; } noninc_history_pos = pos; @@ -175,7 +159,7 @@ noninc_dosearch (string, dir) #if defined (VI_MODE) if (rl_editing_mode != vi_mode) #endif - history_set_pos (oldpos); + history_set_pos (oldpos); make_history_line_current (entry); @@ -183,29 +167,27 @@ noninc_dosearch (string, dir) rl_mark = rl_end; rl_clear_message (); - return 1; } -static _rl_search_cxt * -_rl_nsearch_init (dir, pchar) - int dir, pchar; +/* Search non-interactively through the history list. DIR < 0 means to + search backwards through the history of previous commands; otherwise + the search is for commands subsequent to the current position in the + history list. PCHAR is the character to use for prompting when reading + the search string; if not specified (0), it defaults to `:'. */ +static void +noninc_search (dir, pchar) + int dir; + int pchar; { - _rl_search_cxt *cxt; + int saved_point, saved_mark, c; char *p; - - cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0); - if (dir < 0) - cxt->sflags |= SF_REVERSE; /* not strictly needed */ - - cxt->direction = dir; - cxt->history_pos = cxt->save_line; +#if defined (HANDLE_MULTIBYTE) + char mb[MB_LEN_MAX]; +#endif rl_maybe_save_line (); - - /* Clear the undo list, since reading the search string should create its - own undo list, and the whole list will end up being freed when we - finish reading the search string. */ - rl_undo_list = 0; + saved_point = rl_point; + saved_mark = rl_mark; /* Use the line buffer to read the search string. */ rl_line_buffer[0] = 0; @@ -215,169 +197,99 @@ _rl_nsearch_init (dir, pchar) rl_message (p, 0, 0); free (p); - RL_SETSTATE(RL_STATE_NSEARCH); - - _rl_nscxt = cxt; +#define SEARCH_RETURN rl_restore_prompt (); RL_UNSETSTATE(RL_STATE_NSEARCH); return - return cxt; -} - -static int -_rl_nsearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; -{ - _rl_scxt_dispose (cxt, 0); - _rl_nscxt = 0; - - RL_UNSETSTATE(RL_STATE_NSEARCH); - - return (r != 1); -} - -static void -_rl_nsearch_abort (cxt) - _rl_search_cxt *cxt; -{ - rl_maybe_unsave_line (); - rl_clear_message (); - rl_point = cxt->save_point; - rl_mark = cxt->save_mark; - rl_restore_prompt (); - - RL_UNSETSTATE (RL_STATE_NSEARCH); -} - -/* Process just-read character C according to search context CXT. Return -1 - if the caller should abort the search, 0 if we should break out of the - loop, and 1 if we should continue to read characters. */ -static int -_rl_nsearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; -{ - switch (c) + RL_SETSTATE(RL_STATE_NSEARCH); + /* Read the search string. */ + while (1) { - case CTRL('W'): - rl_unix_word_rubout (1, c); - break; + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); - case CTRL('U'): - rl_unix_line_discard (1, c); - break; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + c = _rl_read_mbstring (c, mb, MB_LEN_MAX); +#endif - case RETURN: - case NEWLINE: - return 0; + if (c == 0) + break; - case CTRL('H'): - case RUBOUT: - if (rl_point == 0) + switch (c) { - _rl_nsearch_abort (cxt); - return -1; - } - _rl_rubout_char (1, c); - break; - - case CTRL('C'): - case CTRL('G'): - rl_ding (); - _rl_nsearch_abort (cxt); - return -1; + case CTRL('H'): + case RUBOUT: + if (rl_point == 0) + { + rl_maybe_unsave_line (); + rl_clear_message (); + rl_point = saved_point; + rl_mark = saved_mark; + SEARCH_RETURN; + } + _rl_rubout_char (1, c); + break; + + case CTRL('W'): + rl_unix_word_rubout (1, c); + break; + + case CTRL('U'): + rl_unix_line_discard (1, c); + break; + + case RETURN: + case NEWLINE: + goto dosearch; + /* NOTREACHED */ + break; + + case CTRL('C'): + case CTRL('G'): + rl_maybe_unsave_line (); + rl_clear_message (); + rl_point = saved_point; + rl_mark = saved_mark; + rl_ding (); + SEARCH_RETURN; - default: + default: #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_insert_text (cxt->mb); - else + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_insert_text (mb); + else #endif - _rl_insert_char (1, c); - break; + _rl_insert_char (1, c); + break; + } + (*rl_redisplay_function) (); } - (*rl_redisplay_function) (); - return 1; -} - -/* Perform one search according to CXT, using NONINC_SEARCH_STRING. Return - -1 if the search should be aborted, any other value means to clean up - using _rl_nsearch_cleanup (). Returns 1 if the search was successful, - 0 otherwise. */ -static int -_rl_nsearch_dosearch (cxt) - _rl_search_cxt *cxt; -{ - rl_mark = cxt->save_mark; + dosearch: + rl_mark = saved_mark; /* If rl_point == 0, we want to re-use the previous search string and start from the saved history position. If there's no previous search string, punt. */ if (rl_point == 0) { - if (noninc_search_string == 0) + if (!noninc_search_string) { rl_ding (); - rl_restore_prompt (); - RL_UNSETSTATE (RL_STATE_NSEARCH); - return -1; + SEARCH_RETURN; } } else { /* We want to start the search from the current history position. */ - noninc_history_pos = cxt->save_line; + noninc_history_pos = where_history (); FREE (noninc_search_string); noninc_search_string = savestring (rl_line_buffer); - - /* If we don't want the subsequent undo list generated by the search - matching a history line to include the contents of the search string, - we need to clear rl_line_buffer here. For now, we just clear the - undo list generated by reading the search string. (If the search - fails, the old undo list will be restored by rl_maybe_unsave_line.) */ - rl_free_undo_list (); } rl_restore_prompt (); - return (noninc_dosearch (noninc_search_string, cxt->direction)); -} - -/* Search non-interactively through the history list. DIR < 0 means to - search backwards through the history of previous commands; otherwise - the search is for commands subsequent to the current position in the - history list. PCHAR is the character to use for prompting when reading - the search string; if not specified (0), it defaults to `:'. */ -static int -noninc_search (dir, pchar) - int dir; - int pchar; -{ - _rl_search_cxt *cxt; - int c, r; - - cxt = _rl_nsearch_init (dir, pchar); - - if (RL_ISSTATE (RL_STATE_CALLBACK)) - return (0); - - /* Read the search string. */ - r = 0; - while (1) - { - c = _rl_search_getchar (cxt); - - if (c == 0) - break; - - r = _rl_nsearch_dispatch (cxt, c); - if (r < 0) - return 1; - else if (r == 0) - break; - } - - r = _rl_nsearch_dosearch (cxt); - return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); + noninc_dosearch (noninc_search_string, dir); + RL_UNSETSTATE(RL_STATE_NSEARCH); } /* Search forward through the history list for a string. If the vi-mode @@ -386,7 +298,8 @@ int rl_noninc_forward_search (count, key) int count, key; { - return noninc_search (1, (key == '?') ? '?' : 0); + noninc_search (1, (key == '?') ? '?' : 0); + return 0; } /* Reverse search the history list for a string. If the vi-mode code @@ -395,7 +308,8 @@ int rl_noninc_reverse_search (count, key) int count, key; { - return noninc_search (-1, (key == '/') ? '/' : 0); + noninc_search (-1, (key == '/') ? '/' : 0); + return 0; } /* Search forward through the history list for the last string searched @@ -404,15 +318,13 @@ int rl_noninc_forward_search_again (count, key) int count, key; { - int r; - if (!noninc_search_string) { rl_ding (); return (-1); } - r = noninc_dosearch (noninc_search_string, 1); - return (r != 1); + noninc_dosearch (noninc_search_string, 1); + return 0; } /* Reverse search in the history list for the last string searched @@ -421,34 +333,15 @@ int rl_noninc_reverse_search_again (count, key) int count, key; { - int r; - if (!noninc_search_string) { rl_ding (); return (-1); } - r = noninc_dosearch (noninc_search_string, -1); - return (r != 1); + noninc_dosearch (noninc_search_string, -1); + return 0; } -#if defined (READLINE_CALLBACKS) -int -_rl_nsearch_callback (cxt) - _rl_search_cxt *cxt; -{ - int c, r; - - c = _rl_search_getchar (cxt); - r = _rl_nsearch_dispatch (cxt, c); - if (r != 0) - return 1; - - r = _rl_nsearch_dosearch (cxt); - return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); -} -#endif - static int rl_history_search_internal (count, dir) int count, dir; diff --git a/readline/shell.c b/readline/shell.c index 346f811..35b1c1d 100644 --- a/readline/shell.c +++ b/readline/shell.c @@ -27,6 +27,7 @@ #endif #include <sys/types.h> +#include <stdio.h> #if defined (HAVE_UNISTD_H) # include <unistd.h> @@ -48,10 +49,8 @@ # include <limits.h> #endif -#if defined (HAVE_FCNTL_H) #include <fcntl.h> -#endif -#if defined (HAVE_PWD_H) +#ifdef HAVE_PWD_H #include <pwd.h> #endif @@ -61,9 +60,9 @@ #include "rlshell.h" #include "xmalloc.h" -#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) +#if !defined (HAVE_GETPW_DECLS) extern struct passwd *getpwuid PARAMS((uid_t)); -#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ +#endif /* !HAVE_GETPW_DECLS */ #ifndef NULL # define NULL 0 @@ -126,27 +125,23 @@ sh_set_lines_and_columns (lines, cols) { char *b; -#if defined (HAVE_SETENV) - b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); - sprintf (b, "%d", lines); - setenv ("LINES", b, 1); - free (b); - - b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); - sprintf (b, "%d", cols); - setenv ("COLUMNS", b, 1); - free (b); -#else /* !HAVE_SETENV */ -# if defined (HAVE_PUTENV) +#if defined (HAVE_PUTENV) b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1); sprintf (b, "LINES=%d", lines); putenv (b); - b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1); sprintf (b, "COLUMNS=%d", cols); putenv (b); -# endif /* HAVE_PUTENV */ -#endif /* !HAVE_SETENV */ +#else /* !HAVE_PUTENV */ +# if defined (HAVE_SETENV) + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); + sprintf (b, "%d", lines); + setenv ("LINES", b, 1); + b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1); + sprintf (b, "%d", cols); + setenv ("COLUMNS", b, 1); +# endif /* HAVE_SETENV */ +#endif /* !HAVE_PUTENV */ } char * @@ -163,7 +158,7 @@ sh_get_home_dir () struct passwd *entry; home_dir = (char *)NULL; -#if defined (HAVE_GETPWUID) +#ifdef HAVE_GETPWUID entry = getpwuid (getuid ()); if (entry) home_dir = entry->pw_dir; @@ -181,7 +176,7 @@ int sh_unset_nodelay_mode (fd) int fd; { -#if defined (HAVE_FCNTL) +#ifdef HAVE_FNCTL int flags, bflags; if ((flags = fcntl (fd, F_GETFL, 0)) < 0) diff --git a/readline/shlib/Makefile.in b/readline/shlib/Makefile.in index c2225d6..22748c4 100644 --- a/readline/shlib/Makefile.in +++ b/readline/shlib/Makefile.in @@ -1,7 +1,7 @@ ## -*- text -*- ## # Makefile for the GNU readline library shared library support. # -# Copyright (C) 1998-2003 Free Software Foundation, Inc. +# Copyright (C) 1998 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 @@ -17,14 +17,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. -PACKAGE = @PACKAGE_NAME@ -VERSION = @PACKAGE_VERSION@ - -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_VERSION = @PACKAGE_VERSION@ - RL_LIBRARY_VERSION = @LIBVERSION@ RL_LIBRARY_NAME = readline @@ -53,10 +45,7 @@ host_os = @host_os@ prefix = @prefix@ exec_prefix = @exec_prefix@ includedir = @includedir@ -bindir = @bindir@ libdir = @libdir@ -datadir = @datadir@ -localedir = $(datadir)/locale # Support an alternate destination root directory for package building DESTDIR = @@ -66,7 +55,7 @@ LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ @CFLAGS@ -DEFS = @DEFS@ @CROSS_COMPILE@ +DEFS = @DEFS@ LOCAL_DEFS = @LOCAL_DEFS@ # @@ -83,20 +72,14 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ SHOBJ_LIBS = @SHOBJ_LIBS@ -SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ +SHLIB_XLDFLAGS = @SHLIB_XLDFLAGS@ SHLIB_LIBS = @SHLIB_LIBS@ - -SHLIB_DOT = @SHLIB_DOT@ -SHLIB_LIBPREF = @SHLIB_LIBPREF@ SHLIB_LIBSUFF = @SHLIB_LIBSUFF@ SHLIB_LIBVERSION = @SHLIB_LIBVERSION@ -SHLIB_DLLVERSION = @SHLIB_DLLVERSION@ SHLIB_STATUS = @SHLIB_STATUS@ -TERMCAP_LIB = @TERMCAP_LIB@ - # shared library versioning SHLIB_MAJOR= @SHLIB_MAJOR@ # shared library systems like SVR4's do not use minor versions @@ -116,10 +99,12 @@ CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) $(LOCAL_CFLAGS) $(CFLAGS # The name of the main library target. -SHARED_READLINE = $(SHLIB_LIBPREF)readline$(SHLIB_DOT)$(SHLIB_LIBVERSION) -SHARED_HISTORY = $(SHLIB_LIBPREF)history$(SHLIB_DOT)$(SHLIB_LIBVERSION) +SHARED_READLINE = libreadline.$(SHLIB_LIBVERSION) +SHARED_HISTORY = libhistory.$(SHLIB_LIBVERSION) SHARED_LIBS = $(SHARED_READLINE) $(SHARED_HISTORY) +WCWIDTH_OBJ = @WCWIDTH_OBJ@ + # The C code source files for this library. CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \ $(topdir)/vi_mode.c $(topdir)/parens.c $(topdir)/rltty.c \ @@ -132,7 +117,7 @@ CSOURCES = $(topdir)/readline.c $(topdir)/funmap.c $(topdir)/keymaps.c \ $(topdir)/histfile.c $(topdir)/nls.c $(topdir)/search.c \ $(topdir)/shell.c $(topdir)/savestring.c $(topdir)/tilde.c \ $(topdir)/text.c $(topdir)/misc.c $(topdir)/compat.c \ - $(topdir)/mbutil.c + $(topdir)/mbutil.c $(WCWIDTH_SRC) # The header files for this library. HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ @@ -146,7 +131,7 @@ SHARED_OBJ = readline.so vi_mode.so funmap.so keymaps.so parens.so search.so \ rltty.so complete.so bind.so isearch.so display.so signals.so \ util.so kill.so undo.so macro.so input.so callback.so terminal.so \ text.so nls.so misc.so xmalloc.so $(SHARED_HISTOBJ) $(SHARED_TILDEOBJ) \ - compat.so + compat.so $(WCWIDTH_OBJ) ########################################################################## @@ -170,6 +155,10 @@ $(SHARED_HISTORY): $(SHARED_HISTOBJ) xmalloc.so $(RM) $@ $(SHOBJ_LD) ${SHOBJ_LDFLAGS} ${SHLIB_XLDFLAGS} -o $@ $(SHARED_HISTOBJ) xmalloc.so $(SHLIB_LIBS) +wcwidth.o: $(srcdir)/support/wcwidth.c + $(RM) $@ + $(SHOBJ_CC) -c $(CCFLAGS) $(SHOBJ_FLAGS) $(srcdir)/support/wcwidth.c + # Since tilde.c is shared between readline and bash, make sure we compile # it with the right flags when it's built as part of readline tilde.so: tilde.c @@ -181,13 +170,13 @@ installdirs: $(topdir)/support/mkdirs -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(libdir) install: installdirs $(SHLIB_STATUS) - $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY) - $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -i "$(INSTALL_DATA)" $(SHARED_READLINE) + $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_HISTORY) + $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -i "$(INSTALL_DATA)" $(SHARED_READLINE) @echo install: you may need to run ldconfig uninstall: - $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -U $(SHARED_HISTORY) - $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -b $(DESTDIR)$(bindir) -U $(SHARED_READLINE) + $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_HISTORY) + $(SHELL) $(topdir)/support/shlib-install -O $(host_os) -d $(DESTDIR)$(libdir) -U $(SHARED_READLINE) @echo uninstall: you may need to run ldconfig clean mostlyclean: force @@ -407,7 +396,7 @@ search.so: $(topdir)/search.c shell.so: $(topdir)/shell.c signals.so: $(topdir)/signals.c terminal.so: $(topdir)/terminal.c -text.so: $(topdir)/text.c +text.so: $(topdir)/terminal.c tilde.so: $(topdir)/tilde.c undo.so: $(topdir)/undo.c util.so: $(topdir)/util.c @@ -441,7 +430,7 @@ search.so: search.c signals.so: signals.c shell.so: shell.c terminal.so: terminal.c -text.so: text.c +text.so: terminal.c tilde.so: tilde.c undo.so: undo.c util.so: util.c diff --git a/readline/signals.c b/readline/signals.c index f344ed8..fa3e26a 100644 --- a/readline/signals.c +++ b/readline/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -73,10 +73,6 @@ typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt # define sigemptyset(m) #endif /* !HAVE_POSIX_SIGNALS */ -#ifndef SA_RESTART -# 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 *)); @@ -89,12 +85,12 @@ int rl_catch_signals = 1; /* If non-zero, readline will install a signal handler for SIGWINCH. */ #ifdef SIGWINCH int rl_catch_sigwinch = 1; -#else -int rl_catch_sigwinch = 0; /* for the readline state struct in readline.c */ #endif static int signals_set_flag; +#ifdef SIGWINCH static int sigwinch_set_flag; +#endif /* **************************************************************** */ /* */ @@ -131,11 +127,11 @@ rl_signal_handler (sig) #if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS) /* Since the signal will not be blocked while we are in the signal handler, ignore it until rl_clear_signals resets the catcher. */ -# if defined (SIGALRM) - if (sig == SIGINT || sig == SIGALRM) -# else - if (sig == SIGINT) -# endif + if (sig == SIGINT +#ifdef SIGALRM + || sig == SIGALRM +#endif + ) rl_set_sighandler (sig, SIG_IGN, &dummy_cxt); #endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */ @@ -145,16 +141,16 @@ rl_signal_handler (sig) rl_free_line_state (); /* FALLTHROUGH */ - case SIGTERM: #if defined (SIGTSTP) case SIGTSTP: case SIGTTOU: case SIGTTIN: #endif /* SIGTSTP */ -#if defined (SIGALRM) +#ifdef SIGALRM case SIGALRM: #endif -#if defined (SIGQUIT) + case SIGTERM: +#ifdef SIGQUIT case SIGQUIT: #endif rl_cleanup_after_signal (); @@ -172,10 +168,13 @@ rl_signal_handler (sig) signal (sig, SIG_ACK); #endif -#if defined (HAVE_KILL) + /* If we have the POSIX kill function, use it; otherwise, fall + back to the ISO C raise function. (Windows is an example of + a platform that has raise, but not kill.) */ +#ifdef HAVE_KILL kill (getpid (), sig); #else - raise (sig); /* assume we have raise */ + raise (sig); #endif /* Let the signal that we just sent through. */ @@ -251,7 +250,7 @@ rl_set_sighandler (sig, handler, ohandler) struct sigaction act; act.sa_handler = handler; - act.sa_flags = (sig == SIGWINCH) ? SA_RESTART : 0; + act.sa_flags = 0; /* XXX - should we set SA_RESTART for SIGWINCH? */ sigemptyset (&act.sa_mask); sigemptyset (&ohandler->sa_mask); sigaction (sig, &act, &old_handler); @@ -293,11 +292,11 @@ rl_set_signals () { rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term); -#if defined (SIGQUIT) +#ifdef SIGQUIT rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit); #endif -#if defined (SIGALRM) +#ifdef SIGALRM oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm); if (oh == (SigHandler *)SIG_IGN) rl_sigaction (SIGALRM, &old_alrm, &dummy); @@ -348,10 +347,10 @@ rl_clear_signals () rl_sigaction (SIGINT, &old_int, &dummy); rl_sigaction (SIGTERM, &old_term, &dummy); -#if defined (SIGQUIT) +#ifdef SIGQUIT rl_sigaction (SIGQUIT, &old_quit, &dummy); #endif -#if defined (SIGALRM) +#ifdef SIGALRM rl_sigaction (SIGALRM, &old_alrm, &dummy); #endif @@ -388,8 +387,7 @@ void rl_cleanup_after_signal () { _rl_clean_up_for_exit (); - if (rl_deprep_term_function) - (*rl_deprep_term_function) (); + (*rl_deprep_term_function) (); rl_clear_signals (); rl_clear_pending_input (); } @@ -398,8 +396,7 @@ rl_cleanup_after_signal () void rl_reset_after_signal () { - if (rl_prep_term_function) - (*rl_prep_term_function) (_rl_meta_flag); + (*rl_prep_term_function) (_rl_meta_flag); rl_set_signals (); } @@ -420,7 +417,7 @@ rl_free_line_state () _rl_kill_kbd_macro (); rl_clear_message (); - _rl_reset_argument (); + _rl_init_argument (); } #endif /* HANDLE_SIGNALS */ diff --git a/readline/support/config.guess b/readline/support/config.guess index 6d90d6f..00ccf89 100755 --- a/readline/support/config.guess +++ b/readline/support/config.guess @@ -1,9 +1,9 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2002-11-30' +timestamp='2004-02-16' # 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 @@ -98,14 +98,18 @@ trap 'exit 1' 1 2 15 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. -# This shell variable is my proudest work .. or something. --bje +# Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; -(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) - || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; -dummy=$tmpdir/dummy ; -files="$dummy.c $dummy.o $dummy.rel $dummy" ; -trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do @@ -113,15 +117,13 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in CC_FOR_BUILD="$c"; break ; fi ; done ; - rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; -unset files' +esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) @@ -195,12 +197,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; @@ -219,6 +227,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + pegasos:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; @@ -234,72 +245,65 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - eval $set_cc_for_build - cat <<EOF >$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null - if test "$?" = 0 ; then - case `$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - 3-1307) - UNAME_MACHINE="alphaev7" - ;; - esac - fi - rm -f $dummy.s $dummy && rmdir $tmpdir echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -321,6 +325,9 @@ EOF *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; @@ -338,6 +345,9 @@ EOF NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; @@ -410,6 +420,9 @@ EOF *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; @@ -450,8 +463,7 @@ EOF EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir + && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) @@ -535,8 +547,7 @@ EOF exit(0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -635,10 +646,20 @@ EOF } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy && rmdir $tmpdir + test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) @@ -672,8 +693,7 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -731,21 +751,26 @@ EOF CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; 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 0 ;; + 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 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; @@ -755,9 +780,6 @@ EOF *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; - amd64:FreeBSD:*:*) - echo x86_64-unknown-freebsd - exit 0 ;; *:FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build @@ -770,8 +792,10 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + # GNU/KFreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -782,8 +806,8 @@ EOF i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; - x86:Interix*:3*) - echo i586-pc-interix3 + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks @@ -804,14 +828,22 @@ EOF echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; @@ -835,7 +867,6 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c && rmdir $tmpdir test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) @@ -855,7 +886,6 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c && rmdir $tmpdir test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) @@ -892,6 +922,9 @@ EOF s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; @@ -949,9 +982,11 @@ EOF LIBC=gnuaout #endif #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; @@ -980,6 +1015,9 @@ EOF i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; @@ -1051,7 +1089,7 @@ EOF exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*: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) + 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) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -1149,7 +1187,11 @@ EOF echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` @@ -1162,7 +1204,7 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-[DGKLNPTVWXY]:NONSTOP_KERNEL:*:*) + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) @@ -1203,6 +1245,12 @@ EOF *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1323,8 +1371,7 @@ main () } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 -rm -f $dummy.c $dummy && rmdir $tmpdir +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. diff --git a/readline/support/config.sub b/readline/support/config.sub index aefb7e1..d2e3557 100755 --- a/readline/support/config.sub +++ b/readline/support/config.sub @@ -1,9 +1,9 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2002-11-30' +timestamp='2004-02-16' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -118,7 +118,8 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -228,13 +229,14 @@ case $basic_machine in | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | clipper \ + | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ - | ip2k \ + | ip2k | iq2000 \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ @@ -245,21 +247,24 @@ case $basic_machine in | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ - | tahoe | thumb | tic80 | tron \ + | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ @@ -277,7 +282,7 @@ case $basic_machine in # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64 | amd64) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -291,11 +296,10 @@ case $basic_machine in | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | amd64-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ @@ -303,7 +307,7 @@ case $basic_machine in | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* \ + | ip2k-* | iq2000-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ @@ -316,21 +320,26 @@ case $basic_machine in | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39 | mipstx39el \ - | none-* | np1-* | ns16k-* | ns32k-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ @@ -354,6 +363,9 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; + abacus) + basic_machine=abacus-unknown + ;; adobe68k) basic_machine=m68010-adobe os=-scout @@ -368,6 +380,12 @@ case $basic_machine in basic_machine=a29k-none os=-bsd ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; amdahl) basic_machine=580-amdahl os=-sysv @@ -427,6 +445,10 @@ case $basic_machine in basic_machine=j90-cray os=-unicos ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; crds | unos) basic_machine=m68k-crds ;; @@ -717,6 +739,10 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -728,6 +754,10 @@ case $basic_machine in basic_machine=or32-unknown os=-coff ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose @@ -759,18 +789,24 @@ case $basic_machine in pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; - pentiumii | pentium2) + pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; + pentium4) + basic_machine=i786-pc + ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumii-* | pentium2-*) + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pn) basic_machine=pn-gould ;; @@ -829,6 +865,10 @@ case $basic_machine in sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; sequent) basic_machine=i386-sequent ;; @@ -836,6 +876,9 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sh64) + basic_machine=sh64-unknown + ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks @@ -902,10 +945,6 @@ case $basic_machine in basic_machine=i386-sequent os=-dynix ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; t3e) basic_machine=alphaev5-cray os=-unicos @@ -914,14 +953,18 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic4x | c4x*) - basic_machine=tic4x-unknown - os=-coff - ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -935,6 +978,10 @@ case $basic_machine in tower | tower-32) basic_machine=m68k-ncr ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; udi29k) basic_machine=a29k-amd os=-udi @@ -1024,7 +1071,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) @@ -1103,19 +1150,20 @@ case $os in | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1139,6 +1187,9 @@ case $os in -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -1151,6 +1202,9 @@ case $os in -opened*) os=-openedition ;; + -os400*) + os=-os400 + ;; -wince*) os=-wince ;; @@ -1172,6 +1226,9 @@ case $os in -atheos*) os=-atheos ;; + -syllable*) + os=-syllable + ;; -386bsd) os=-bsd ;; @@ -1194,6 +1251,9 @@ case $os in -sinix*) os=-sysv4 ;; + -tpf*) + os=-tpf + ;; -triton*) os=-sysv3 ;; @@ -1224,6 +1284,12 @@ case $os in -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; -none) ;; *) @@ -1255,6 +1321,9 @@ case $basic_machine in arm*-semi) os=-aout ;; + c4x-* | tic4x-*) + os=-coff + ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 @@ -1433,9 +1502,15 @@ case $basic_machine in -mvs* | -opened*) vendor=ibm ;; + -os400*) + vendor=ibm + ;; -ptx*) vendor=sequent ;; + -tpf*) + vendor=ibm + ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; diff --git a/readline/support/shlib-install b/readline/support/shlib-install index 2cd252a..654cfa9 100755 --- a/readline/support/shlib-install +++ b/readline/support/shlib-install @@ -3,7 +3,7 @@ # shlib-install - install a shared library and do any necessary host-specific # post-installation configuration (like ldconfig) # -# usage: shlib-install [-D] -O host_os -d installation-dir [-b bin-dir] -i install-prog [-U] library +# usage: shlib-install [-D] -O host_os -d installation-dir -i install-prog [-U] library # # Chet Ramey # chet@po.cwru.edu @@ -15,7 +15,7 @@ INSTALLDIR=/usr/local/lib LDCONFIG=ldconfig PROGNAME=`basename $0` -USAGE="$PROGNAME [-D] -O host_os -d installation-dir [-b bin-dir] -i install-prog [-U] library" +USAGE="$PROGNAME [-D] -O host_os -d installation-dir -i install-prog [-U] library" # process options @@ -23,7 +23,6 @@ while [ $# -gt 0 ]; do case "$1" in -O) shift; host_os="$1"; shift ;; -d) shift; INSTALLDIR="$1"; shift ;; - -b) shift; BINDIR="$1" ; shift ;; -i) shift; INSTALLPROG="$1" ; shift ;; -D) echo=echo ; shift ;; -U) uninstall=true ; shift ;; @@ -65,30 +64,11 @@ fi # post-install/uninstall # HP-UX and Darwin/MacOS X require that a shared library have execute permission -# Cygwin installs both a dll (which must go in $BINDIR) and an implicit -# link library (in $libdir) case "$host_os" in hpux*|darwin*|macosx*) if [ -z "$uninstall" ]; then chmod 555 ${INSTALLDIR}/${LIBNAME} fi ;; -cygwin*) - IMPLIBNAME=`echo ${LIBNAME} \ - | sed -e 's,^cyg,lib,' -e 's,[0-9]*.dll$,.dll.a,'` - if [ -z "$uninstall" ]; then - ${echo} $RM ${BINDIR}/${LIBNAME}.${OLDSUFF} - if [ -f "$BINDIR/$LIBNAME" ]; then - ${echo} $MV $BINDIR/$LIBNAME $BINDIR/$LIBNAME.$OLDSUFF - fi - ${echo} $MV ${INSTALLDIR}/${LIBNAME} ${BINDIR}/${LIBNAME} - ${echo} chmod a+x ${BINDIR}/${LIBNAME} - ${echo} eval ${INSTALLPROG} ${LIBNAME}.a \ - ${INSTALLDIR}/${IMPLIBNAME} - else - ${echo} ${RM} ${BINDIR}/${LIBNAME} - ${echo} ${RM} ${INSTALLDIR}/${IMPLIBNAME} - fi ;; - *) ;; esac @@ -108,38 +88,24 @@ case "$LIBNAME" in LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib esac -INSTALL_LINK1='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1' -INSTALL_LINK2='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2' +INSTALL_LINK1='cd $INSTALLDIR ; ln -s $LIBNAME $LINK1' +INSTALL_LINK2='cd $INSTALLDIR ; ln -s $LIBNAME $LINK2' # # Create symlinks to the installed library. This section is incomplete. # case "$host_os" in -*linux*) - # libname.so.M -> libname.so.M.N - ${echo} ${RM} ${INSTALLDIR}/$LINK2 - if [ -z "$uninstall" ]; then - eval $INSTALL_LINK2 - fi - - # libname.so -> libname.so.M - ${echo} ${RM} ${INSTALLDIR}/$LINK1 - if [ -z "$uninstall" ]; then - ${echo} cd $INSTALLDIR && ${echo} ${LN} $LINK2 $LINK1 - fi - ;; - -bsdi4*|*gnu*|darwin*|macosx*|k*bsd*-gnu) +*linux*|bsdi4*|*gnu*|darwin*|macosx*) # libname.so.M -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK2 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK2 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2 fi # libname.so -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK1 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1 fi ;; @@ -147,7 +113,7 @@ solaris2*|aix4.[2-9]*|osf*|irix[56]*|sysv[45]*|dgux*) # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK1 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1 fi ;; @@ -158,19 +124,19 @@ freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) # libname.so -> libname.so.M ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK1 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1 fi else # libname.so.M -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK2 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK2 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK2 fi # libname.so -> libname.so.M.N ${echo} ${RM} ${INSTALLDIR}/$LINK1 if [ -z "$uninstall" ]; then - eval $INSTALL_LINK1 + ${echo} ln -s $LIBNAME ${INSTALLDIR}/$LINK1 fi fi ;; @@ -179,16 +145,11 @@ hpux1*) # libname.sl -> libname.M ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl if [ -z "$uninstall" ]; then - eval $INSTALL_LINK1 +# ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1}.sl + ${echo} ln -s $LIBNAME ${INSTALLDIR}/${LINK1} fi ;; -cygwin*) - # Links to .dlls don't work. Hence shobj-conf used DLLVERSION.dll - # instead of so.SHLIB_MAJOR.SHLIB_MINOR. The postinstall above - # took care of everything else. - ;; - *) ;; esac diff --git a/readline/support/shobj-conf b/readline/support/shobj-conf index 0e306bc..6bd7fb1 100755 --- a/readline/support/shobj-conf +++ b/readline/support/shobj-conf @@ -41,13 +41,9 @@ SHOBJ_LIBS= SHLIB_XLDFLAGS= SHLIB_LIBS= - -SHLIB_DOT='.' -SHLIB_LIBPREF='lib' SHLIB_LIBSUFF='so' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' -SHLIB_DLLVERSION='$(SHLIB_MAJOR)' PROGNAME=`basename $0` USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" @@ -82,14 +78,10 @@ sunos4*) sunos5*-*gcc*|solaris2*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' - ld_used=`gcc -print-prog-name=ld` - if ${ld_used} -V 2>&1 | grep GNU >/dev/null 2>&1; then - # This line works for the GNU ld - SHOBJ_LDFLAGS='-shared -Wl,-h,$@' - else - # This line works for the Solaris linker in /usr/ccs/bin/ld - SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' - fi + # This line works for the Solaris linker in /usr/ccs/bin/ld + SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' + # This line works for the GNU ld +# SHOBJ_LDFLAGS='-shared -Wl,-h,$@' # SHLIB_XLDFLAGS='-R $(libdir)' SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' @@ -105,7 +97,7 @@ sunos5*|solaris2*) ;; # All versions of Linux or the semi-mythical GNU Hurd. -linux*-*|gnu*-*|k*bsd*-gnu-*) +linux*|gnu*) SHOBJ_CFLAGS=-fPIC SHOBJ_LD='${CC}' SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' @@ -124,7 +116,7 @@ freebsd2* | netbsd*) ;; # FreeBSD-3.x ELF -freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*|dragonfly*) +freebsd[3-9]*|freebsdelf[3-9]*|freebsdaout[3-9]*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' @@ -146,23 +138,17 @@ darwin*|macosx*) SHOBJ_STATUS=unsupported SHLIB_STATUS=supported - SHOBJ_CFLAGS='-fno-common' + SHOBJ_CFLAGS='-dynamic -fno-common' - SHOBJ_LD='${CC}' + SHOBJ_LD=/usr/bin/libtool SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' SHLIB_LIBSUFF='dylib' - case "${host_os}" in - darwin[78]*) SHOBJ_LDFLAGS='' - SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' - ;; - *) SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' - ;; - esac + SHOBJ_LDFLAGS='-dynamic' + SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' - SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 + SHLIB_LIBS='-lSystem' ;; openbsd*) @@ -310,8 +296,6 @@ hpux10*-*gcc*) # must use gcc; the bundled cc cannot compile PIC code SHOBJ_CFLAGS='-fpic' SHOBJ_LD='${CC}' - # if you have problems linking here, moving the `-Wl,+h,$@' from - # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' @@ -416,39 +400,7 @@ sysv5uw7*) SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' ;; - -sysv5UnixWare*-*gcc*) - SHOBJ_CFLAGS=-fpic - SHOBJ_LD='${CC}' - SHOBJ_LDFLAGS='-shared' - - SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' - ;; - -sysv5UnixWare*) - SHOBJ_CFLAGS='-K PIC' - SHOBJ_LD=ld - SHOBJ_LDFLAGS='-G -dy -z text -h $@' - - SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' - ;; - -sysv5OpenUNIX*-*gcc*) - SHOBJ_CFLAGS=-fpic - SHOBJ_LD='${CC}' - SHOBJ_LDFLAGS='-shared' - - SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' - ;; - -sysv5OpenUNIX*) - SHOBJ_CFLAGS='-K PIC' - SHOBJ_LD=ld - SHOBJ_LDFLAGS='-G -dy -z text -h $@' - - SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' - ;; - + dgux*-*gcc*) SHOBJ_CFLAGS=-fpic SHOBJ_LD='${CC}' @@ -470,24 +422,6 @@ msdos*) SHLIB_STATUS=unsupported ;; -cygwin*) - SHOBJ_LD='$(CC)' - SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a' - SHLIB_LIBPREF='cyg' - SHLIB_LIBSUFF='dll' - SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)' - SHLIB_LIBS='$(TERMCAP_LIB)' - - SHLIB_DOT= - # For official cygwin releases, DLLVERSION will be defined in the - # environment of configure, and will be incremented any time the API - # changes in a non-backwards compatible manner. Otherwise, it is just - # SHLIB_MAJOR. - if [ -n "$DLLVERSION" ] ; then - SHLIB_DLLVERSION="$DLLVERSION" - fi - ;; - # # Rely on correct gcc configuration for everything else # @@ -515,14 +449,8 @@ echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' - -echo SHLIB_DOT=\'"$SHLIB_DOT"\' - -echo SHLIB_LIBPREF=\'"$SHLIB_LIBPREF"\' echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' - echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' -echo SHLIB_DLLVERSION=\'"$SHLIB_DLLVERSION"\' echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' diff --git a/readline/terminal.c b/readline/terminal.c index cc61388..ce45d28 100644 --- a/readline/terminal.c +++ b/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2005 Free Software Foundation, Inc. +/* Copyright (C) 1996 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -55,6 +55,10 @@ # include <sys/ioctl.h> #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ +#ifdef __MSDOS__ +# include <pc.h> +#endif + #include "rltty.h" #include "tcap.h" @@ -66,20 +70,28 @@ #include "rlshell.h" #include "xmalloc.h" +#if defined (__MINGW32__) +# include <windows.h> +# include <wincon.h> +#endif + #define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) #define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) -int rl_prefer_env_winsize; - /* **************************************************************** */ /* */ /* Terminal and Termcap */ /* */ /* **************************************************************** */ +#ifndef __MSDOS__ static char *term_buffer = (char *)NULL; static char *term_string_buffer = (char *)NULL; +/* Non-zero means this terminal can't really do anything. */ +static int dumb_term; +#endif /* !__MSDOS__ */ + static int tcap_initialized; #if !defined (__linux__) @@ -147,9 +159,6 @@ static char *_rl_term_kh; static char *_rl_term_kH; static char *_rl_term_at7; /* @7 */ -/* Delete key */ -static char *_rl_term_kD; - /* Insert key */ static char *_rl_term_kI; @@ -196,41 +205,44 @@ _rl_get_screen_size (tty, ignore_env) #if defined (TIOCGWINSZ) struct winsize window_size; #endif /* TIOCGWINSZ */ - int wr, wc; - wr = wc = -1; #if defined (TIOCGWINSZ) if (ioctl (tty, TIOCGWINSZ, &window_size) == 0) { - wc = (int) window_size.ws_col; - wr = (int) window_size.ws_row; + _rl_screenwidth = (int) window_size.ws_col; + _rl_screenheight = (int) window_size.ws_row; } #endif /* TIOCGWINSZ */ + /* For MinGW, we get the console size from the Windows API. */ +#if defined (__MINGW32__) + HANDLE hConOut = GetStdHandle (STD_OUTPUT_HANDLE); + if (hConOut != INVALID_HANDLE_VALUE) + { + CONSOLE_SCREEN_BUFFER_INFO scr; + if (GetConsoleScreenBufferInfo (hConOut, &scr)) + { + _rl_screenwidth = scr.dwSize.X; + _rl_screenheight = scr.srWindow.Bottom - scr.srWindow.Top + 1; + } + } +#endif + #if defined (__EMX__) _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); #endif - if (ignore_env || rl_prefer_env_winsize == 0) - { - _rl_screenwidth = wc; - _rl_screenheight = wr; - } - else - _rl_screenwidth = _rl_screenheight = -1; - /* Environment variable COLUMNS overrides setting of "co" if IGNORE_ENV - is unset. If we prefer the environment, check it first before - assigning the value returned by the kernel. */ + is unset. */ if (_rl_screenwidth <= 0) { if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS"))) _rl_screenwidth = atoi (ss); +#if defined (__DJGPP__) if (_rl_screenwidth <= 0) - _rl_screenwidth = wc; - -#if !defined (__DJGPP__) + _rl_screenwidth = ScreenCols (); +#else if (_rl_screenwidth <= 0 && term_string_buffer) _rl_screenwidth = tgetnum ("co"); #endif @@ -243,10 +255,10 @@ _rl_get_screen_size (tty, ignore_env) if (ignore_env == 0 && (ss = sh_get_env_value ("LINES"))) _rl_screenheight = atoi (ss); +#if defined (__DJGPP__) if (_rl_screenheight <= 0) - _rl_screenheight = wr; - -#if !defined (__DJGPP__) + _rl_screenheight = ScreenRows (); +#else if (_rl_screenheight <= 0 && term_string_buffer) _rl_screenheight = tgetnum ("li"); #endif @@ -274,17 +286,16 @@ void _rl_set_screen_size (rows, cols) int rows, cols; { - if (rows > 0) - _rl_screenheight = rows; - if (cols > 0) - { - _rl_screenwidth = cols; - if (_rl_term_autowrap == 0) - _rl_screenwidth--; - } + if (rows == 0 || cols == 0) + return; + + _rl_screenheight = rows; + _rl_screenwidth = cols; + + if (_rl_term_autowrap == 0) + _rl_screenwidth--; - if (rows > 0 || cols > 0) - _rl_screenchars = _rl_screenwidth * _rl_screenheight; + _rl_screenchars = _rl_screenwidth * _rl_screenheight; } void @@ -303,12 +314,6 @@ rl_get_screen_size (rows, cols) if (cols) *cols = _rl_screenwidth; } - -void -rl_reset_screen_size () -{ - _rl_get_screen_size (fileno (rl_instream), 0); -} void rl_resize_terminal () @@ -342,7 +347,6 @@ static struct _tc_string tc_strings[] = { "ei", &_rl_term_ei }, { "ic", &_rl_term_ic }, { "im", &_rl_term_im }, - { "kD", &_rl_term_kD }, /* delete */ { "kH", &_rl_term_kH }, /* home down ?? */ { "kI", &_rl_term_kI }, /* insert */ { "kd", &_rl_term_kd }, @@ -377,7 +381,11 @@ get_term_capabilities (bp) register int i; for (i = 0; i < NUM_TC_STRINGS; i++) +# ifdef __LCC__ *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); +# else + *(tc_strings[i].tc_value) = tgetstr (tc_strings[i].tc_var, bp); +# endif #endif tcap_initialized = 1; } @@ -393,10 +401,28 @@ _rl_init_terminal_io (terminal_name) term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL; tty = rl_instream ? fileno (rl_instream) : 0; + _rl_screenwidth = _rl_screenheight = 0; if (term == 0) term = "dumb"; +#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; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; + _rl_term_cr = "\r"; + _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _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; +#if defined(HACK_TERMCAP_MOTION) + _rl_term_forward_char = (char *)NULL; +#endif + + _rl_get_screen_size (tty, 0); +#else /* !__MSDOS__ */ /* I've separated this out for later work on not calling tgetent at all if the calling application has supplied a custom redisplay function, (and possibly if the application has supplied a custom input function). */ @@ -425,17 +451,12 @@ _rl_init_terminal_io (terminal_name) _rl_term_autowrap = 0; /* used by _rl_get_screen_size */ - /* Allow calling application to set default height and width, using - rl_set_screen_size */ - if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) - { #if defined (__EMX__) - _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); - _rl_screenwidth--; + _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); + _rl_screenwidth--; #else /* !__EMX__ */ - _rl_get_screen_size (tty, 0); + _rl_get_screen_size (tty, 0); #endif /* !__EMX__ */ - } /* Defaults. */ if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) @@ -450,7 +471,7 @@ _rl_init_terminal_io (terminal_name) _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; _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_kh = _rl_term_kH = _rl_term_kI = (char *)NULL; _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL; _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_term_ve = _rl_term_vs = (char *)NULL; @@ -482,10 +503,7 @@ _rl_init_terminal_io (terminal_name) _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn"); - /* Allow calling application to set default height and width, using - rl_set_screen_size */ - if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) - _rl_get_screen_size (tty, 0); + _rl_get_screen_size (tty, 0); /* "An application program can assume that the terminal can do character insertion if *any one of* the capabilities `IC', @@ -499,6 +517,8 @@ _rl_init_terminal_io (terminal_name) if (!term_has_meta) _rl_term_mm = _rl_term_mo = (char *)NULL; +#endif /* !__MSDOS__ */ + /* Attempt to find and bind the arrow keys. Do not override already bound keys in an overzealous attempt, however. */ @@ -522,15 +542,13 @@ bind_termcap_arrow_keys (map) xkeymap = _rl_keymap; _rl_keymap = map; - rl_bind_keyseq_if_unbound (_rl_term_ku, rl_get_previous_history); - rl_bind_keyseq_if_unbound (_rl_term_kd, rl_get_next_history); - rl_bind_keyseq_if_unbound (_rl_term_kr, rl_forward_char); - rl_bind_keyseq_if_unbound (_rl_term_kl, rl_backward_char); - - rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ - rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ + _rl_bind_if_unbound (_rl_term_ku, rl_get_previous_history); + _rl_bind_if_unbound (_rl_term_kd, rl_get_next_history); + _rl_bind_if_unbound (_rl_term_kr, rl_forward); + _rl_bind_if_unbound (_rl_term_kl, rl_backward); - rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); + _rl_bind_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ + _rl_bind_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ _rl_keymap = xkeymap; } @@ -557,7 +575,6 @@ int rl_reset_terminal (terminal_name) const char *terminal_name; { - _rl_screenwidth = _rl_screenheight = 0; _rl_init_terminal_io (terminal_name); return 0; } @@ -595,10 +612,12 @@ _rl_backspace (count) { register int i; +#ifndef __MSDOS__ if (_rl_term_backspace) for (i = 0; i < count; i++) tputs (_rl_term_backspace, 1, _rl_output_character_function); else +#endif for (i = 0; i < count; i++) putc ('\b', _rl_out_stream); return 0; @@ -628,11 +647,16 @@ rl_ding () default: break; case VISIBLE_BELL: +#ifdef __MSDOS__ + ScreenVisualBell (); + break; +#else if (_rl_visible_bell) { tputs (_rl_visible_bell, 1, _rl_output_character_function); break; } +#endif /* FALLTHROUGH */ case AUDIBLE_BELL: fprintf (stderr, "\007"); @@ -685,6 +709,7 @@ void _rl_set_cursor (im, force) int im, force; { +#ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) { if (force || im != rl_insert_mode) @@ -695,4 +720,5 @@ _rl_set_cursor (im, force) tputs (_rl_term_ve, 1, _rl_output_character_function); } } +#endif } diff --git a/readline/text.c b/readline/text.c index 9053e96..2a7b724 100644 --- a/readline/text.c +++ b/readline/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987-2002 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -62,11 +62,6 @@ static int rl_change_case PARAMS((int, int)); static int _rl_char_search PARAMS((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 *)); -#endif - /* **************************************************************** */ /* */ /* Insert and Delete */ @@ -175,9 +170,6 @@ _rl_fix_point (fix_mark_too) } #undef _RL_FIX_POINT -/* Replace the contents of the line buffer between START and END with - TEXT. The operation is undoable. To replace the entire line in an - undoable mode, use _rl_replace_text(text, 0, rl_end); */ int _rl_replace_text (text, start, end) const char *text; @@ -425,7 +417,8 @@ rl_end_of_line (count, key) return 0; } -/* Move forward a word. We do what Emacs does. Handles multibyte chars. */ +/* XXX - these might need changes for multibyte characters */ +/* Move forward a word. We do what Emacs does. */ int rl_forward_word (count, key) int count, key; @@ -442,80 +435,68 @@ rl_forward_word (count, key) /* If we are not in a word, move forward until we are in one. Then, move forward until we hit a non-alphabetic character. */ - c = _rl_char_value (rl_line_buffer, rl_point); - - if (_rl_walphabetic (c) == 0) + c = rl_line_buffer[rl_point]; + if (rl_alphabetic (c) == 0) { - rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); - while (rl_point < rl_end) + while (++rl_point < rl_end) { - c = _rl_char_value (rl_line_buffer, rl_point); - if (_rl_walphabetic (c)) + c = rl_line_buffer[rl_point]; + if (rl_alphabetic (c)) break; - rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); } } if (rl_point == rl_end) return 0; - rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); - while (rl_point < rl_end) + while (++rl_point < rl_end) { - c = _rl_char_value (rl_line_buffer, rl_point); - if (_rl_walphabetic (c) == 0) + c = rl_line_buffer[rl_point]; + if (rl_alphabetic (c) == 0) break; - rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); } - --count; } return 0; } -/* Move backward a word. We do what Emacs does. Handles multibyte chars. */ +/* Move backward a word. We do what Emacs does. */ int rl_backward_word (count, key) int count, key; { - int c, p; + int c; if (count < 0) return (rl_forward_word (-count, key)); while (count) { - if (rl_point == 0) + if (!rl_point) return 0; /* Like rl_forward_word (), except that we look at the characters just before point. */ - p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); - c = _rl_char_value (rl_line_buffer, p); - - if (_rl_walphabetic (c) == 0) + c = rl_line_buffer[rl_point - 1]; + if (rl_alphabetic (c) == 0) { - rl_point = p; - while (rl_point > 0) + while (--rl_point) { - p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); - c = _rl_char_value (rl_line_buffer, p); - if (_rl_walphabetic (c)) + c = rl_line_buffer[rl_point - 1]; + if (rl_alphabetic (c)) break; - rl_point = p; } } while (rl_point) { - p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); - c = _rl_char_value (rl_line_buffer, p); - if (_rl_walphabetic (c) == 0) + c = rl_line_buffer[rl_point - 1]; + if (rl_alphabetic (c) == 0) break; else - rl_point = p; + --rl_point; } --count; @@ -772,8 +753,10 @@ _rl_insert_char (count, c) return 0; } +#if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX == 1 || rl_byte_oriented) { +#endif /* We are inserting a single character. If there is pending input, then make a string of all of the pending characters that are bound to rl_insert, and insert @@ -789,8 +772,8 @@ _rl_insert_char (count, c) str[0] = c; rl_insert_text (str); } - } #if defined (HANDLE_MULTIBYTE) + } else { rl_insert_text (incoming); @@ -818,10 +801,13 @@ _rl_overwrite_char (count, c) k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); #endif - rl_begin_undo_group (); - for (i = 0; i < count; i++) { + rl_begin_undo_group (); + + if (rl_point < rl_end) + rl_delete (1, c); + #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mbkey); @@ -829,12 +815,9 @@ _rl_overwrite_char (count, c) #endif _rl_insert_char (1, c); - if (rl_point < rl_end) - rl_delete (1, c); + rl_end_undo_group (); } - rl_end_undo_group (); - return 0; } @@ -847,63 +830,27 @@ rl_insert (count, c) } /* Insert the next typed character verbatim. */ -static int -_rl_insert_next (count) - int count; +int +rl_quoted_insert (count, key) + int count, key; { int c; +#if defined (HANDLE_SIGNALS) + _rl_disable_tty_signals (); +#endif + RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); #if defined (HANDLE_SIGNALS) - if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) - _rl_restore_tty_signals (); + _rl_restore_tty_signals (); #endif return (_rl_insert_char (count, c)); } -#if defined (READLINE_CALLBACKS) -static int -_rl_insert_next_callback (data) - _rl_callback_generic_arg *data; -{ - int count; - - count = data->count; - - /* Deregister function, let rl_callback_read_char deallocate data */ - _rl_callback_func = 0; - _rl_want_redisplay = 1; - - return _rl_insert_next (count); -} -#endif - -int -rl_quoted_insert (count, key) - int count, key; -{ - /* Let's see...should the callback interface futz with signal handling? */ -#if defined (HANDLE_SIGNALS) - if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) - _rl_disable_tty_signals (); -#endif - -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_func = _rl_insert_next_callback; - return (0); - } -#endif - - return _rl_insert_next (count); -} - /* Insert a tab character. */ int rl_tab_insert (count, key) @@ -930,8 +877,7 @@ rl_newline (count, key) if (rl_editing_mode == vi_mode) { _rl_vi_done_inserting (); - if (_rl_vi_textmod_command (_rl_vi_last_command) == 0) /* XXX */ - _rl_vi_reset_last (); + _rl_vi_reset_last (); } #endif /* VI_MODE */ @@ -989,12 +935,9 @@ _rl_overwrite_rubout (count, key) rl_delete_text (opoint, rl_point); /* Emacs puts point at the beginning of the sequence of spaces. */ - if (rl_point < rl_end) - { - opoint = rl_point; - _rl_insert_char (l, ' '); - rl_point = opoint; - } + opoint = rl_point; + _rl_insert_char (l, ' '); + rl_point = opoint; rl_end_undo_group (); @@ -1038,17 +981,43 @@ _rl_rubout_char (count, key) return -1; } - orig_point = rl_point; if (count > 1 || rl_explicit_arg) { - rl_backward_char (count, key); + orig_point = rl_point; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_backward_char (count, key); + else +#endif + rl_backward_byte (count, key); rl_kill_text (orig_point, rl_point); } - else if (MB_CUR_MAX == 1 || rl_byte_oriented) + else { - c = rl_line_buffer[--rl_point]; - rl_delete_text (rl_point, orig_point); - /* The erase-at-end-of-line hack is of questionable merit now. */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX == 1 || rl_byte_oriented) + { +#endif + c = rl_line_buffer[--rl_point]; + rl_delete_text (rl_point, rl_point + 1); +#if defined (HANDLE_MULTIBYTE) + } + else + { + int orig_point; + + orig_point = rl_point; + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + c = rl_line_buffer[rl_point]; + rl_delete_text (rl_point, orig_point); + } +#endif /* HANDLE_MULTIBYTE */ + + /* I don't think that the hack for end of line is needed for + multibyte chars. */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX == 1 || rl_byte_oriented) +#endif if (rl_point == rl_end && ISPRINT (c) && _rl_last_c_pos) { int l; @@ -1056,11 +1025,6 @@ _rl_rubout_char (count, key) _rl_erase_at_end_of_line (l); } } - else - { - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - rl_delete_text (rl_point, orig_point); - } return 0; } @@ -1085,9 +1049,11 @@ rl_delete (count, key) if (count > 1 || rl_explicit_arg) { int orig_point = rl_point; +#if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_forward_char (count, key); else +#endif rl_forward_byte (count, key); r = rl_kill_text (orig_point, rl_point); @@ -1097,8 +1063,11 @@ rl_delete (count, key) else { int new_point; - - new_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + new_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + else + new_point = rl_point + 1; + return (rl_delete_text (rl_point, new_point)); } } @@ -1137,10 +1106,6 @@ rl_delete_horizontal_space (count, ignore) rl_delete_text (start, rl_point); rl_point = start; } - - if (rl_point < 0) - rl_point = 0; - return 0; } @@ -1234,80 +1199,42 @@ static int rl_change_case (count, op) int count, op; { - int start, next, end; - int inword, c, nc, nop; -#if defined (HANDLE_MULTIBYTE) - wchar_t wc, nwc; - char mb[MB_LEN_MAX+1]; - int mblen, p; - mbstate_t ps; -#endif + register int start, end; + int inword, c; start = rl_point; rl_forward_word (count, 0); end = rl_point; - if (op != UpCase && op != DownCase && op != CapCase) - { - rl_ding (); - return -1; - } - if (count < 0) SWAP (start, end); -#if defined (HANDLE_MULTIBYTE) - memset (&ps, 0, sizeof (mbstate_t)); -#endif - /* We are going to modify some text, so let's prepare to undo it. */ rl_modifying (start, end); - inword = 0; - while (start < end) + for (inword = 0; start < end; start++) { - c = _rl_char_value (rl_line_buffer, start); - /* This assumes that the upper and lower case versions are the same width. */ - next = MB_NEXTCHAR (rl_line_buffer, start, 1, MB_FIND_NONZERO); - - if (_rl_walphabetic (c) == 0) + c = rl_line_buffer[start]; + switch (op) { - inword = 0; - start = next; - continue; - } + case UpCase: + rl_line_buffer[start] = _rl_to_upper (c); + break; - if (op == CapCase) - { - nop = inword ? DownCase : UpCase; - inword = 1; - } - else - nop = op; - if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii (c)) - { - nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); - rl_line_buffer[start] = nc; - } -#if defined (HANDLE_MULTIBYTE) - else - { - mbrtowc (&wc, rl_line_buffer + start, end - start, &ps); - nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); - if (nwc != wc) /* just skip unchanged characters */ - { - mblen = wcrtomb (mb, nwc, &ps); - if (mblen > 0) - mb[mblen] = '\0'; - /* Assume the same width */ - strncpy (rl_line_buffer + start, mb, mblen); - } - } -#endif + case DownCase: + rl_line_buffer[start] = _rl_to_lower (c); + break; - start = next; - } + case CapCase: + rl_line_buffer[start] = (inword == 0) ? _rl_to_upper (c) : _rl_to_lower (c); + inword = rl_alphabetic (rl_line_buffer[start]); + break; + default: + rl_ding (); + return -1; + } + } rl_point = end; return 0; } @@ -1387,11 +1314,11 @@ rl_transpose_chars (count, key) { #if defined (HANDLE_MULTIBYTE) char *dummy; - int i; + int i, prev_point; #else char dummy[2]; #endif - int char_length, prev_point; + int char_length; if (count == 0) return 0; @@ -1406,12 +1333,20 @@ rl_transpose_chars (count, key) if (rl_point == rl_end) { - rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + else + --rl_point; count = 1; } +#if defined (HANDLE_MULTIBYTE) prev_point = rl_point; - rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + else +#endif + rl_point--; #if defined (HANDLE_MULTIBYTE) char_length = prev_point - rl_point; @@ -1545,33 +1480,10 @@ _rl_char_search (count, fdir, bdir) } #endif /* !HANDLE_MULTIBYTE */ -#if defined (READLINE_CALLBACKS) -static int -_rl_char_search_callback (data) - _rl_callback_generic_arg *data; -{ - _rl_callback_func = 0; - _rl_want_redisplay = 1; - - return (_rl_char_search (data->count, data->i1, data->i2)); -} -#endif - int rl_char_search (count, key) int count, key; { -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_data->i1 = FFIND; - _rl_callback_data->i2 = BFIND; - _rl_callback_func = _rl_char_search_callback; - return (0); - } -#endif - return (_rl_char_search (count, FFIND, BFIND)); } @@ -1579,17 +1491,6 @@ int rl_backward_char_search (count, key) int count, key; { -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_data->i1 = BFIND; - _rl_callback_data->i2 = FFIND; - _rl_callback_func = _rl_char_search_callback; - return (0); - } -#endif - return (_rl_char_search (count, BFIND, FFIND)); } diff --git a/readline/tilde.c b/readline/tilde.c index d757f7a..60fc7fc 100644 --- a/readline/tilde.c +++ b/readline/tilde.c @@ -43,9 +43,9 @@ #endif /* HAVE_STDLIB_H */ #include <sys/types.h> -#if defined (HAVE_PWD_H) +#ifdef HAVE_PWD_H #include <pwd.h> -#endif +#endif /* HAVE_PWD_H */ #include "tilde.h" @@ -55,14 +55,10 @@ static void *xmalloc (), *xrealloc (); # include "xmalloc.h" #endif /* TEST || STATIC_MALLOC */ -#if !defined (HAVE_GETPW_DECLS) -# if defined (HAVE_GETPWUID) +#if defined (HAVE_GETPWNAM) && !defined (HAVE_GETPW_DECLS) extern struct passwd *getpwuid PARAMS((uid_t)); -# endif -# if defined (HAVE_GETPWNAM) extern struct passwd *getpwnam PARAMS((const char *)); -# endif -#endif /* !HAVE_GETPW_DECLS */ +#endif /* defined (HAVE_GETPWNAM) && !HAVE_GETPW_DECLS */ #if !defined (savestring) #define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) @@ -283,39 +279,6 @@ isolate_tilde_prefix (fname, lenp) return ret; } -#if 0 -/* Public function to scan a string (FNAME) beginning with a tilde and find - the portion of the string that should be passed to the tilde expansion - function. Right now, it just calls tilde_find_suffix and allocates new - memory, but it can be expanded to do different things later. */ -char * -tilde_find_word (fname, flags, lenp) - const char *fname; - int flags, *lenp; -{ - int x; - char *r; - - x = tilde_find_suffix (fname); - if (x == 0) - { - r = savestring (fname); - if (lenp) - *lenp = 0; - } - else - { - r = (char *)xmalloc (1 + x); - strncpy (r, fname, x); - r[x] = '\0'; - if (lenp) - *lenp = x; - } - - return r; -} -#endif - /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * @@ -386,11 +349,8 @@ tilde_expand_word (filename) /* No preexpansion hook, or the preexpansion hook failed. Look in the password database. */ dirname = (char *)NULL; -#if defined (HAVE_GETPWNAM) +#ifdef HAVE_GETPWNAM user_entry = getpwnam (username); -#else - user_entry = 0; -#endif if (user_entry == 0) { /* If the calling program has a special syntax for expanding tildes, @@ -415,7 +375,7 @@ tilde_expand_word (filename) free (username); dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); } -#if defined (HAVE_GETPWENT) + endpwent (); #endif return (dirname); diff --git a/readline/tilde.h b/readline/tilde.h index c58ce20..f8182c9 100644 --- a/readline/tilde.h +++ b/readline/tilde.h @@ -71,9 +71,6 @@ extern char *tilde_expand PARAMS((const char *)); tilde. If there is no expansion, call tilde_expansion_failure_hook. */ extern char *tilde_expand_word PARAMS((const char *)); -/* Find the portion of the string beginning with ~ that should be expanded. */ -extern char *tilde_find_word PARAMS((const char *, int, int *)); - #ifdef __cplusplus } #endif diff --git a/readline/undo.c b/readline/undo.c index fedfa12..25c287b 100644 --- a/readline/undo.c +++ b/readline/undo.c @@ -237,12 +237,7 @@ rl_revert_line (count, key) { while (rl_undo_list) rl_do_undo (); -#if defined (VI_MODE) - if (rl_editing_mode == vi_mode) - rl_point = rl_mark = 0; /* rl_end should be set correctly */ -#endif } - return 0; } diff --git a/readline/util.c b/readline/util.c index e44ef64..c7bd360 100644 --- a/readline/util.c +++ b/readline/util.c @@ -1,6 +1,6 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -44,7 +44,6 @@ /* System-specific feature definitions and include files. */ #include "rldefs.h" -#include "rlmbutil.h" #if defined (TIOCSTAT_IN_SYS_IOCTL) # include <sys/ioctl.h> @@ -79,29 +78,13 @@ rl_alphabetic (c) strchr (pathname_alphabetic_chars, c) != NULL); } -#if defined (HANDLE_MULTIBYTE) -int -_rl_walphabetic (wc) - wchar_t wc; -{ - int c; - - if (iswalnum (wc)) - return (1); - - c = wc & 0177; - return (_rl_allow_pathname_alphabetic_chars && - strchr (pathname_alphabetic_chars, c) != NULL); -} -#endif - /* How to abort things. */ int _rl_abort_internal () { rl_ding (); rl_clear_message (); - _rl_reset_argument (); + _rl_init_argument (); rl_clear_pending_input (); RL_UNSETSTATE (RL_STATE_MACRODEF); @@ -267,7 +250,7 @@ _rl_strpbrk (string1, string2) { v = _rl_get_char_len (string1, &ps); if (v > 1) - string1 += v - 1; /* -1 to account for auto-increment in loop */ + string += v - 1; /* -1 to account for auto-increment in loop */ } #endif } diff --git a/readline/vi_keymap.c b/readline/vi_keymap.c index 4b48c75..53a67c6 100644 --- a/readline/vi_keymap.c +++ b/readline/vi_keymap.c @@ -130,7 +130,7 @@ KEYMAP_ENTRY_ARRAY vi_movement_keymap = { { ISFUNC, rl_revert_line }, /* U */ { ISFUNC, (rl_command_func_t *)0x0 }, /* V */ { ISFUNC, rl_vi_next_word }, /* W */ - { ISFUNC, rl_vi_rubout }, /* X */ + { ISFUNC, rl_rubout }, /* X */ { ISFUNC, rl_vi_yank_to }, /* Y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */ diff --git a/readline/vi_mode.c b/readline/vi_mode.c index ac5fd74..8930364 100644 --- a/readline/vi_mode.c +++ b/readline/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-2005 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -63,8 +63,6 @@ #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) #endif -int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ - /* Non-zero means enter insertion mode. */ static int _rl_vi_doing_insert; @@ -85,12 +83,12 @@ static int vi_continued_command; static char *vi_insert_buffer; static int vi_insert_buffer_size; +static int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ static int _rl_vi_last_repeat = 1; static int _rl_vi_last_arg_sign = 1; static int _rl_vi_last_motion; #if defined (HANDLE_MULTIBYTE) static char _rl_vi_last_search_mbchar[MB_LEN_MAX]; -static int _rl_vi_last_search_mblen; #else static int _rl_vi_last_search_char; #endif @@ -108,22 +106,8 @@ static int vi_mark_chars['z' - 'a' + 1]; static void _rl_vi_stuff_insert PARAMS((int)); static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); - -static int _rl_vi_arg_dispatch PARAMS((int)); static int rl_digit_loop1 PARAMS((void)); -static int _rl_vi_set_mark PARAMS((void)); -static int _rl_vi_goto_mark PARAMS((void)); - -static int _rl_vi_callback_getchar PARAMS((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 *)); -#endif - void _rl_vi_initialize_line () { @@ -131,8 +115,6 @@ _rl_vi_initialize_line () for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++) vi_mark_chars[i] = -1; - - RL_UNSETSTATE(RL_STATE_VICMDONCE); } void @@ -153,16 +135,6 @@ _rl_vi_set_last (key, repeat, sign) _rl_vi_last_arg_sign = sign; } -/* A convenience function that calls _rl_vi_set_last to save the last command - information and enters insertion mode. */ -void -rl_vi_start_inserting (key, repeat, sign) - int key, repeat, sign; -{ - _rl_vi_set_last (key, repeat, sign); - rl_vi_insertion_mode (1, key); -} - /* Is the command C a VI mode text modification command? */ int _rl_vi_textmod_command (c) @@ -289,12 +261,10 @@ rl_vi_search (count, key) switch (key) { case '?': - _rl_free_saved_history_line (); rl_noninc_forward_search (count, key); break; case '/': - _rl_free_saved_history_line (); rl_noninc_reverse_search (count, key); break; @@ -327,8 +297,10 @@ rl_vi_complete (ignore, key) rl_complete (0, key); if (key == '*' || key == '\\') - rl_vi_start_inserting (key, 1, rl_arg_sign); - + { + _rl_vi_set_last (key, 1, rl_arg_sign); + rl_vi_insertion_mode (1, key); + } return (0); } @@ -338,7 +310,8 @@ rl_vi_tilde_expand (ignore, key) int ignore, key; { rl_tilde_expand (0, key); - rl_vi_start_inserting (key, 1, rl_arg_sign); + _rl_vi_set_last (key, 1, rl_arg_sign); /* XXX */ + rl_vi_insertion_mode (1, key); return (0); } @@ -456,8 +429,7 @@ rl_vi_eWord (count, ignore) /* Move to the next non-whitespace character (to the start of the next word). */ - while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) - rl_point++; + while (++rl_point < rl_end && whitespace (rl_line_buffer[rl_point])); if (rl_point && rl_point < rl_end) { @@ -668,7 +640,7 @@ _rl_vi_done_inserting () } else { - if ((_rl_vi_last_key_before_insert == 'i' || _rl_vi_last_key_before_insert == 'a') && rl_undo_list) + if (_rl_vi_last_key_before_insert == 'i' && rl_undo_list) _rl_vi_save_insert (rl_undo_list); /* XXX - Other keys probably need to be checked. */ else if (_rl_vi_last_key_before_insert == 'C') @@ -688,13 +660,6 @@ rl_vi_movement_mode (count, key) _rl_keymap = vi_movement_keymap; _rl_vi_done_inserting (); - - /* This is how POSIX.2 says `U' should behave -- everything up until the - first time you go into command mode should not be undone. */ - if (RL_ISSTATE (RL_STATE_VICMDONCE) == 0) - rl_free_undo_list (); - - RL_SETSTATE (RL_STATE_VICMDONCE); return (0); } @@ -716,7 +681,7 @@ _rl_vi_change_mbchar_case (count) { wchar_t wc; char mb[MB_LEN_MAX+1]; - int mblen, p; + int mblen; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); @@ -739,14 +704,11 @@ _rl_vi_change_mbchar_case (count) /* Vi is kind of strange here. */ if (wc) { - p = rl_point; - mblen = wcrtomb (mb, wc, &ps); + mblen = wctomb (mb, wc); if (mblen >= 0) mb[mblen] = '\0'; rl_begin_undo_group (); - rl_vi_delete (1, 0); - if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; /* XXX - should we advance more than 1 for mbchar? */ + rl_delete (1, 0); rl_insert_text (mb); rl_end_undo_group (); rl_vi_check (); @@ -763,13 +725,12 @@ int rl_vi_change_case (count, ignore) int count, ignore; { - int c, p; + char c = 0; /* Don't try this on an empty line. */ if (rl_point >= rl_end) return (0); - c = 0; #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) return (_rl_vi_change_mbchar_case (count)); @@ -791,11 +752,8 @@ rl_vi_change_case (count, ignore) /* Vi is kind of strange here. */ if (c) { - p = rl_point; rl_begin_undo_group (); - rl_vi_delete (1, c); - if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; + rl_delete (1, c); _rl_insert_char (1, c); rl_end_undo_group (); rl_vi_check (); @@ -813,9 +771,7 @@ rl_vi_put (count, key) if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end)) rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); - while (count--) - rl_yank (1, key); - + rl_yank (1, key); rl_backward_char (1, key); return (0); } @@ -863,10 +819,7 @@ rl_vi_domove (key, nextkey) { save = rl_numeric_arg; rl_numeric_arg = _rl_digit_value (c); - rl_explicit_arg = 1; - RL_SETSTATE (RL_STATE_NUMERICARG|RL_STATE_VIMOTION); rl_digit_loop1 (); - RL_UNSETSTATE (RL_STATE_VIMOTION); rl_numeric_arg *= save; RL_SETSTATE(RL_STATE_MOREINPUT); c = rl_read_key (); /* real command */ @@ -939,59 +892,52 @@ rl_vi_domove (key, nextkey) return (0); } -/* Process C as part of the current numeric argument. Return -1 if the - argument should be aborted, 0 if we should not read any more chars, and - 1 if we should continue to read chars. */ -static int -_rl_vi_arg_dispatch (c) - int c; -{ - int key; - - key = c; - if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) - { - rl_numeric_arg *= 4; - return 1; - } - - c = UNMETA (c); - - if (_rl_digit_p (c)) - { - if (rl_explicit_arg) - rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c); - else - rl_numeric_arg = _rl_digit_value (c); - rl_explicit_arg = 1; - return 1; - } - else - { - rl_clear_message (); - rl_stuff_char (key); - return 0; - } -} - /* A simplified loop for vi. Don't dispatch key at end. Don't recognize minus sign? Should this do rl_save_prompt/rl_restore_prompt? */ static int rl_digit_loop1 () { - int c, r; + int key, c; + RL_SETSTATE(RL_STATE_NUMERICARG); while (1) { - if (_rl_arg_overflow ()) - return 1; + if (rl_numeric_arg > 1000000) + { + rl_explicit_arg = rl_numeric_arg = 0; + rl_ding (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + return 1; + } + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); + RL_SETSTATE(RL_STATE_MOREINPUT); + key = c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); - c = _rl_arg_getchar (); + if (c >= 0 && _rl_keymap[c].type == ISFUNC && + _rl_keymap[c].function == rl_universal_argument) + { + rl_numeric_arg *= 4; + continue; + } - r = _rl_vi_arg_dispatch (c); - if (r <= 0) - break; + c = UNMETA (c); + if (_rl_digit_p (c)) + { + if (rl_explicit_arg) + rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c); + else + rl_numeric_arg = _rl_digit_value (c); + rl_explicit_arg = 1; + } + else + { + rl_clear_message (); + rl_stuff_char (key); + break; + } } RL_UNSETSTATE(RL_STATE_NUMERICARG); @@ -1071,7 +1017,8 @@ rl_vi_change_to (count, key) /* `C' does not save the text inserted for undoing or redoing. */ if (_rl_uppercase_p (key) == 0) _rl_vi_doing_insert = 1; - rl_vi_start_inserting (key, rl_numeric_arg, rl_arg_sign); + _rl_vi_set_last (key, count, rl_arg_sign); + rl_vi_insertion_mode (1, key); } return (0); @@ -1081,9 +1028,8 @@ int rl_vi_yank_to (count, key) int count, key; { - int c, save; + int c, save = rl_point; - save = rl_point; if (_rl_uppercase_p (key)) rl_stuff_char ('$'); @@ -1108,45 +1054,11 @@ rl_vi_yank_to (count, key) } int -rl_vi_rubout (count, key) - int count, key; -{ - int p, opoint; - - if (count < 0) - return (rl_vi_delete (-count, key)); - - if (rl_point == 0) - { - rl_ding (); - return -1; - } - - opoint = rl_point; - if (count > 1 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_backward_char (count, key); - else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - else - rl_point -= count; - - if (rl_point < 0) - rl_point = 0; - - rl_kill_text (rl_point, opoint); - - return (0); -} - -int rl_vi_delete (count, key) int count, key; { int end; - if (count < 0) - return (rl_vi_rubout (-count, key)); - if (rl_end == 0) { rl_ding (); @@ -1165,7 +1077,6 @@ rl_vi_delete (count, key) if (rl_point > 0 && rl_point == rl_end) rl_backward_char (1, key); - return (0); } @@ -1186,102 +1097,64 @@ rl_vi_first_print (count, key) return (rl_vi_back_to_indent (1, key)); } -static int _rl_cs_dir, _rl_cs_orig_dir; - -#if defined (READLINE_CALLBACKS) -static int -_rl_vi_callback_char_search (data) - _rl_callback_generic_arg *data; -{ -#if defined (HANDLE_MULTIBYTE) - _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); -#else - RL_SETSTATE(RL_STATE_MOREINPUT); - _rl_vi_last_search_char = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); -#endif - - _rl_callback_func = 0; - _rl_want_redisplay = 1; - -#if defined (HANDLE_MULTIBYTE) - return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_mbchar, _rl_vi_last_search_mblen)); -#else - return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_char)); -#endif -} -#endif - int rl_vi_char_search (count, key) int count, key; { #if defined (HANDLE_MULTIBYTE) static char *target; - static int tlen; + static int mb_len; #else static char target; #endif + static int orig_dir, dir; if (key == ';' || key == ',') - _rl_cs_dir = (key == ';') ? _rl_cs_orig_dir : -_rl_cs_orig_dir; + dir = key == ';' ? orig_dir : -orig_dir; else { + if (vi_redoing) +#if defined (HANDLE_MULTIBYTE) + target = _rl_vi_last_search_mbchar; +#else + target = _rl_vi_last_search_char; +#endif + else + { +#if defined (HANDLE_MULTIBYTE) + mb_len = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + target = _rl_vi_last_search_mbchar; +#else + RL_SETSTATE(RL_STATE_MOREINPUT); + _rl_vi_last_search_char = target = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); +#endif + } + switch (key) { case 't': - _rl_cs_orig_dir = _rl_cs_dir = FTO; + orig_dir = dir = FTO; break; case 'T': - _rl_cs_orig_dir = _rl_cs_dir = BTO; + orig_dir = dir = BTO; break; case 'f': - _rl_cs_orig_dir = _rl_cs_dir = FFIND; + orig_dir = dir = FFIND; break; case 'F': - _rl_cs_orig_dir = _rl_cs_dir = BFIND; + orig_dir = dir = BFIND; break; } - - if (vi_redoing) - { - /* set target and tlen below */ - } -#if defined (READLINE_CALLBACKS) - else if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_data->i1 = _rl_cs_dir; - _rl_callback_func = _rl_vi_callback_char_search; - return (0); - } -#endif - else - { -#if defined (HANDLE_MULTIBYTE) - _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); -#else - RL_SETSTATE(RL_STATE_MOREINPUT); - _rl_vi_last_search_char = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); -#endif - } } #if defined (HANDLE_MULTIBYTE) - target = _rl_vi_last_search_mbchar; - tlen = _rl_vi_last_search_mblen; -#else - target = _rl_vi_last_search_char; -#endif - -#if defined (HANDLE_MULTIBYTE) - return (_rl_char_search_internal (count, _rl_cs_dir, target, tlen)); + return (_rl_char_search_internal (count, dir, target, mb_len)); #else - return (_rl_char_search_internal (count, _rl_cs_dir, target)); + return (_rl_char_search_internal (count, dir, target)); #endif } @@ -1392,100 +1265,51 @@ rl_vi_bracktype (c) } } -static int -_rl_vi_change_char (count, c, mb) - int count, c; - char *mb; +/* XXX - think about reading an entire mbchar with _rl_read_mbchar and + inserting it in one bunch instead of the loop below (like in + rl_vi_char_search or _rl_vi_change_mbchar_case. Set c to mbchar[0] + for test against 033 or ^C. Make sure that _rl_read_mbchar does + this right. */ +int +rl_vi_change_char (count, key) + int count, key; { - int p; + int c; + + if (vi_redoing) + c = _rl_vi_last_replacement; + else + { + RL_SETSTATE(RL_STATE_MOREINPUT); + _rl_vi_last_replacement = c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + } if (c == '\033' || c == CTRL ('C')) return -1; - rl_begin_undo_group (); while (count-- && rl_point < rl_end) { - p = rl_point; - rl_vi_delete (1, c); - if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; + rl_begin_undo_group (); + + rl_delete (1, c); #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_insert_text (mb); + while (_rl_insert_char (1, c)) + { + RL_SETSTATE (RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE (RL_STATE_MOREINPUT); + } else #endif _rl_insert_char (1, c); - } - - /* The cursor shall be left on the last character changed. */ - rl_backward_char (1, c); - - rl_end_undo_group (); - - return (0); -} - -static int -_rl_vi_callback_getchar (mb, mblen) - char *mb; - int mblen; -{ - int c; - - RL_SETSTATE(RL_STATE_MOREINPUT); - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - -#if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - c = _rl_read_mbstring (c, mb, mblen); -#endif - - return c; -} - -#if defined (READLINE_CALLBACKS) -static int -_rl_vi_callback_change_char (data) - _rl_callback_generic_arg *data; -{ - int c; - char mb[MB_LEN_MAX]; - - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); - - _rl_callback_func = 0; - _rl_want_redisplay = 1; + if (count == 0) + rl_backward_char (1, c); - return (_rl_vi_change_char (data->count, c, mb)); -} -#endif - -int -rl_vi_change_char (count, key) - int count, key; -{ - int c; - char mb[MB_LEN_MAX]; - - if (vi_redoing) - { - c = _rl_vi_last_replacement; - mb[0] = c; - mb[1] = '\0'; - } -#if defined (READLINE_CALLBACKS) - else if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = _rl_callback_data_alloc (count); - _rl_callback_func = _rl_vi_callback_change_char; - return (0); + rl_end_undo_group (); } -#endif - else - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); - - return (_rl_vi_change_char (count, c, mb)); + return (0); } int @@ -1494,7 +1318,7 @@ rl_vi_subst (count, key) { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ if (vi_redoing == 0) - rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */ + rl_stuff_char ((key == 'S') ? 'c' : ' '); /* `S' == `cc', `s' == `c ' */ return (rl_vi_change_to (count, 'c')); } @@ -1610,8 +1434,9 @@ rl_vi_possible_completions() #endif /* Functions to save and restore marks. */ -static int -_rl_vi_set_mark () +int +rl_vi_set_mark (count, key) + int count, key; { int ch; @@ -1629,37 +1454,10 @@ _rl_vi_set_mark () return 0; } -#if defined (READLINE_CALLBACKS) -static int -_rl_vi_callback_set_mark (data) - _rl_callback_generic_arg *data; -{ - _rl_callback_func = 0; - _rl_want_redisplay = 1; - - return (_rl_vi_set_mark ()); -} -#endif - int -rl_vi_set_mark (count, key) +rl_vi_goto_mark (count, key) int count, key; { -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = 0; - _rl_callback_func = _rl_vi_callback_set_mark; - return (0); - } -#endif - - return (_rl_vi_set_mark ()); -} - -static int -_rl_vi_goto_mark () -{ int ch; RL_SETSTATE(RL_STATE_MOREINPUT); @@ -1687,31 +1485,4 @@ _rl_vi_goto_mark () return 0; } -#if defined (READLINE_CALLBACKS) -static int -_rl_vi_callback_goto_mark (data) - _rl_callback_generic_arg *data; -{ - _rl_callback_func = 0; - _rl_want_redisplay = 1; - - return (_rl_vi_goto_mark ()); -} -#endif - -int -rl_vi_goto_mark (count, key) - int count, key; -{ -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - _rl_callback_data = 0; - _rl_callback_func = _rl_vi_callback_goto_mark; - return (0); - } -#endif - - return (_rl_vi_goto_mark ()); -} #endif /* VI_MODE */ |