summaryrefslogtreecommitdiff
path: root/readline-4.2/doc/history.html
diff options
context:
space:
mode:
Diffstat (limited to 'readline-4.2/doc/history.html')
-rw-r--r--readline-4.2/doc/history.html1222
1 files changed, 0 insertions, 1222 deletions
diff --git a/readline-4.2/doc/history.html b/readline-4.2/doc/history.html
deleted file mode 100644
index 9cf15fd..0000000
--- a/readline-4.2/doc/history.html
+++ /dev/null
@@ -1,1222 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.52
- from /usr/homes/chet/src/bash/readline-src/doc/hist.texinfo on 16 April 2001 -->
-
-<TITLE>GNU History Library</TITLE>
-</HEAD>
-<BODY>
-<H1>GNU History Library</H1>
-<H2>Edition 4.2, for <CODE>History Library</CODE> Version 4.2.</H2>
-<H2>Apr 2001</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="history.html#SEC1">Using History Interactively</A>
-<UL>
-<LI><A NAME="TOC2" HREF="history.html#SEC2">History Expansion</A>
-<UL>
-<LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A>
-<LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A>
-<LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A>
-</UL>
-</UL>
-<LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A>
-<UL>
-<LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A>
-<LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A>
-<LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A>
-<UL>
-<LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A>
-<LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A>
-<LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A>
-<LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A>
-<LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A>
-<LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A>
-<LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A>
-</UL>
-<LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A>
-<LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A>
-</UL>
-<LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A>
-<LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A>
-</UL>
-<P><HR><P>
-
-<P>
-This document describes the GNU History library, a programming tool that
-provides a consistent user interface for recalling lines of previously
-typed input.
-
-</P>
-<P>
-Published by the Free Software Foundation <BR>
-59 Temple Place, Suite 330, <BR>
-Boston, MA 02111 USA
-
-</P>
-<P>
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-</P>
-<P>
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-</P>
-<P>
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Free Software Foundation.
-
-</P>
-<P>
-Copyright (C) 1988-2001 Free Software Foundation, Inc.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="history.html#TOC1">Using History Interactively</A></H1>
-
-<P>
-This chapter describes how to use the GNU History Library interactively,
-from a user's standpoint. It should be considered a user's guide. For
-information on using the GNU History Library in your own programs,
-see section <A HREF="history.html#SEC6">Programming with GNU History</A>.
-
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC2">History Interaction</A>: What it feels like using History as a user.
-</UL>
-
-
-
-<H2><A NAME="SEC2" HREF="history.html#TOC2">History Expansion</A></H2>
-<P>
-<A NAME="IDX1"></A>
-
-</P>
-<P>
-The History library provides a history expansion feature that is similar
-to the history expansion provided by <CODE>csh</CODE>. This section
-describes the syntax used to manipulate the history information.
-
-</P>
-<P>
-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>
-
-
-<UL>
-<LI><A HREF="history.html#SEC3">Event Designators</A>: How to specify which history line to use.
-<LI><A HREF="history.html#SEC4">Word Designators</A>: Specifying which words are of interest.
-<LI><A HREF="history.html#SEC5">Modifiers</A>: Modifying the results of substitution.
-</UL>
-
-
-
-<H3><A NAME="SEC3" HREF="history.html#TOC3">Event Designators</A></H3>
-<P>
-<A NAME="IDX2"></A>
-
-</P>
-<P>
-An event designator is a reference to a command line entry in the
-history list.
-<A NAME="IDX3"></A>
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>!</CODE>
-<DD>
-Start a history substitution, except when followed by a space, tab,
-the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>.
-
-<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>
-Refer to command line <VAR>n</VAR>.
-
-<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>
-Refer to the command <VAR>n</VAR> lines back.
-
-<DT><CODE>!!</CODE>
-<DD>
-Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
-
-<DT><CODE>!<VAR>string</VAR></CODE>
-<DD>
-Refer to the most recent command starting with <VAR>string</VAR>.
-
-<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.
-
-<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>.
-
-<DT><CODE>!#</CODE>
-<DD>
-The entire command line typed so far.
-
-</DL>
-
-
-
-<H3><A NAME="SEC4" HREF="history.html#TOC4">Word Designators</A></H3>
-
-<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>
-<DL COMPACT>
-
-<DT><CODE>!!</CODE>
-<DD>
-designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-
-<DT><CODE>!!:$</CODE>
-<DD>
-designates the last argument of the preceding command. This may be
-shortened to <CODE>!$</CODE>.
-
-<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.
-
-<DT><CODE><VAR>n</VAR></CODE>
-<DD>
-The <VAR>n</VAR>th word.
-
-<DT><CODE>^</CODE>
-<DD>
-The first argument; that is, word 1.
-
-<DT><CODE>$</CODE>
-<DD>
-The last argument.
-
-<DT><CODE>%</CODE>
-<DD>
-The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
-
-<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>.
-
-<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.
-
-<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>
-Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
-
-<DT><CODE><VAR>x</VAR>-</CODE>
-<DD>
-Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
-
-</DL>
-
-<P>
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-</P>
-
-
-<H3><A NAME="SEC5" HREF="history.html#TOC5">Modifiers</A></H3>
-
-<P>
-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>
-<DL COMPACT>
-
-<DT><CODE>h</CODE>
-<DD>
-Remove a trailing pathname component, leaving only the head.
-
-<DT><CODE>t</CODE>
-<DD>
-Remove all leading pathname components, leaving the tail.
-
-<DT><CODE>r</CODE>
-<DD>
-Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
-the basename.
-
-<DT><CODE>e</CODE>
-<DD>
-Remove all but the trailing suffix.
-
-<DT><CODE>p</CODE>
-<DD>
-Print the new command but do not execute it.
-
-<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>`&#38;'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>. A single backslash will quote
-the <SAMP>`&#38;'</SAMP>. The final delimiter is optional if it is the last
-character on the input line.
-
-<DT><CODE>&#38;</CODE>
-<DD>
-Repeat the previous substitution.
-
-<DT><CODE>g</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>`&#38;'</SAMP>.
-
-</DL>
-
-
-
-<H1><A NAME="SEC6" HREF="history.html#TOC6">Programming with GNU History</A></H1>
-
-<P>
-This chapter describes how to interface programs that you write
-with the GNU History Library.
-It should be considered a technical guide.
-For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">Using History Interactively</A>.
-
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC7">Introduction to History</A>: What is the GNU History library for?
-<LI><A HREF="history.html#SEC8">History Storage</A>: How information is stored.
-<LI><A HREF="history.html#SEC9">History Functions</A>: Functions that you can use.
-<LI><A HREF="history.html#SEC17">History Variables</A>: Variables that control behaviour.
-<LI><A HREF="history.html#SEC18">History Programming Example</A>: Example of using the GNU History Library.
-</UL>
-
-
-
-<H2><A NAME="SEC7" HREF="history.html#TOC7">Introduction to History</A></H2>
-
-<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>&#60;readline/history.h&#62;</CODE> in any file that uses the
-History library's features. It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
-
-</P>
-
-
-<H2><A NAME="SEC8" HREF="history.html#TOC8">History Storage</A></H2>
-
-<P>
-The history list is an array of history entries. A history entry is
-declared as follows:
-
-</P>
-
-<PRE>
-typedef void *histdata_t;
-
-typedef struct _hist_entry {
- char *line;
- histdata_t data;
-} HIST_ENTRY;
-</PRE>
-
-<P>
-The history list itself might therefore be declared as
-
-</P>
-
-<PRE>
-HIST_ENTRY **the_history_list;
-</PRE>
-
-<P>
-The state of the History library is encapsulated into a single structure:
-
-</P>
-
-<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>
-
-<P>
-If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
-
-</P>
-
-
-<H2><A NAME="SEC9" HREF="history.html#TOC9">History Functions</A></H2>
-
-<P>
-This section describes the calling sequence for the various functions
-exported by the GNU History library.
-
-</P>
-
-<UL>
-<LI><A HREF="history.html#SEC10">Initializing History and State Management</A>: Functions to call when you
- want to use history in a
- program.
-<LI><A HREF="history.html#SEC11">History List Management</A>: Functions used to manage the list
- of history entries.
-<LI><A HREF="history.html#SEC12">Information About the History List</A>: Functions returning information about
- the history list.
-<LI><A HREF="history.html#SEC13">Moving Around the History List</A>: Functions used to change the position
- in the history list.
-<LI><A HREF="history.html#SEC14">Searching the History List</A>: Functions to search the history list
- for entries containing a string.
-<LI><A HREF="history.html#SEC15">Managing the History File</A>: Functions that read and write a file
- containing the history list.
-<LI><A HREF="history.html#SEC16">History Expansion</A>: Functions to perform csh-like history
- expansion.
-</UL>
-
-
-
-<H3><A NAME="SEC10" HREF="history.html#TOC10">Initializing History and State Management</A></H3>
-
-<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>
-<DL>
-<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
-<DD><A NAME="IDX4"></A>
-Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
-<DD><A NAME="IDX5"></A>
-Return a structure describing the current state of the input history.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD><A NAME="IDX6"></A>
-Set the state of the history list according to <VAR>state</VAR>.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC11" HREF="history.html#TOC11">History List Management</A></H3>
-
-<P>
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
-<DD><A NAME="IDX7"></A>
-Place <VAR>string</VAR> at the end of the history list. The associated data
-field (if any) is set to <CODE>NULL</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD><A NAME="IDX8"></A>
-Remove history entry at offset <VAR>which</VAR> from the history. The
-removed element is returned so you can free the line, data,
-and containing structure.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
-<DD><A NAME="IDX9"></A>
-Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
-<DD><A NAME="IDX10"></A>
-Clear the history list by deleting all the entries.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD><A NAME="IDX11"></A>
-Stifle the history list, remembering only the last <VAR>max</VAR> entries.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
-<DD><A NAME="IDX12"></A>
-Stop stifling the history. This returns the previous amount the
-history was stifled. The value is positive if the history was
-stifled, negative if it wasn't.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
-<DD><A NAME="IDX13"></A>
-Returns non-zero if the history is stifled, zero if it is not.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC12" HREF="history.html#TOC12">Information About the History List</A></H3>
-
-<P>
-These functions return information about the entire history list or
-individual list entries.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
-<DD><A NAME="IDX14"></A>
-Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
-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>
-<DL>
-<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
-<DD><A NAME="IDX15"></A>
-Returns the offset of the current history element.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
-<DD><A NAME="IDX16"></A>
-Return the history entry at the current position, as determined by
-<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
-pointer.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD><A NAME="IDX17"></A>
-Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">History Variables</A>).
-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>
-<DL>
-<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
-<DD><A NAME="IDX18"></A>
-Return the number of bytes that the primary history entries are using.
-This function returns the sum of the lengths of all the lines in the
-history.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC13" HREF="history.html#TOC13">Moving Around the History List</A></H3>
-
-<P>
-These functions allow the current index into the history list to be
-set or changed.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD><A NAME="IDX19"></A>
-Set the current history offset to <VAR>pos</VAR>, an absolute index
-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>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
-<DD><A NAME="IDX20"></A>
-Back up the current history offset to the previous history entry, and
-return a pointer to that entry. If there is no previous entry, return
-a <CODE>NULL</CODE> pointer.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
-<DD><A NAME="IDX21"></A>
-Move the current history offset forward to the next history entry, and
-return the a pointer to that entry. If there is no next entry, return
-a <CODE>NULL</CODE> pointer.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC14" HREF="history.html#TOC14">Searching the History List</A></H3>
-<P>
-<A NAME="IDX22"></A>
-
-</P>
-<P>
-These functions allow searching of the history list for entries containing
-a specific string. Searching may be performed both forward and backward
-from the current history position. The search may be <EM>anchored</EM>,
-meaning that the string must match at the beginning of the history entry.
-<A NAME="IDX23"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
-<DD><A NAME="IDX24"></A>
-Search the history for <VAR>string</VAR>, starting at the current history offset.
-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>
-<DL>
-<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
-<DD><A NAME="IDX25"></A>
-Search the history for <VAR>string</VAR>, starting at the current history
-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>
-<DL>
-<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
-<DD><A NAME="IDX26"></A>
-Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
-absolute index into the list. If <VAR>direction</VAR> is negative, the search
-proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
-index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC15" HREF="history.html#TOC15">Managing the History File</A></H3>
-
-<P>
-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>
-<DL>
-<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
-<DD><A NAME="IDX27"></A>
-Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
-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>
-<DL>
-<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
-<DD><A NAME="IDX28"></A>
-Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
-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>
-<DL>
-<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
-<DD><A NAME="IDX29"></A>
-Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
-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>
-<DL>
-<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
-<DD><A NAME="IDX30"></A>
-Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
-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>
-<DL>
-<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
-<DD><A NAME="IDX31"></A>
-Truncate the history file <VAR>filename</VAR>, leaving only the last
-<VAR>nlines</VAR> lines.
-If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
-Returns 0 on success, or <CODE>errno</CODE> on failure.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC16" HREF="history.html#TOC16">History Expansion</A></H3>
-
-<P>
-These functions implement history expansion.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD><A NAME="IDX32"></A>
-Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">History Expansion</A>). Returns:
-<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">Modifiers</A>).
-</DL>
-
-<P>
-If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
-<DD><A NAME="IDX33"></A>
-Returns the text of the history event beginning at <VAR>string</VAR> +
-<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>
-<DL>
-<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
-<DD><A NAME="IDX34"></A>
-Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-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>
-<DL>
-<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
-<DD><A NAME="IDX35"></A>
-Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>. Arguments are split using
-<CODE>history_tokenize</CODE>.
-</DL>
-
-</P>
-
-
-<H2><A NAME="SEC17" HREF="history.html#TOC17">History Variables</A></H2>
-
-<P>
-This section describes the externally-visible variables exported by
-the GNU History Library.
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_base</B>
-<DD><A NAME="IDX36"></A>
-The logical offset of the first entry in the history list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_length</B>
-<DD><A NAME="IDX37"></A>
-The number of entries currently stored in the history list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_max_entries</B>
-<DD><A NAME="IDX38"></A>
-The maximum number of history entries. This must be changed using
-<CODE>stifle_history()</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD><A NAME="IDX39"></A>
-The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
-Setting this to 0 inhibits history expansion.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD><A NAME="IDX40"></A>
-The character that invokes word substitution if found at the start of
-a line. The default is <SAMP>`^'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD><A NAME="IDX41"></A>
-During tokenization, if this character is seen as the first character
-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>
-<DL>
-<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
-<DD><A NAME="IDX42"></A>
-The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is <CODE>" \t\n()&#60;&#62;;&#38;|"</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD><A NAME="IDX43"></A>
-The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>. The default is space, tab, newline,
-carriage return, and <SAMP>`='</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD><A NAME="IDX44"></A>
-The list of additional characters which can delimit a history search
-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>
-<DL>
-<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD><A NAME="IDX45"></A>
-If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
-<DD><A NAME="IDX46"></A>
-This should be set to the address of a function that takes two arguments:
-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>
-
-
-<H2><A NAME="SEC18" HREF="history.html#TOC18">History Programming Example</A></H2>
-
-<P>
-The following program demonstrates simple use of the GNU History Library.
-
-</P>
-
-<PRE>
-#include &#60;stdio.h&#62;
-#include &#60;readline/history.h&#62;
-
-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 &#38;&#38; *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, &#38;expansion);
- if (result)
- fprintf (stderr, "%s\n", expansion);
-
- if (result &#60; 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]-&#62;line);
- }
- else if (strncmp (line, "delete", 6) == 0)
- {
- int which;
- if ((sscanf (line + 6, "%d", &#38;which)) == 1)
- {
- HIST_ENTRY *entry = remove_history (which);
- if (!entry)
- fprintf (stderr, "No such entry %d\n", which);
- else
- {
- free (entry-&#62;line);
- free (entry);
- }
- }
- else
- {
- fprintf (stderr, "non-numeric arg given to `delete'\n");
- }
- }
- }
-}
-</PRE>
-
-
-
-<H1><A NAME="SEC19" HREF="history.html#TOC19">Concept Index</A></H1>
-<P>
-Jump to:
-<A HREF="#cindex_a">a</A>
--
-<A HREF="#cindex_e">e</A>
--
-<A HREF="#cindex_h">h</A>
-<P>
-<H2><A NAME="cindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX23">anchored search</A>
-</DIR>
-<H2><A NAME="cindex_e">e</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX2">event designators</A>
-</DIR>
-<H2><A NAME="cindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX3">history events</A>
-<LI><A HREF="history.html#IDX1">history expansion</A>
-<LI><A HREF="history.html#IDX22">History Searching</A>
-</DIR>
-
-</P>
-
-
-<H1><A NAME="SEC20" HREF="history.html#TOC20">Function and Variable Index</A></H1>
-<P>
-Jump to:
-<A HREF="#vindex_a">a</A>
--
-<A HREF="#vindex_c">c</A>
--
-<A HREF="#vindex_g">g</A>
--
-<A HREF="#vindex_h">h</A>
--
-<A HREF="#vindex_n">n</A>
--
-<A HREF="#vindex_p">p</A>
--
-<A HREF="#vindex_r">r</A>
--
-<A HREF="#vindex_s">s</A>
--
-<A HREF="#vindex_u">u</A>
--
-<A HREF="#vindex_w">w</A>
-<P>
-<H2><A NAME="vindex_a">a</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX7">add_history</A>
-<LI><A HREF="history.html#IDX30">append_history</A>
-</DIR>
-<H2><A NAME="vindex_c">c</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX10">clear_history</A>
-<LI><A HREF="history.html#IDX16">current_history</A>
-</DIR>
-<H2><A NAME="vindex_g">g</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX33">get_history_event</A>
-</DIR>
-<H2><A NAME="vindex_h">h</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX35">history_arg_extract</A>
-<LI><A HREF="history.html#IDX36">history_base</A>
-<LI><A HREF="history.html#IDX41">history_comment_char</A>
-<LI><A HREF="history.html#IDX32">history_expand</A>
-<LI><A HREF="history.html#IDX39">history_expansion_char</A>
-<LI><A HREF="history.html#IDX17">history_get</A>
-<LI><A HREF="history.html#IDX5">history_get_history_state</A>
-<LI><A HREF="history.html#IDX46">history_inhibit_expansion_function</A>
-<LI><A HREF="history.html#IDX13">history_is_stifled</A>
-<LI><A HREF="history.html#IDX37">history_length</A>
-<LI><A HREF="history.html#IDX14">history_list</A>
-<LI><A HREF="history.html#IDX38">history_max_entries</A>
-<LI><A HREF="history.html#IDX43">history_no_expand_chars</A>
-<LI><A HREF="history.html#IDX45">history_quotes_inhibit_expansion</A>
-<LI><A HREF="history.html#IDX24">history_search</A>
-<LI><A HREF="history.html#IDX44">history_search_delimiter_chars</A>
-<LI><A HREF="history.html#IDX26">history_search_pos</A>
-<LI><A HREF="history.html#IDX25">history_search_prefix</A>
-<LI><A HREF="history.html#IDX6">history_set_history_state</A>
-<LI><A HREF="history.html#IDX19">history_set_pos</A>
-<LI><A HREF="history.html#IDX40">history_subst_char</A>
-<LI><A HREF="history.html#IDX34">history_tokenize</A>
-<LI><A HREF="history.html#IDX18">history_total_bytes</A>
-<LI><A HREF="history.html#IDX31">history_truncate_file</A>
-<LI><A HREF="history.html#IDX42">history_word_delimiters</A>
-</DIR>
-<H2><A NAME="vindex_n">n</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX21">next_history</A>
-</DIR>
-<H2><A NAME="vindex_p">p</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX20">previous_history</A>
-</DIR>
-<H2><A NAME="vindex_r">r</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX27">read_history</A>
-<LI><A HREF="history.html#IDX28">read_history_range</A>
-<LI><A HREF="history.html#IDX8">remove_history</A>
-<LI><A HREF="history.html#IDX9">replace_history_entry</A>
-</DIR>
-<H2><A NAME="vindex_s">s</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX11">stifle_history</A>
-</DIR>
-<H2><A NAME="vindex_u">u</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX12">unstifle_history</A>
-<LI><A HREF="history.html#IDX4">using_history</A>
-</DIR>
-<H2><A NAME="vindex_w">w</A></H2>
-<DIR>
-<LI><A HREF="history.html#IDX15">where_history</A>
-<LI><A HREF="history.html#IDX29">write_history</A>
-</DIR>
-
-</P>
-<P><HR><P>
-This document was generated on 16 April 2001 using the
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
-translator version 1.52.</P>
-</BODY>
-</HTML>