# HG changeset patch
# User jwe
# Date 981782142 0
# Node ID e42e28db4dda267a03a03b564b642d4a2fe46327
# Parent 56522edd5c33169929c6e8bf2a5171b82166f3ad
[project @ 2001-02-10 05:14:17 by jwe]
diff --git a/readline/CHANGELOG b/readline/CHANGELOG
new file mode 100644
--- /dev/null
+++ b/readline/CHANGELOG
@@ -0,0 +1,447 @@
+[Readline-specific changelog. Descriptions of changes to the source are
+ found in the bash changelog.]
+
+ 6/9
+ ---
+Makefile.in
+ - quote value of ${INSTALL_DATA} when passing it to makes in
+ subdirectories
+
+ 7/1
+ ---
+Makefile.in
+ - don't pass INSTALL_DATA to a make in the `doc' subdirectory; let
+ autoconf set the value itself in the Makefile
+ - removed a stray `-' before $(RANLIB) in the `install' recipe
+
+doc/Makefile.in
+ - add a VPATH assignment so the documentation is not remade if it's
+ already up-to-date in the distribution
+
+configure.in
+ - call AC_SUBST(LOCAL_LDFLAGS), since Makefile.in contains
+ @LOCAL_LDFLAGS@
+
+ 7/9
+ ---
+
+config.h.in
+ - add define lines for STRUCT_WINSIZE_IN_SYS_IOCTL and
+ STRUCT_WINSIZE_IN_TERMIOS
+
+configure.in
+ - call BASH_STRUCT_WINSIZE to look for the definition of
+ `struct winsize'
+
+ 7/17
+ ----
+configure.in
+ - call AC_MINIX
+
+config.h.in
+ - add define line for AC_MINIX
+
+ 7/18
+ ----
+Makefile.in
+ - add `install-shared' and `uninstall-shared' targets
+
+ 8/4
+ ---
+Makefile.in
+ - install and uninstall libhistory.a in the `install' and
+ `uninstall' targets
+
+ 9/4
+ ---
+configure.in
+ - bumped LIBVERSION up to 2.1.1, indicating that this is patch
+ level 1 to release 2.1
+
+
+ 9/16
+ ----
+Makefile.in
+ - `make distclean' now descends into the `examples' subdir
+
+doc/Makefile.in
+ - the `distclean' and `maintainer-clean' targets should remove
+ Makefile
+
+examples/Makefile.in
+ - added the various clean targets
+
+ 4/2
+ ---
+configure.in
+ - bumped LIBVERSION up to 2.2
+
+ 4/18
+ ----
+[readline-2.2 released]
+
+ 4/20
+ ----
+Makefile.in
+ - make `libhistory.a' a dependency of `install'
+ - fixed a typo in the recipe for `install' that copied libreadline.a
+ to libhistory.old right after installing it
+
+ 4/27
+ ----
+doc/Makefile.in
+ - install {readline,history}.info out of the source directory if
+ they are not found in the current (build) directory -- only an
+ issue if the libraries are built in a different directory than
+ the source directory
+
+ 5/1
+ ---
+support/shobj-conf
+ - script from the bash distribution to do shared object and library
+ configuration
+
+shlib/Makefile.in
+ - new directory and makefile to handle building shared versions of
+ libreadline and libhistory, controlled by support/shobj-conf
+
+ 5/7
+ ---
+doc/Makefile.in
+ - set SHELL to /bin/sh, rather than relying on make to be correct
+
+ 5/14
+ ----
+savestring.c
+ - new file, moved from shell.c, for backwards compatibility
+
+Makefile.in, shlib/Makefile.in
+ - make sure savestring.c is compiled and added to libreadline and
+ libhistory
+
+[THERE ARE NO MORE #ifdef SHELL LINES IN THE C SOURCE FILES.]
+
+ 5/15
+ ----
+README
+ - updated description of shared library creation for the new scheme
+
+[THERE ARE NO MORE #ifdef SHELL LINES IN ANY OF THE SOURCE FILES.]
+
+Makefile.in
+ - bumped SHLIB_MAJOR up to 4 since we've augmented the library
+ API
+ - rlconf.h is now one of the installed headers, so applications can
+ find out whether things like vi-mode are available in the installed
+ libreadline
+
+ 5/20
+ ----
+configure.in
+ - changed RL_LIBRARY_VERSION to 4.0 to match the version of the
+ installed shared libraries
+
+ 6/5
+ ---
+rlstdc.h
+ - new file
+
+Makefile.in
+ - rlstdc.h is now one of the installed headers
+
+ 8/3
+ ---
+shlib/Makefile.in
+ - made the suffix rule that creates xx.so from xx.c write the
+ compiler output to `a.o', which is then mv'd to xx.so, because
+ some compilers (Sun WSpro 4.2, for example) don't allow any
+ suffixes other than `.o' for `cc -c' (not even `a.out')
+
+ 9/15
+ ----
+
+Makefile.in
+ - AR and ARFLAGS are now substituted by configure, used in recipes
+ that build the libraries
+
+configure.in
+ - use AC_CHECK_PROG to check for ar
+ - set ARFLAGS if it has not already been set in the environment
+
+ 10/5
+ ----
+Makefile.in
+ - removed savestring.o from object file list
+
+ 10/28
+ -----
+shlib/Makefile.in
+ - don't use a fixed filename in the .c.so suffix rule to avoid
+ problems with parallel makes
+
+ 12/21
+ -----
+support/shlib-install
+ - new script to install shared readline and history libraries
+
+shlib/Makefile.in
+ - changed to call shlib-install for install and uninstall targets
+
+[readline-4.0-beta1 frozen]
+
+ 12/22
+ -----
+configure.in
+ - call AC_SUBST for SHOBJ_XLDFLAGS and SHLIB_LIBS
+
+shlib/Makefile.in
+ - SHOBJ_XLDFLAGS and SHLIB_LIBS are now substituted by configure
+ - add $(SHLIB_LIBS) at end of command line that builds the shared
+ libraries (currently needed only by AIX 4.2)
+
+ 12/31
+ -----
+MANIFEST, MANIFEST.doc
+ - the TOC html files are no longer generated and no longer part of
+ the distribution
+
+ 2/18/1999
+ ---------
+configure.in
+ - set MAKE_SHELL to /bin/sh and substitute into the Makefiles
+
+Makefile.in,{doc,examples,shlib}/Makefile.in
+ - set SHELL from @MAKE_SHELL@
+
+[readline-4.0 released]
+
+ 3/11
+ ----
+doc/Makefile.in
+ - removed references to HTMLTOC, since separate HTML table-of-contents
+ files are no longer created
+
+examples/Makefile.in
+ - remove `*.exe' in clean target for MS-DOS
+
+Makefile.in
+ - make `readline' target depend on ./libreadline.a
+ - configure now substitutes TERMCAP_LIB into Makefile.in
+ - use ${TERMCAP_LIB} instead of -ltermcap in recipe for `readline'
+ - clean target now removes readline and readline.exe in case they
+ get built
+
+configure.in
+ - use `pwd.exe' to set BUILD_DIR on MS-DOS DJGPP
+
+ 3/15
+ ----
+support/shlib-install
+ - Irix 5.x and Irix 6.x should install shared libraries like Solaris 2
+ - changes for installing on hp-ux 1[01].x
+
+ 3/23
+ ----
+configure.in
+ - make sure that the $CC argument to shobj-conf is quoted
+
+ 4/8
+ ---
+
+xmalloc.h, rlprivate.h, rlshell.h
+ - new files
+
+Makefile.in,shlib/Makefile.in
+ - add dependencies on xmalloc.h, rlshell.h
+ - add xmalloc.h, rlprivate.h, rlshell.h to list of header files
+
+MANIFEST
+ - add xmalloc.h, rlprivate.h, rlshell.h
+
+ 4/9
+ ---
+Makefile.in,shlib/Makefile.in
+ - add dependencies on rlprivate.h
+
+ 4/13
+ ----
+doc/Makefile.in
+ - add variable, PSDVI, which is the desired resolution of the
+ generated postscript files. Set to 300 because I don't have
+ any 600-dpi printers
+ - set LANGUAGE= before calling makeinfo, so messages are in English
+ - add rluserman.{info,dvi,ps,html} to appropriate variables
+ - add rules to create rluserman.{info,dvi,ps,html}
+ - install and uninstall rluserman.info, but don't update the directory
+ file in $(infodir) yet
+
+MANIFEST
+ - add doc/rluserman.{texinfo,info,dvi,ps,html}
+
+ 4/30
+ ----
+configure.in
+ - updated library version to 4.1
+
+ 5/3
+ ---
+configure.in
+ - SHLIB_MAJOR and SHLIB_MINOR shared library version numbers are
+ constructed from $LIBRARY_VERSION and substituted into Makefiles
+
+ 5/5
+ ---
+support/shlib-install
+ - OSF/1 installs shared libraries like Solaris
+
+Makefile.in
+ - broke the header file install and uninstall into two new targets:
+ install-headers and uninstall-headers
+ - install and uninstall depend on install-headers and uninstall-headers
+ respectively
+ - changed install-shared and uninstall-shared targets to depend on
+ install-headers and uninstall-headers, respectively, so users may
+ choose to install only the shared libraries. I'm not sure about
+ the uninstall one yet -- maybe it should check whether or not
+ the static libraries are installed and not remove the header files
+ if they are
+
+ 9/3
+ ---
+configure.in, config.h.in
+ - added test for memmove (for later use)
+ - changed version to 4.1-beta1
+
+ 9/13
+ ----
+examples/rlfe.c
+ - Per Bothner's `rlfe' readline front-end program
+
+examples/Makefile.in
+ - added rules to build rlfe
+
+ 9/21
+ ----
+support/shlib-install
+ - changes to handle FreeBSD-3.x elf or a.out shared libraries, which
+ have different semantics and need different naming conventions
+
+ 1/24/2000
+ ---------
+doc/Makefile.in
+ - remove *.bt and *.bts on `make clean'
+
+ 2/4
+ ---
+
+
+configure.in
+ - changed LIBVERSION to 4.1-beta5
+
+ 3/17/2000
+ ---------
+[readline-4.1 released]
+
+ 3/23
+ ----
+Makefile.in
+ - remove the `-t' argument to ranlib in the install recipe; some
+ ranlibs don't have it and attempt to create a file named `-t'
+
+ 3/27
+ ----
+support/shlib-install
+ - install shared libraries unwritable by anyone on HP-UX
+ - changed symlinks to relative pathnames on all platforms
+
+shlib/Makefile.in
+ - added missing `includedir' assignment, substituted by configure
+
+Makefile.in
+ - added missing @SET_MAKE@ so configure can set $MAKE appropriately
+
+configure.in
+ - add call to AC_PROG_MAKE_SET
+
+ 8/30
+ ----
+shlib/Makefile.in
+ - change the soname bound into the shared libraries, so it includes
+ only the major version number. If it includes the minor version,
+ programs depending on it must be rebuilt (which may or may not be
+ a bad thing)
+
+ 9/6
+ ---
+examples/rlfe.c
+ - add -l option to log input and output (-a option appends to logfile)
+ - add -n option to set readline application name
+ - add -v, -h options for version and help information
+ - change a few things because getopt() is now used to parse arguments
+
+ 9/12
+ ----
+support/shlib-install
+ - fix up the libname on HPUX 11
+
+ 10/18
+ -----
+configure.in
+ - changed library version to 4.2-alpha
+
+ 10/30
+ -----
+configure.in
+ - add -fsigned-char to LOCAL_CFLAGS for Linux running on the IBM
+ S/390
+
+Makefile.in
+ - added new file, rltypedefs.h, installed by default with `make install'
+
+ 11/2
+ ----
+compat.c
+ - new file, with backwards-compatibility function definitions
+
+Makefile.in,shlib/Makefile.in
+ - make sure that compat.o/compat.so are built and linked apppropriately
+
+support/shobj-conf
+ - picked up bash version, which means that shared libs built on
+ linux and BSD/OS 4.x will have an soname that does not include
+ the minor version number
+
+ 11/13
+ -----
+examples/rlfe.c
+ - rlfe can perform filename completion for relative pathnames in the
+ inferior process's context if the OS supports /proc/PID/cwd (linux
+ does it OK, Solaris is slightly warped, none of the BSDs have it)
+
+ 11/17/2000
+ ----------
+[readline-4.2-alpha released]
+
+ 11/27
+ -----
+Makefile.in,shlib/Makefile.in
+ - added dependencies for rltypedefs.h
+
+shlib/Makefile.in
+ - changed dependencies on histlib.h to $(topdir)/histlib.h
+
+ 1/22
+ ----
+configure.in
+ - changed release version to 4.2-beta
+
+ 2/2
+ ---
+examples/Makefile.in
+ - build histexamp as part of the examples
+
+ 2/5
+ ---
+doc/Makefile.in
+ - don't remove the dvi, postscript, html, info, and text `objects'
+ on a `make distclean', only on a `make maintainer-clean'
diff --git a/readline/CHANGES b/readline/CHANGES
new file mode 100644
--- /dev/null
+++ b/readline/CHANGES
@@ -0,0 +1,423 @@
+This document details the changes between this version, readline-4.2,
+and the previous version, readline-4.1.
+
+1. Changes to Readline
+
+a. When setting the terminal attributes on systems using `struct termio',
+ readline waits for output to drain before changing the attributes.
+
+b. A fix was made to the history word tokenization code to avoid attempts to
+ dereference a null pointer.
+
+c. Readline now defaults rl_terminal_name to $TERM if the calling application
+ has left it unset, and tries to initialize with the resultant value.
+
+d. Instead of calling (*rl_getc_function)() directly to get input in certain
+ places, readline now calls rl_read_key() consistently.
+
+e. Fixed a bug in the completion code that allowed a backslash to quote a
+ single quote inside a single-quoted string.
+
+f. rl_prompt is no longer assigned directly from the argument to readline(),
+ but uses memory allocated by readline. This allows constant strings to
+ be passed to readline without problems arising when the prompt processing
+ code wants to modify the string.
+
+g. Fixed a bug that caused non-interactive history searches to return the
+ wrong line when performing multiple searches backward for the same string.
+
+h. Many variables, function arguments, and function return values are now
+ declared `const' where appropriate, to improve behavior when linking with
+ C++ code.
+
+i. The control character detection code now works better on systems where
+ `char' is unsigned by default.
+
+j. The vi-mode numeric argument is now capped at 999999, just like emacs mode.
+
+k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been
+ replaced with a set of specific prototyped typedefs, though they are
+ still in the readline header files for backwards compatibility.
+
+m. Nearly all of the (undocumented) internal global variables in the library
+ now have an _rl_ prefix -- there were a number that did not, like
+ screenheight, screenwidth, alphabetic, etc.
+
+n. The ding() convenience function has been renamed to rl_ding(), though the
+ old function is still defined for backwards compatibility.
+
+o. The completion convenience functions filename_completion_function,
+ username_completion_function, and completion_matches now have an rl_
+ prefix, though the old names are still defined for backwards compatibility.
+
+p. The functions shared by readline and bash (linkage is satisfied from bash
+ when compiling with bash, and internally otherwise) now have an sh_ prefix.
+
+q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
+ that the `soname' contains only the major version number rather than the
+ major and minor numbers.
+
+r. Fixed a redisplay bug that occurred when the prompt spanned more than one
+ physical line and contained invisible characters.
+
+s. Added a missing `includedir' variable to the Makefile.
+
+t. When installing the shared libraries, make sure symbolic links are relative.
+
+u. Added configure test so that it can set `${MAKE}' appropriately.
+
+v. Fixed a bug in rl_forward that could cause the point to be set to before
+ the beginning of the line in vi mode.
+
+w. Fixed a bug in the callback read-char interface to make it work when a
+ readline function pushes some input onto the input stream with
+ rl_execute_next (like the incremental search functions).
+
+x. Fixed a file descriptor leak in the history file manipulation code that
+ was tripped when attempting to truncate a non-regular file (like
+ /dev/null).
+
+y. Changes to make all of the exported readline functions declared in
+ readline.h have an rl_ prefix (rltty_set_default_bindings is now
+ rl_tty_set_default_bindings, crlf is now rl_crlf, etc.)
+
+z. The formatted documentation included in the base readline distribution
+ is no longer removed on a `make distclean'.
+
+2. New Features in Readline
+
+a. The blink timeout for paren matching is now settable by applications.
+
+b. _rl_executing_macro has been renamed to rl_executing_macro, which means
+ it's now part of the public interface.
+
+c. Readline has a new variable, rl_readline_state, which is a bitmap that
+ encapsulates the current state of the library; intended for use by
+ callbacks and hook functions.
+
+d. rlfe has a new -l option to log input and output (-a appends to logfile),
+ a new -n option to set the readline application name, and -v and -h
+ options for version and help information.
+
+e. rlfe can now perform filename completion for the inferior process if the
+ OS has a /proc/
-
-
-
-
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-
-Published by the Free Software Foundation
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-
-Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the GNU History Library in your own programs,
-see section Programming with GNU History.
-
-
-The History library provides a history expansion feature that is similar
-to the history expansion provided by
-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.
-
-
-An event designator is a reference to a command line entry in the
-history list.
-
-
-
-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,
-
-
-Here are the word designators:
-
-
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-
-After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a `:'.
-
-
-This chapter describes how to interface programs that you write
-with the GNU History Library.
-It should be considered a technical guide.
-For information on the interactive use of GNU History, see section Using History Interactively.
-
-
-Many programs read input from the user a line at a time. The GNU
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones.
-
-
-The programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-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
-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
-The history list is an array of history entries. A history entry is
-declared as follows:
-
-
-The history list itself might therefore be declared as
-
-
-The state of the History library is encapsulated into a single structure:
-
-
-If the flags member includes
-This section describes the calling sequence for the various functions
-present in GNU History.
-
-
-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.
-
-
-GNU History Library
-Edition 4.2-beta, for
-History Library
Version 4.2-beta.Feb 2001
-Brian Fox, Free Software Foundation
-Chet Ramey, Case Western Reserve University
-Table of Contents
-
-
-
-59 Temple Place, Suite 330,
-Boston, MA 02111 USA
-
-Using History Interactively
-
-
-
-
-
-
-History Expansion
-
-csh
. This section
-describes the syntax used to manipulate the history information.
-
-
-
-
-
-
-Event Designators
-
-
-
-
-
-
-
-!
-!n
-!-n
-!!
-!string
-!?string[?]
-^string1^string2^
-!!:s/string1/string2/
.
-
-!#
-Word Designators
-
-
-
-
-
-!!
-!!:$
-!$
.
-
-!fi:2
-fi
.
-
-
-
-
-0 (zero)
-0
th word. For many applications, this is the command word.
-
-n
-^
-$
-%
-x-y
-*
-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*
-x-
-Modifiers
-
-
-
-
-
-
-
-h
-t
-r
-e
-p
-s/old/new/
-&
-g
-gs/old/new/
,
-or with `&'.
-
-Programming with GNU History
-
-
-
-
-
-
-Introduction to History
-
-csh
.
-
-<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.
-
-History Storage
-
-
-typedef void *histdata_t;
-
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-
-
-
-HIST_ENTRY **the_history_list;
-
-
-
-/* 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;
-
-
-HS_STIFLED
, the history has been
-stifled.
-
-History Functions
-
-
-
-
-
-
-Initializing History and State Management
-
-
-
-
-These functions manage individual entries on the history list, or set -parameters managing the list itself. - -
--
NULL
.
--
-
NULL
pointer is returned.
--
-
-
-
-These functions return information about the entire history list or -individual list entries. - -
--
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
.
--
-
where_history()
. If there is no entry there, return a NULL
-pointer.
--
history_base
(see section History Variables).
-If there is no entry there, or if offset
-is greater than the history length, return a NULL
pointer.
--
-These functions allow the current index into the history list to be -set or changed. - -
--
-
NULL
pointer.
--
NULL
pointer.
--These functions allow searching of the history list for entries containing -a specific string. Searching may be performed both forward and backward -from the current history position. The search may be anchored, -meaning that the string must match at the beginning of the history entry. - - -
--
-
-
-The History library can read the history from and write it to a file. -This section documents the functions for managing a history file. - -
--
NULL
, then read from `~/.history'.
-Returns 0 if successful, or errno
if not.
--
NULL
, then read from `~/.history'. Returns 0 if successful,
-or errno
if not.
--
NULL
, then write the history list to `~/.history'.
-Values returned are as in read_history()
.
--
NULL
, then append to `~/.history'.
--
NULL
, then `~/.history' is truncated.
-
-These functions implement csh
-like history expansion.
-
-
-
0
-1
--1
-2
-:p
modifier (see section Modifiers).
--If an error ocurred in expansion, then output contains a descriptive -error message. -
-
-
-
" \t\n()<>;&|$"
,
-and shell quoting conventions are obeyed.
--This section describes the externally-visible variables exported by -the GNU History Library. - -
--
-
-
stifle_history()
.
--
-
-
-
-
-
-
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
.
--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"); - } - } - } -} -- - - -
-
-Jump to: -a -- -c -- -g -- -h -- -m -- -n -- -p -- -r -- -s -- -u -- -w -
-
-This document was generated on 5 Febuary 2001 using the -texi2html -translator version 1.52.
- -