annotate readline/doc/hstech.texinfo @ 2996:9d4e3a9de17e

[project @ 1997-05-22 20:58:07 by jwe]
author jwe
date Thu, 22 May 1997 20:59:27 +0000
parents
children 3001e15555e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2996
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
1 @ignore
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
2 This file documents the user interface to the GNU History library.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
3
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
4 Copyright (C) 1988, 1991, 1994, 1996 Free Software Foundation, Inc.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
5 Authored by Brian Fox and Chet Ramey.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
6
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
7 Permission is granted to make and distribute verbatim copies of this manual
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
8 provided the copyright notice and this permission notice are preserved on
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
9 all copies.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
10
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
11 Permission is granted to process this file through Tex and print the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
12 results, provided the printed document carries copying permission notice
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
13 identical to this one except for the removal of this paragraph (this
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
14 paragraph not being relevant to the printed manual).
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
15
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
16 Permission is granted to copy and distribute modified versions of this
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
17 manual under the conditions for verbatim copying, provided also that the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
18 GNU Copyright statement is available to the distributee, and provided that
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
19 the entire resulting derived work is distributed under the terms of a
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
20 permission notice identical to this one.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
21
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
22 Permission is granted to copy and distribute translations of this manual
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
23 into another language, under the above conditions for modified versions.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
24 @end ignore
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
25
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
26 @node Programming with GNU History
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
27 @chapter Programming with GNU History
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
28
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
29 This chapter describes how to interface programs that you write
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
30 with the GNU History Library.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
31 It should be considered a technical guide.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
32 For information on the interactive use of GNU History, @pxref{Using
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
33 History Interactively}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
34
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
35 @menu
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
36 * Introduction to History:: What is the GNU History library for?
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
37 * History Storage:: How information is stored.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
38 * History Functions:: Functions that you can use.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
39 * History Variables:: Variables that control behaviour.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
40 * History Programming Example:: Example of using the GNU History Library.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
41 @end menu
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
42
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
43 @node Introduction to History
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
44 @section Introduction to History
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
45
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
46 Many programs read input from the user a line at a time. The GNU History
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
47 library is able to keep track of those lines, associate arbitrary data with
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
48 each line, and utilize information from previous lines in composing new
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
49 ones.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
50
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
51 The programmer using the History library has available functions
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
52 for remembering lines on a history list, associating arbitrary data
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
53 with a line, removing lines from the list, searching through the list
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
54 for a line containing an arbitrary text string, and referencing any line
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
55 in the list directly. In addition, a history @dfn{expansion} function
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
56 is available which provides for a consistent user interface across
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
57 different programs.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
58
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
59 The user using programs written with the History library has the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
60 benefit of a consistent user interface with a set of well-known
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
61 commands for manipulating the text of previous lines and using that text
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
62 in new commands. The basic history manipulation commands are similar to
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
63 the history substitution provided by @code{csh}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
64
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
65 If the programmer desires, he can use the Readline library, which
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
66 includes some history manipulation by default, and has the added
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
67 advantage of command line editing.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
68
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
69 @node History Storage
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
70 @section History Storage
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
71
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
72 The history list is an array of history entries. A history entry is
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
73 declared as follows:
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
74
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
75 @example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
76 typedef struct _hist_entry @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
77 char *line;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
78 char *data;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
79 @} HIST_ENTRY;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
80 @end example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
81
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
82 The history list itself might therefore be declared as
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
83
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
84 @example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
85 HIST_ENTRY **the_history_list;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
86 @end example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
87
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
88 The state of the History library is encapsulated into a single structure:
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
89
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
90 @example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
91 /* A structure used to pass the current state of the history stuff around. */
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
92 typedef struct _hist_state @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
93 HIST_ENTRY **entries; /* Pointer to the entries themselves. */
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
94 int offset; /* The location pointer within this array. */
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
95 int length; /* Number of elements within this array. */
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
96 int size; /* Number of slots allocated to this array. */
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
97 int flags;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
98 @} HISTORY_STATE;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
99 @end example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
100
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
101 If the flags member includes @code{HS_STIFLED}, the history has been
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
102 stifled.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
103
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
104 @node History Functions
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
105 @section History Functions
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
106
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
107 This section describes the calling sequence for the various functions
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
108 present in GNU History.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
109
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
110 @menu
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
111 * Initializing History and State Management:: Functions to call when you
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
112 want to use history in a
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
113 program.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
114 * History List Management:: Functions used to manage the list
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
115 of history entries.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
116 * Information About the History List:: Functions returning information about
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
117 the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
118 * Moving Around the History List:: Functions used to change the position
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
119 in the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
120 * Searching the History List:: Functions to search the history list
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
121 for entries containing a string.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
122 * Managing the History File:: Functions that read and write a file
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
123 containing the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
124 * History Expansion:: Functions to perform csh-like history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
125 expansion.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
126 @end menu
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
127
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
128 @node Initializing History and State Management
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
129 @subsection Initializing History and State Management
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
130
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
131 This section describes functions used to initialize and manage
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
132 the state of the History library when you want to use the history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
133 functions in your program.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
134
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
135 @deftypefun void using_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
136 Begin a session in which the history functions might be used. This
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
137 initializes the interactive variables.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
138 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
139
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
140 @deftypefun {HISTORY_STATE *} history_get_history_state ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
141 Return a structure describing the current state of the input history.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
142 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
143
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
144 @deftypefun void history_set_history_state (HISTORY_STATE *state)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
145 Set the state of the history list according to @var{state}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
146 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
147
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
148 @node History List Management
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
149 @subsection History List Management
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
150
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
151 These functions manage individual entries on the history list, or set
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
152 parameters managing the list itself.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
153
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
154 @deftypefun void add_history (char *string)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
155 Place @var{string} at the end of the history list. The associated data
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
156 field (if any) is set to @code{NULL}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
157 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
158
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
159 @deftypefun {HIST_ENTRY *} remove_history (int which)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
160 Remove history entry at offset @var{which} from the history. The
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
161 removed element is returned so you can free the line, data,
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
162 and containing structure.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
163 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
164
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
165 @deftypefun {HIST_ENTRY *} replace_history_entry (int which, char *line, char *data)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
166 Make the history entry at offset @var{which} have @var{line} and @var{data}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
167 This returns the old entry so you can dispose of the data. In the case
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
168 of an invalid @var{which}, a @code{NULL} pointer is returned.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
169 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
170
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
171 @deftypefun void clear_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
172 Clear the history list by deleting all the entries.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
173 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
174
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
175 @deftypefun void stifle_history (int max)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
176 Stifle the history list, remembering only the last @var{max} entries.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
177 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
178
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
179 @deftypefun int unstifle_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
180 Stop stifling the history. This returns the previous amount the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
181 history was stifled. The value is positive if the history was
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
182 stifled, negative if it wasn't.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
183 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
184
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
185 @deftypefun int history_is_stifled ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
186 Returns non-zero if the history is stifled, zero if it is not.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
187 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
188
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
189 @node Information About the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
190 @subsection Information About the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
191
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
192 These functions return information about the entire history list or
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
193 individual list entries.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
194
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
195 @deftypefun {HIST_ENTRY **} history_list ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
196 Return a @code{NULL} terminated array of @code{HIST_ENTRY} which is the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
197 current input history. Element 0 of this list is the beginning of time.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
198 If there is no history, return @code{NULL}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
199 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
200
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
201 @deftypefun int where_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
202 Returns the offset of the current history element.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
203 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
204
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
205 @deftypefun {HIST_ENTRY *} current_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
206 Return the history entry at the current position, as determined by
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
207 @code{where_history ()}. If there is no entry there, return a @code{NULL}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
208 pointer.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
209 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
210
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
211 @deftypefun {HIST_ENTRY *} history_get (int offset)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
212 Return the history entry at position @var{offset}, starting from
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
213 @code{history_base}. If there is no entry there, or if @var{offset}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
214 is greater than the history length, return a @code{NULL} pointer.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
215 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
216
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
217 @deftypefun int history_total_bytes ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
218 Return the number of bytes that the primary history entries are using.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
219 This function returns the sum of the lengths of all the lines in the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
220 history.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
221 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
222
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
223 @node Moving Around the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
224 @subsection Moving Around the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
225
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
226 These functions allow the current index into the history list to be
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
227 set or changed.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
228
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
229 @deftypefun int history_set_pos (int pos)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
230 Set the position in the history list to @var{pos}, an absolute index
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
231 into the list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
232 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
233
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
234 @deftypefun {HIST_ENTRY *} previous_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
235 Back up the current history offset to the previous history entry, and
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
236 return a pointer to that entry. If there is no previous entry, return
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
237 a @code{NULL} pointer.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
238 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
239
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
240 @deftypefun {HIST_ENTRY *} next_history ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
241 Move the current history offset forward to the next history entry, and
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
242 return the a pointer to that entry. If there is no next entry, return
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
243 a @code{NULL} pointer.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
244 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
245
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
246 @node Searching the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
247 @subsection Searching the History List
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
248 @cindex History Searching
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
249
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
250 These functions allow searching of the history list for entries containing
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
251 a specific string. Searching may be performed both forward and backward
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
252 from the current history position. The search may be @dfn{anchored},
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
253 meaning that the string must match at the beginning of the history entry.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
254 @cindex anchored search
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
255
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
256 @deftypefun int history_search (char *string, int direction)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
257 Search the history for @var{string}, starting at the current history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
258 offset. If @var{direction} < 0, then the search is through previous entries,
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
259 else through subsequent. If @var{string} is found, then
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
260 the current history index is set to that history entry, and the value
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
261 returned is the offset in the line of the entry where
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
262 @var{string} was found. Otherwise, nothing is changed, and a -1 is
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
263 returned.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
264 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
265
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
266 @deftypefun int history_search_prefix (char *string, int direction)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
267 Search the history for @var{string}, starting at the current history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
268 offset. The search is anchored: matching lines must begin with
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
269 @var{string}. If @var{direction} < 0, then the search is through previous
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
270 entries, else through subsequent. If @var{string} is found, then the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
271 current history index is set to that entry, and the return value is 0.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
272 Otherwise, nothing is changed, and a -1 is returned.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
273 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
274
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
275 @deftypefun int history_search_pos (char *string, int direction, int pos)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
276 Search for @var{string} in the history list, starting at @var{pos}, an
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
277 absolute index into the list. If @var{direction} is negative, the search
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
278 proceeds backward from @var{pos}, otherwise forward. Returns the absolute
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
279 index of the history element where @var{string} was found, or -1 otherwise.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
280 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
281
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
282 @node Managing the History File
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
283 @subsection Managing the History File
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
284
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
285 The History library can read the history from and write it to a file.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
286 This section documents the functions for managing a history file.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
287
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
288 @deftypefun int read_history (char *filename)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
289 Add the contents of @var{filename} to the history list, a line at a
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
290 time. If @var{filename} is @code{NULL}, then read from
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
291 @file{~/.history}. Returns 0 if successful, or errno if not.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
292 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
293
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
294 @deftypefun int read_history_range (char *filename, int from, int to)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
295 Read a range of lines from @var{filename}, adding them to the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
296 Start reading at line @var{from} and end at @var{to}. If
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
297 @var{from} is zero, start at the beginning. If @var{to} is less than
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
298 @var{from}, then read until the end of the file. If @var{filename} is
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
299 @code{NULL}, then read from @file{~/.history}. Returns 0 if successful,
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
300 or @code{errno} if not.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
301 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
302
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
303 @deftypefun int write_history (char *filename)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
304 Write the current history to @var{filename}, overwriting @var{filename}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
305 if necessary. If @var{filename} is
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
306 @code{NULL}, then write the history list to @file{~/.history}. Values
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
307 returned are as in @code{read_history ()}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
308 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
309
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
310 @deftypefun int append_history (int nelements, char *filename)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
311 Append the last @var{nelements} of the history list to @var{filename}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
312 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
313
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
314 @deftypefun int history_truncate_file (char *filename, int nlines)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
315 Truncate the history file @var{filename}, leaving only the last
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
316 @var{nlines} lines.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
317 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
318
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
319 @node History Expansion
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
320 @subsection History Expansion
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
321
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
322 These functions implement @code{csh}-like history expansion.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
323
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
324 @deftypefun int history_expand (char *string, char **output)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
325 Expand @var{string}, placing the result into @var{output}, a pointer
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
326 to a string (@pxref{History Interaction}). Returns:
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
327 @table @code
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
328 @item 0
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
329 If no expansions took place (or, if the only change in
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
330 the text was the de-slashifying of the history expansion
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
331 character);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
332 @item 1
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
333 if expansions did take place;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
334 @item -1
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
335 if there was an error in expansion;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
336 @item 2
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
337 if the returned line should only be displayed, but not executed,
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
338 as with the @code{:p} modifier (@pxref{Modifiers}).
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
339 @end table
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
340
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
341 If an error ocurred in expansion, then @var{output} contains a descriptive
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
342 error message.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
343 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
344
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
345 @deftypefun {char *} history_arg_extract (int first, int last, char *string)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
346 Extract a string segment consisting of the @var{first} through @var{last}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
347 arguments present in @var{string}. Arguments are broken up as in Bash.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
348 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
349
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
350 @deftypefun {char *} get_history_event (char *string, int *cindex, int qchar)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
351 Returns the text of the history event beginning at @var{string} +
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
352 @var{*cindex}. @var{*cindex} is modified to point to after the event
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
353 specifier. At function entry, @var{cindex} points to the index into
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
354 @var{string} where the history event specification begins. @var{qchar}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
355 is a character that is allowed to end the event specification in addition
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
356 to the ``normal'' terminating characters.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
357 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
358
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
359 @deftypefun {char **} history_tokenize (char *string)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
360 Return an array of tokens parsed out of @var{string}, much as the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
361 shell might. The tokens are split on white space and on the
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
362 characters @code{()<>;&|$}, and shell quoting conventions are
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
363 obeyed.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
364 @end deftypefun
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
365
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
366 @node History Variables
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
367 @section History Variables
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
368
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
369 This section describes the externally visible variables exported by
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
370 the GNU History Library.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
371
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
372 @deftypevar int history_base
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
373 The logical offset of the first entry in the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
374 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
375
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
376 @deftypevar int history_length
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
377 The number of entries currently stored in the history list.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
378 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
379
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
380 @deftypevar int max_input_history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
381 The maximum number of history entries. This must be changed using
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
382 @code{stifle_history ()}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
383 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
384
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
385 @deftypevar char history_expansion_char
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
386 The character that starts a history event. The default is @samp{!}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
387 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
388
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
389 @deftypevar char history_subst_char
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
390 The character that invokes word substitution if found at the start of
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
391 a line. The default is @samp{^}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
392 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
393
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
394 @deftypevar char history_comment_char
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
395 During tokenization, if this character is seen as the first character
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
396 of a word, then it and all subsequent characters up to a newline are
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
397 ignored, suppressing history expansion for the remainder of the line.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
398 This is disabled by default.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
399 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
400
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
401 @deftypevar {char *} history_no_expand_chars
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
402 The list of characters which inhibit history expansion if found immediately
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
403 following @var{history_expansion_char}. The default is whitespace and
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
404 @samp{=}.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
405 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
406
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
407 @deftypevar {char *} history_search_delimiter_chars
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
408 The list of additional characters which can delimit a history search
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
409 string, in addition to whitespace, @samp{:} and @samp{?} in the case of
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
410 a substring search. The default is empty.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
411 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
412
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
413 @deftypevar int history_quotes_inhibit_expansion
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
414 If non-zero, single-quoted words are not scanned for the history expansion
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
415 character. The default value is 0.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
416 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
417
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
418 @deftypevar {Function *} history_inhibit_expansion_function
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
419 This should be set to the address of a function that takes two arguments:
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
420 a @code{char *} (@var{string}) and an integer index into that string (@var{i}).
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
421 It should return a non-zero value if the history expansion starting at
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
422 @var{string[i]} should not be performed; zero if the expansion should
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
423 be done.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
424 It is intended for use by applications like Bash that use the history
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
425 expansion character for additional purposes.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
426 By default, this variable is set to NULL.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
427 @end deftypevar
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
428
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
429 @node History Programming Example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
430 @section History Programming Example
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
431
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
432 The following program demonstrates simple use of the GNU History Library.
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
433
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
434 @smallexample
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
435 main ()
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
436 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
437 char line[1024], *t;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
438 int len, done = 0;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
439
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
440 line[0] = 0;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
441
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
442 using_history ();
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
443 while (!done)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
444 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
445 printf ("history$ ");
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
446 fflush (stdout);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
447 t = fgets (line, sizeof (line) - 1, stdin);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
448 if (t && *t)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
449 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
450 len = strlen (t);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
451 if (t[len - 1] == '\n')
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
452 t[len - 1] = '\0';
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
453 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
454
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
455 if (!t)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
456 strcpy (line, "quit");
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
457
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
458 if (line[0])
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
459 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
460 char *expansion;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
461 int result;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
462
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
463 result = history_expand (line, &expansion);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
464 if (result)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
465 fprintf (stderr, "%s\n", expansion);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
466
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
467 if (result < 0 || result == 2)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
468 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
469 free (expansion);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
470 continue;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
471 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
472
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
473 add_history (expansion);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
474 strncpy (line, expansion, sizeof (line) - 1);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
475 free (expansion);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
476 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
477
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
478 if (strcmp (line, "quit") == 0)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
479 done = 1;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
480 else if (strcmp (line, "save") == 0)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
481 write_history ("history_file");
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
482 else if (strcmp (line, "read") == 0)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
483 read_history ("history_file");
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
484 else if (strcmp (line, "list") == 0)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
485 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
486 register HIST_ENTRY **the_list;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
487 register int i;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
488
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
489 the_list = history_list ();
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
490 if (the_list)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
491 for (i = 0; the_list[i]; i++)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
492 printf ("%d: %s\n", i + history_base, the_list[i]->line);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
493 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
494 else if (strncmp (line, "delete", 6) == 0)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
495 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
496 int which;
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
497 if ((sscanf (line + 6, "%d", &which)) == 1)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
498 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
499 HIST_ENTRY *entry = remove_history (which);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
500 if (!entry)
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
501 fprintf (stderr, "No such entry %d\n", which);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
502 else
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
503 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
504 free (entry->line);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
505 free (entry);
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
506 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
507 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
508 else
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
509 @{
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
510 fprintf (stderr, "non-numeric arg given to `delete'\n");
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
511 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
512 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
513 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
514 @}
9d4e3a9de17e [project @ 1997-05-22 20:58:07 by jwe]
jwe
parents:
diff changeset
515 @end smallexample