Commit | Line | Data |
---|---|---|
a44161c3 EZ |
1 | <HTML> |
2 | <HEAD> | |
3 | <!-- This HTML file has been created by texi2html 1.52 | |
f9267e15 | 4 | from /usr/homes/chet/src/bash/readline-src/doc/hist.texinfo on 19 January 2000 --> |
a44161c3 EZ |
5 | |
6 | <TITLE>GNU History Library</TITLE> | |
7 | </HEAD> | |
8 | <BODY> | |
9 | <H1>GNU History Library</H1> | |
f9267e15 EZ |
10 | <H2>Edition 4.1, for <CODE>History Library</CODE> Version 4.1.</H2> |
11 | <H2>January 2000</H2> | |
a44161c3 EZ |
12 | <ADDRESS>Brian Fox, Free Software Foundation</ADDRESS> |
13 | <ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS> | |
14 | <P> | |
15 | <P><HR><P> | |
16 | <H1>Table of Contents</H1> | |
17 | <UL> | |
18 | <LI><A NAME="TOC1" HREF="history.html#SEC1">Using History Interactively</A> | |
19 | <UL> | |
20 | <LI><A NAME="TOC2" HREF="history.html#SEC2">History Expansion</A> | |
21 | <UL> | |
22 | <LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A> | |
23 | <LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A> | |
24 | <LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A> | |
25 | </UL> | |
26 | </UL> | |
27 | <LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A> | |
28 | <UL> | |
29 | <LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A> | |
30 | <LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A> | |
31 | <LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A> | |
32 | <UL> | |
33 | <LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A> | |
34 | <LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A> | |
35 | <LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A> | |
36 | <LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A> | |
37 | <LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A> | |
38 | <LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A> | |
39 | <LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A> | |
40 | </UL> | |
41 | <LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A> | |
42 | <LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A> | |
43 | </UL> | |
44 | <LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A> | |
45 | <LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A> | |
46 | </UL> | |
47 | <P><HR><P> | |
48 | ||
49 | <P> | |
50 | This document describes the GNU History library, a programming tool that | |
51 | provides a consistent user interface for recalling lines of previously | |
52 | typed input. | |
53 | ||
54 | </P> | |
55 | <P> | |
56 | Published by the Free Software Foundation <BR> | |
f9267e15 EZ |
57 | 59 Temple Place, Suite 330, <BR> |
58 | Boston, MA 02111 USA | |
a44161c3 EZ |
59 | |
60 | </P> | |
61 | <P> | |
62 | Permission is granted to make and distribute verbatim copies of | |
63 | this manual provided the copyright notice and this permission notice | |
64 | are preserved on all copies. | |
65 | ||
66 | </P> | |
67 | <P> | |
68 | Permission is granted to copy and distribute modified versions of this | |
69 | manual under the conditions for verbatim copying, provided that the entire | |
70 | resulting derived work is distributed under the terms of a permission | |
71 | notice identical to this one. | |
72 | ||
73 | </P> | |
74 | <P> | |
75 | Permission is granted to copy and distribute translations of this manual | |
76 | into another language, under the above conditions for modified versions, | |
77 | except that this permission notice may be stated in a translation approved | |
78 | by the Free Software Foundation. | |
79 | ||
80 | </P> | |
81 | <P> | |
82 | Copyright (C) 1988-1999 Free Software Foundation, Inc. | |
83 | ||
84 | </P> | |
85 | ||
86 | ||
87 | ||
88 | <H1><A NAME="SEC1" HREF="history.html#TOC1">Using History Interactively</A></H1> | |
89 | ||
90 | <P> | |
91 | This chapter describes how to use the GNU History Library interactively, | |
92 | from a user's standpoint. It should be considered a user's guide. For | |
93 | information on using the GNU History Library in your own programs, | |
94 | see section <A HREF="history.html#SEC6">Programming with GNU History</A>. | |
95 | ||
96 | </P> | |
97 | ||
98 | <UL> | |
99 | <LI><A HREF="history.html#SEC2">History Interaction</A>: What it feels like using History as a user. | |
100 | </UL> | |
101 | ||
102 | ||
103 | ||
104 | <H2><A NAME="SEC2" HREF="history.html#TOC2">History Expansion</A></H2> | |
105 | <P> | |
106 | <A NAME="IDX1"></A> | |
107 | ||
108 | </P> | |
109 | <P> | |
110 | The History library provides a history expansion feature that is similar | |
111 | to the history expansion provided by <CODE>csh</CODE>. This section | |
112 | describes the syntax used to manipulate the history information. | |
113 | ||
114 | </P> | |
115 | <P> | |
116 | History expansions introduce words from the history list into | |
117 | the input stream, making it easy to repeat commands, insert the | |
118 | arguments to a previous command into the current input line, or | |
119 | fix errors in previous commands quickly. | |
120 | ||
121 | </P> | |
122 | <P> | |
123 | History expansion takes place in two parts. The first is to determine | |
124 | which line from the history list should be used during substitution. | |
125 | The second is to select portions of that line for inclusion into the | |
126 | current one. The line selected from the history is called the | |
127 | <EM>event</EM>, and the portions of that line that are acted upon are | |
128 | called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate | |
129 | the selected words. The line is broken into words in the same fashion | |
130 | that Bash does, so that several words | |
131 | surrounded by quotes are considered one word. | |
132 | History expansions are introduced by the appearance of the | |
133 | history expansion character, which is <SAMP>`!'</SAMP> by default. | |
134 | ||
135 | </P> | |
136 | ||
137 | ||
138 | <UL> | |
139 | <LI><A HREF="history.html#SEC3">Event Designators</A>: How to specify which history line to use. | |
140 | <LI><A HREF="history.html#SEC4">Word Designators</A>: Specifying which words are of interest. | |
141 | <LI><A HREF="history.html#SEC5">Modifiers</A>: Modifying the results of substitution. | |
142 | </UL> | |
143 | ||
144 | ||
145 | ||
146 | <H3><A NAME="SEC3" HREF="history.html#TOC3">Event Designators</A></H3> | |
147 | <P> | |
148 | <A NAME="IDX2"></A> | |
149 | ||
150 | </P> | |
151 | <P> | |
152 | An event designator is a reference to a command line entry in the | |
153 | history list. | |
154 | <A NAME="IDX3"></A> | |
155 | ||
156 | </P> | |
157 | <DL COMPACT> | |
158 | ||
159 | <DT><CODE>!</CODE> | |
160 | <DD> | |
161 | Start a history substitution, except when followed by a space, tab, | |
162 | the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>. | |
163 | ||
164 | <DT><CODE>!<VAR>n</VAR></CODE> | |
165 | <DD> | |
166 | Refer to command line <VAR>n</VAR>. | |
167 | ||
168 | <DT><CODE>!-<VAR>n</VAR></CODE> | |
169 | <DD> | |
170 | Refer to the command <VAR>n</VAR> lines back. | |
171 | ||
172 | <DT><CODE>!!</CODE> | |
173 | <DD> | |
174 | Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>. | |
175 | ||
176 | <DT><CODE>!<VAR>string</VAR></CODE> | |
177 | <DD> | |
178 | Refer to the most recent command starting with <VAR>string</VAR>. | |
179 | ||
180 | <DT><CODE>!?<VAR>string</VAR>[?]</CODE> | |
181 | <DD> | |
182 | Refer to the most recent command containing <VAR>string</VAR>. The trailing | |
183 | <SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by | |
184 | a newline. | |
185 | ||
186 | <DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE> | |
187 | <DD> | |
188 | Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR> | |
189 | with <VAR>string2</VAR>. Equivalent to | |
190 | <CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>. | |
191 | ||
192 | <DT><CODE>!#</CODE> | |
193 | <DD> | |
194 | The entire command line typed so far. | |
195 | ||
196 | </DL> | |
197 | ||
198 | ||
199 | ||
200 | <H3><A NAME="SEC4" HREF="history.html#TOC4">Word Designators</A></H3> | |
201 | ||
202 | <P> | |
203 | Word designators are used to select desired words from the event. | |
204 | A <SAMP>`:'</SAMP> separates the event specification from the word designator. It | |
205 | may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>, | |
206 | <SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning | |
207 | of the line, with the first word being denoted by 0 (zero). Words are | |
208 | inserted into the current line separated by single spaces. | |
209 | ||
f9267e15 EZ |
210 | </P> |
211 | <P> | |
212 | For example, | |
213 | ||
a44161c3 EZ |
214 | </P> |
215 | <DL COMPACT> | |
216 | ||
f9267e15 EZ |
217 | <DT><CODE>!!</CODE> |
218 | <DD> | |
219 | designates the preceding command. When you type this, the preceding | |
220 | command is repeated in toto. | |
221 | ||
222 | <DT><CODE>!!:$</CODE> | |
223 | <DD> | |
224 | designates the last argument of the preceding command. This may be | |
225 | shortened to <CODE>!$</CODE>. | |
226 | ||
227 | <DT><CODE>!fi:2</CODE> | |
228 | <DD> | |
229 | designates the second argument of the most recent command starting with | |
230 | the letters <CODE>fi</CODE>. | |
231 | </DL> | |
232 | ||
233 | <P> | |
234 | Here are the word designators: | |
235 | ||
236 | <DL COMPACT> | |
237 | ||
a44161c3 EZ |
238 | <DT><CODE>0 (zero)</CODE> |
239 | <DD> | |
240 | The <CODE>0</CODE>th word. For many applications, this is the command word. | |
241 | ||
242 | <DT><CODE><VAR>n</VAR></CODE> | |
243 | <DD> | |
244 | The <VAR>n</VAR>th word. | |
245 | ||
246 | <DT><CODE>^</CODE> | |
247 | <DD> | |
248 | The first argument; that is, word 1. | |
249 | ||
250 | <DT><CODE>$</CODE> | |
251 | <DD> | |
252 | The last argument. | |
253 | ||
254 | <DT><CODE>%</CODE> | |
255 | <DD> | |
256 | The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search. | |
257 | ||
258 | <DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE> | |
259 | <DD> | |
260 | A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>. | |
261 | ||
262 | <DT><CODE>*</CODE> | |
263 | <DD> | |
264 | All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>. | |
265 | It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event; | |
266 | the empty string is returned in that case. | |
267 | ||
268 | <DT><CODE><VAR>x</VAR>*</CODE> | |
269 | <DD> | |
270 | Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> | |
271 | ||
272 | <DT><CODE><VAR>x</VAR>-</CODE> | |
273 | <DD> | |
274 | Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word. | |
275 | ||
276 | </DL> | |
277 | ||
278 | <P> | |
279 | If a word designator is supplied without an event specification, the | |
280 | previous command is used as the event. | |
281 | ||
282 | </P> | |
283 | ||
284 | ||
285 | <H3><A NAME="SEC5" HREF="history.html#TOC5">Modifiers</A></H3> | |
286 | ||
287 | <P> | |
288 | After the optional word designator, you can add a sequence of one or more | |
289 | of the following modifiers, each preceded by a <SAMP>`:'</SAMP>. | |
290 | ||
291 | </P> | |
292 | <DL COMPACT> | |
293 | ||
294 | <DT><CODE>h</CODE> | |
295 | <DD> | |
296 | Remove a trailing pathname component, leaving only the head. | |
297 | ||
298 | <DT><CODE>t</CODE> | |
299 | <DD> | |
300 | Remove all leading pathname components, leaving the tail. | |
301 | ||
302 | <DT><CODE>r</CODE> | |
303 | <DD> | |
304 | Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving | |
305 | the basename. | |
306 | ||
307 | <DT><CODE>e</CODE> | |
308 | <DD> | |
309 | Remove all but the trailing suffix. | |
310 | ||
311 | <DT><CODE>p</CODE> | |
312 | <DD> | |
313 | Print the new command but do not execute it. | |
314 | ||
315 | <DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE> | |
316 | <DD> | |
317 | Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the | |
318 | event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>. | |
319 | The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR> | |
320 | with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>, | |
321 | it is replaced by <VAR>old</VAR>. A single backslash will quote | |
322 | the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last | |
323 | character on the input line. | |
324 | ||
325 | <DT><CODE>&</CODE> | |
326 | <DD> | |
327 | Repeat the previous substitution. | |
328 | ||
329 | <DT><CODE>g</CODE> | |
330 | <DD> | |
331 | Cause changes to be applied over the entire event line. Used in | |
332 | conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>, | |
333 | or with <SAMP>`&'</SAMP>. | |
334 | ||
335 | </DL> | |
336 | ||
337 | ||
338 | ||
339 | <H1><A NAME="SEC6" HREF="history.html#TOC6">Programming with GNU History</A></H1> | |
340 | ||
341 | <P> | |
342 | This chapter describes how to interface programs that you write | |
343 | with the GNU History Library. | |
344 | It should be considered a technical guide. | |
345 | For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">Using History Interactively</A>. | |
346 | ||
347 | </P> | |
348 | ||
349 | <UL> | |
350 | <LI><A HREF="history.html#SEC7">Introduction to History</A>: What is the GNU History library for? | |
351 | <LI><A HREF="history.html#SEC8">History Storage</A>: How information is stored. | |
352 | <LI><A HREF="history.html#SEC9">History Functions</A>: Functions that you can use. | |
353 | <LI><A HREF="history.html#SEC17">History Variables</A>: Variables that control behaviour. | |
354 | <LI><A HREF="history.html#SEC18">History Programming Example</A>: Example of using the GNU History Library. | |
355 | </UL> | |
356 | ||
357 | ||
358 | ||
359 | <H2><A NAME="SEC7" HREF="history.html#TOC7">Introduction to History</A></H2> | |
360 | ||
361 | <P> | |
362 | Many programs read input from the user a line at a time. The GNU History | |
363 | library is able to keep track of those lines, associate arbitrary data with | |
364 | each line, and utilize information from previous lines in composing new | |
365 | ones. | |
366 | ||
367 | </P> | |
368 | <P> | |
369 | The programmer using the History library has available functions | |
370 | for remembering lines on a history list, associating arbitrary data | |
371 | with a line, removing lines from the list, searching through the list | |
372 | for a line containing an arbitrary text string, and referencing any line | |
373 | in the list directly. In addition, a history <EM>expansion</EM> function | |
374 | is available which provides for a consistent user interface across | |
375 | different programs. | |
376 | ||
377 | </P> | |
378 | <P> | |
379 | The user using programs written with the History library has the | |
380 | benefit of a consistent user interface with a set of well-known | |
381 | commands for manipulating the text of previous lines and using that text | |
382 | in new commands. The basic history manipulation commands are similar to | |
383 | the history substitution provided by <CODE>csh</CODE>. | |
384 | ||
385 | </P> | |
386 | <P> | |
387 | If the programmer desires, he can use the Readline library, which | |
388 | includes some history manipulation by default, and has the added | |
389 | advantage of command line editing. | |
390 | ||
f9267e15 EZ |
391 | </P> |
392 | <P> | |
393 | Before declaring any functions using any functionality the History | |
394 | library provides in other code, an application writer should include | |
395 | the file <CODE><readline/history.h></CODE> in any file that uses the | |
396 | History library's features. It supplies extern declarations for all | |
397 | of the library's public functions and variables, and declares all of | |
398 | the public data structures. | |
399 | ||
a44161c3 EZ |
400 | </P> |
401 | ||
402 | ||
403 | <H2><A NAME="SEC8" HREF="history.html#TOC8">History Storage</A></H2> | |
404 | ||
405 | <P> | |
406 | The history list is an array of history entries. A history entry is | |
407 | declared as follows: | |
408 | ||
409 | </P> | |
410 | ||
411 | <PRE> | |
412 | typedef struct _hist_entry { | |
413 | char *line; | |
414 | char *data; | |
415 | } HIST_ENTRY; | |
416 | </PRE> | |
417 | ||
418 | <P> | |
419 | The history list itself might therefore be declared as | |
420 | ||
421 | </P> | |
422 | ||
423 | <PRE> | |
424 | HIST_ENTRY **the_history_list; | |
425 | </PRE> | |
426 | ||
427 | <P> | |
428 | The state of the History library is encapsulated into a single structure: | |
429 | ||
430 | </P> | |
431 | ||
432 | <PRE> | |
433 | /* A structure used to pass the current state of the history stuff around. */ | |
434 | typedef struct _hist_state { | |
435 | HIST_ENTRY **entries; /* Pointer to the entries themselves. */ | |
436 | int offset; /* The location pointer within this array. */ | |
437 | int length; /* Number of elements within this array. */ | |
438 | int size; /* Number of slots allocated to this array. */ | |
439 | int flags; | |
440 | } HISTORY_STATE; | |
441 | </PRE> | |
442 | ||
443 | <P> | |
444 | If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been | |
445 | stifled. | |
446 | ||
447 | </P> | |
448 | ||
449 | ||
450 | <H2><A NAME="SEC9" HREF="history.html#TOC9">History Functions</A></H2> | |
451 | ||
452 | <P> | |
453 | This section describes the calling sequence for the various functions | |
454 | present in GNU History. | |
455 | ||
456 | </P> | |
457 | ||
458 | <UL> | |
459 | <LI><A HREF="history.html#SEC10">Initializing History and State Management</A>: Functions to call when you | |
460 | want to use history in a | |
461 | program. | |
462 | <LI><A HREF="history.html#SEC11">History List Management</A>: Functions used to manage the list | |
463 | of history entries. | |
464 | <LI><A HREF="history.html#SEC12">Information About the History List</A>: Functions returning information about | |
465 | the history list. | |
466 | <LI><A HREF="history.html#SEC13">Moving Around the History List</A>: Functions used to change the position | |
467 | in the history list. | |
468 | <LI><A HREF="history.html#SEC14">Searching the History List</A>: Functions to search the history list | |
469 | for entries containing a string. | |
470 | <LI><A HREF="history.html#SEC15">Managing the History File</A>: Functions that read and write a file | |
471 | containing the history list. | |
472 | <LI><A HREF="history.html#SEC16">History Expansion</A>: Functions to perform csh-like history | |
473 | expansion. | |
474 | </UL> | |
475 | ||
476 | ||
477 | ||
478 | <H3><A NAME="SEC10" HREF="history.html#TOC10">Initializing History and State Management</A></H3> | |
479 | ||
480 | <P> | |
481 | This section describes functions used to initialize and manage | |
482 | the state of the History library when you want to use the history | |
483 | functions in your program. | |
484 | ||
485 | </P> | |
486 | <P> | |
487 | <DL> | |
488 | <DT><U>Function:</U> void <B>using_history</B> <I>()</I> | |
489 | <DD><A NAME="IDX4"></A> | |
490 | Begin a session in which the history functions might be used. This | |
491 | initializes the interactive variables. | |
492 | </DL> | |
493 | ||
494 | </P> | |
495 | <P> | |
496 | <DL> | |
497 | <DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>()</I> | |
498 | <DD><A NAME="IDX5"></A> | |
499 | Return a structure describing the current state of the input history. | |
500 | </DL> | |
501 | ||
502 | </P> | |
503 | <P> | |
504 | <DL> | |
505 | <DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I> | |
506 | <DD><A NAME="IDX6"></A> | |
507 | Set the state of the history list according to <VAR>state</VAR>. | |
508 | </DL> | |
509 | ||
510 | </P> | |
511 | ||
512 | ||
513 | <H3><A NAME="SEC11" HREF="history.html#TOC11">History List Management</A></H3> | |
514 | ||
515 | <P> | |
516 | These functions manage individual entries on the history list, or set | |
517 | parameters managing the list itself. | |
518 | ||
519 | </P> | |
520 | <P> | |
521 | <DL> | |
522 | <DT><U>Function:</U> void <B>add_history</B> <I>(char *string)</I> | |
523 | <DD><A NAME="IDX7"></A> | |
524 | Place <VAR>string</VAR> at the end of the history list. The associated data | |
525 | field (if any) is set to <CODE>NULL</CODE>. | |
526 | </DL> | |
527 | ||
528 | </P> | |
529 | <P> | |
530 | <DL> | |
531 | <DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I> | |
532 | <DD><A NAME="IDX8"></A> | |
533 | Remove history entry at offset <VAR>which</VAR> from the history. The | |
534 | removed element is returned so you can free the line, data, | |
535 | and containing structure. | |
536 | </DL> | |
537 | ||
538 | </P> | |
539 | <P> | |
540 | <DL> | |
541 | <DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, char *line, char *data)</I> | |
542 | <DD><A NAME="IDX9"></A> | |
543 | Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>. | |
544 | This returns the old entry so you can dispose of the data. In the case | |
545 | of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned. | |
546 | </DL> | |
547 | ||
548 | </P> | |
549 | <P> | |
550 | <DL> | |
551 | <DT><U>Function:</U> void <B>clear_history</B> <I>()</I> | |
552 | <DD><A NAME="IDX10"></A> | |
553 | Clear the history list by deleting all the entries. | |
554 | </DL> | |
555 | ||
556 | </P> | |
557 | <P> | |
558 | <DL> | |
559 | <DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I> | |
560 | <DD><A NAME="IDX11"></A> | |
561 | Stifle the history list, remembering only the last <VAR>max</VAR> entries. | |
562 | </DL> | |
563 | ||
564 | </P> | |
565 | <P> | |
566 | <DL> | |
567 | <DT><U>Function:</U> int <B>unstifle_history</B> <I>()</I> | |
568 | <DD><A NAME="IDX12"></A> | |
569 | Stop stifling the history. This returns the previous amount the | |
570 | history was stifled. The value is positive if the history was | |
571 | stifled, negative if it wasn't. | |
572 | </DL> | |
573 | ||
574 | </P> | |
575 | <P> | |
576 | <DL> | |
577 | <DT><U>Function:</U> int <B>history_is_stifled</B> <I>()</I> | |
578 | <DD><A NAME="IDX13"></A> | |
579 | Returns non-zero if the history is stifled, zero if it is not. | |
580 | </DL> | |
581 | ||
582 | </P> | |
583 | ||
584 | ||
585 | <H3><A NAME="SEC12" HREF="history.html#TOC12">Information About the History List</A></H3> | |
586 | ||
587 | <P> | |
588 | These functions return information about the entire history list or | |
589 | individual list entries. | |
590 | ||
591 | </P> | |
592 | <P> | |
593 | <DL> | |
594 | <DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>()</I> | |
595 | <DD><A NAME="IDX14"></A> | |
596 | Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY</CODE> which is the | |
597 | current input history. Element 0 of this list is the beginning of time. | |
598 | If there is no history, return <CODE>NULL</CODE>. | |
599 | </DL> | |
600 | ||
601 | </P> | |
602 | <P> | |
603 | <DL> | |
604 | <DT><U>Function:</U> int <B>where_history</B> <I>()</I> | |
605 | <DD><A NAME="IDX15"></A> | |
606 | Returns the offset of the current history element. | |
607 | </DL> | |
608 | ||
609 | </P> | |
610 | <P> | |
611 | <DL> | |
612 | <DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>()</I> | |
613 | <DD><A NAME="IDX16"></A> | |
614 | Return the history entry at the current position, as determined by | |
615 | <CODE>where_history ()</CODE>. If there is no entry there, return a <CODE>NULL</CODE> | |
616 | pointer. | |
617 | </DL> | |
618 | ||
619 | </P> | |
620 | <P> | |
621 | <DL> | |
622 | <DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I> | |
623 | <DD><A NAME="IDX17"></A> | |
624 | Return the history entry at position <VAR>offset</VAR>, starting from | |
625 | <CODE>history_base</CODE>. If there is no entry there, or if <VAR>offset</VAR> | |
626 | is greater than the history length, return a <CODE>NULL</CODE> pointer. | |
627 | </DL> | |
628 | ||
629 | </P> | |
630 | <P> | |
631 | <DL> | |
632 | <DT><U>Function:</U> int <B>history_total_bytes</B> <I>()</I> | |
633 | <DD><A NAME="IDX18"></A> | |
634 | Return the number of bytes that the primary history entries are using. | |
635 | This function returns the sum of the lengths of all the lines in the | |
636 | history. | |
637 | </DL> | |
638 | ||
639 | </P> | |
640 | ||
641 | ||
642 | <H3><A NAME="SEC13" HREF="history.html#TOC13">Moving Around the History List</A></H3> | |
643 | ||
644 | <P> | |
645 | These functions allow the current index into the history list to be | |
646 | set or changed. | |
647 | ||
648 | </P> | |
649 | <P> | |
650 | <DL> | |
651 | <DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I> | |
652 | <DD><A NAME="IDX19"></A> | |
653 | Set the position in the history list to <VAR>pos</VAR>, an absolute index | |
654 | into the list. | |
655 | </DL> | |
656 | ||
657 | </P> | |
658 | <P> | |
659 | <DL> | |
660 | <DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>()</I> | |
661 | <DD><A NAME="IDX20"></A> | |
662 | Back up the current history offset to the previous history entry, and | |
663 | return a pointer to that entry. If there is no previous entry, return | |
664 | a <CODE>NULL</CODE> pointer. | |
665 | </DL> | |
666 | ||
667 | </P> | |
668 | <P> | |
669 | <DL> | |
670 | <DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>()</I> | |
671 | <DD><A NAME="IDX21"></A> | |
672 | Move the current history offset forward to the next history entry, and | |
673 | return the a pointer to that entry. If there is no next entry, return | |
674 | a <CODE>NULL</CODE> pointer. | |
675 | </DL> | |
676 | ||
677 | </P> | |
678 | ||
679 | ||
680 | <H3><A NAME="SEC14" HREF="history.html#TOC14">Searching the History List</A></H3> | |
681 | <P> | |
682 | <A NAME="IDX22"></A> | |
683 | ||
684 | </P> | |
685 | <P> | |
686 | These functions allow searching of the history list for entries containing | |
687 | a specific string. Searching may be performed both forward and backward | |
688 | from the current history position. The search may be <EM>anchored</EM>, | |
689 | meaning that the string must match at the beginning of the history entry. | |
690 | <A NAME="IDX23"></A> | |
691 | ||
692 | </P> | |
693 | <P> | |
694 | <DL> | |
695 | <DT><U>Function:</U> int <B>history_search</B> <I>(char *string, int direction)</I> | |
696 | <DD><A NAME="IDX24"></A> | |
697 | Search the history for <VAR>string</VAR>, starting at the current history | |
698 | offset. If <VAR>direction</VAR> < 0, then the search is through previous entries, | |
699 | else through subsequent. If <VAR>string</VAR> is found, then | |
700 | the current history index is set to that history entry, and the value | |
701 | returned is the offset in the line of the entry where | |
702 | <VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is | |
703 | returned. | |
704 | </DL> | |
705 | ||
706 | </P> | |
707 | <P> | |
708 | <DL> | |
709 | <DT><U>Function:</U> int <B>history_search_prefix</B> <I>(char *string, int direction)</I> | |
710 | <DD><A NAME="IDX25"></A> | |
711 | Search the history for <VAR>string</VAR>, starting at the current history | |
712 | offset. The search is anchored: matching lines must begin with | |
713 | <VAR>string</VAR>. If <VAR>direction</VAR> < 0, then the search is through previous | |
714 | entries, else through subsequent. If <VAR>string</VAR> is found, then the | |
715 | current history index is set to that entry, and the return value is 0. | |
716 | Otherwise, nothing is changed, and a -1 is returned. | |
717 | </DL> | |
718 | ||
719 | </P> | |
720 | <P> | |
721 | <DL> | |
722 | <DT><U>Function:</U> int <B>history_search_pos</B> <I>(char *string, int direction, int pos)</I> | |
723 | <DD><A NAME="IDX26"></A> | |
724 | Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an | |
725 | absolute index into the list. If <VAR>direction</VAR> is negative, the search | |
726 | proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute | |
727 | index of the history element where <VAR>string</VAR> was found, or -1 otherwise. | |
728 | </DL> | |
729 | ||
730 | </P> | |
731 | ||
732 | ||
733 | <H3><A NAME="SEC15" HREF="history.html#TOC15">Managing the History File</A></H3> | |
734 | ||
735 | <P> | |
736 | The History library can read the history from and write it to a file. | |
737 | This section documents the functions for managing a history file. | |
738 | ||
739 | </P> | |
740 | <P> | |
741 | <DL> | |
742 | <DT><U>Function:</U> int <B>read_history</B> <I>(char *filename)</I> | |
743 | <DD><A NAME="IDX27"></A> | |
744 | Add the contents of <VAR>filename</VAR> to the history list, a line at a | |
745 | time. If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from | |
746 | <TT>`~/.history'</TT>. Returns 0 if successful, or errno if not. | |
747 | </DL> | |
748 | ||
749 | </P> | |
750 | <P> | |
751 | <DL> | |
752 | <DT><U>Function:</U> int <B>read_history_range</B> <I>(char *filename, int from, int to)</I> | |
753 | <DD><A NAME="IDX28"></A> | |
754 | Read a range of lines from <VAR>filename</VAR>, adding them to the history list. | |
755 | Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>. If | |
756 | <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than | |
757 | <VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is | |
758 | <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful, | |
759 | or <CODE>errno</CODE> if not. | |
760 | </DL> | |
761 | ||
762 | </P> | |
763 | <P> | |
764 | <DL> | |
765 | <DT><U>Function:</U> int <B>write_history</B> <I>(char *filename)</I> | |
766 | <DD><A NAME="IDX29"></A> | |
767 | Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR> | |
768 | if necessary. If <VAR>filename</VAR> is | |
769 | <CODE>NULL</CODE>, then write the history list to <TT>`~/.history'</TT>. Values | |
770 | returned are as in <CODE>read_history ()</CODE>. | |
771 | </DL> | |
772 | ||
773 | </P> | |
774 | <P> | |
775 | <DL> | |
776 | <DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, char *filename)</I> | |
777 | <DD><A NAME="IDX30"></A> | |
778 | Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>. | |
779 | </DL> | |
780 | ||
781 | </P> | |
782 | <P> | |
783 | <DL> | |
784 | <DT><U>Function:</U> int <B>history_truncate_file</B> <I>(char *filename, int nlines)</I> | |
785 | <DD><A NAME="IDX31"></A> | |
786 | Truncate the history file <VAR>filename</VAR>, leaving only the last | |
787 | <VAR>nlines</VAR> lines. | |
788 | </DL> | |
789 | ||
790 | </P> | |
791 | ||
792 | ||
793 | <H3><A NAME="SEC16" HREF="history.html#TOC16">History Expansion</A></H3> | |
794 | ||
795 | <P> | |
796 | These functions implement <CODE>csh</CODE>-like history expansion. | |
797 | ||
798 | </P> | |
799 | <P> | |
800 | <DL> | |
801 | <DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I> | |
802 | <DD><A NAME="IDX32"></A> | |
803 | Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer | |
804 | to a string (see section <A HREF="history.html#SEC2">History Expansion</A>). Returns: | |
805 | <DL COMPACT> | |
806 | ||
807 | <DT><CODE>0</CODE> | |
808 | <DD> | |
809 | If no expansions took place (or, if the only change in | |
810 | the text was the de-slashifying of the history expansion | |
811 | character); | |
812 | <DT><CODE>1</CODE> | |
813 | <DD> | |
814 | if expansions did take place; | |
815 | <DT><CODE>-1</CODE> | |
816 | <DD> | |
817 | if there was an error in expansion; | |
818 | <DT><CODE>2</CODE> | |
819 | <DD> | |
f9267e15 | 820 | if the returned line should be displayed, but not executed, |
a44161c3 EZ |
821 | as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">Modifiers</A>). |
822 | </DL> | |
823 | ||
824 | <P> | |
825 | If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive | |
826 | error message. | |
827 | </DL> | |
828 | ||
829 | </P> | |
830 | <P> | |
831 | <DL> | |
832 | <DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, char *string)</I> | |
833 | <DD><A NAME="IDX33"></A> | |
834 | Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR> | |
835 | arguments present in <VAR>string</VAR>. Arguments are broken up as in Bash. | |
836 | </DL> | |
837 | ||
838 | </P> | |
839 | <P> | |
840 | <DL> | |
841 | <DT><U>Function:</U> char * <B>get_history_event</B> <I>(char *string, int *cindex, int qchar)</I> | |
842 | <DD><A NAME="IDX34"></A> | |
843 | Returns the text of the history event beginning at <VAR>string</VAR> + | |
844 | <VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event | |
845 | specifier. At function entry, <VAR>cindex</VAR> points to the index into | |
846 | <VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR> | |
847 | is a character that is allowed to end the event specification in addition | |
848 | to the "normal" terminating characters. | |
849 | </DL> | |
850 | ||
851 | </P> | |
852 | <P> | |
853 | <DL> | |
854 | <DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(char *string)</I> | |
855 | <DD><A NAME="IDX35"></A> | |
856 | Return an array of tokens parsed out of <VAR>string</VAR>, much as the | |
857 | shell might. The tokens are split on white space and on the | |
858 | characters <CODE>()<>;&|$</CODE>, and shell quoting conventions are | |
859 | obeyed. | |
860 | </DL> | |
861 | ||
862 | </P> | |
863 | ||
864 | ||
865 | <H2><A NAME="SEC17" HREF="history.html#TOC17">History Variables</A></H2> | |
866 | ||
867 | <P> | |
868 | This section describes the externally visible variables exported by | |
869 | the GNU History Library. | |
870 | ||
871 | </P> | |
872 | <P> | |
873 | <DL> | |
874 | <DT><U>Variable:</U> int <B>history_base</B> | |
875 | <DD><A NAME="IDX36"></A> | |
876 | The logical offset of the first entry in the history list. | |
877 | </DL> | |
878 | ||
879 | </P> | |
880 | <P> | |
881 | <DL> | |
882 | <DT><U>Variable:</U> int <B>history_length</B> | |
883 | <DD><A NAME="IDX37"></A> | |
884 | The number of entries currently stored in the history list. | |
885 | </DL> | |
886 | ||
887 | </P> | |
888 | <P> | |
889 | <DL> | |
890 | <DT><U>Variable:</U> int <B>max_input_history</B> | |
891 | <DD><A NAME="IDX38"></A> | |
892 | The maximum number of history entries. This must be changed using | |
893 | <CODE>stifle_history ()</CODE>. | |
894 | </DL> | |
895 | ||
896 | </P> | |
897 | <P> | |
898 | <DL> | |
899 | <DT><U>Variable:</U> char <B>history_expansion_char</B> | |
900 | <DD><A NAME="IDX39"></A> | |
901 | The character that starts a history event. The default is <SAMP>`!'</SAMP>. | |
902 | </DL> | |
903 | ||
904 | </P> | |
905 | <P> | |
906 | <DL> | |
907 | <DT><U>Variable:</U> char <B>history_subst_char</B> | |
908 | <DD><A NAME="IDX40"></A> | |
909 | The character that invokes word substitution if found at the start of | |
910 | a line. The default is <SAMP>`^'</SAMP>. | |
911 | </DL> | |
912 | ||
913 | </P> | |
914 | <P> | |
915 | <DL> | |
916 | <DT><U>Variable:</U> char <B>history_comment_char</B> | |
917 | <DD><A NAME="IDX41"></A> | |
918 | During tokenization, if this character is seen as the first character | |
919 | of a word, then it and all subsequent characters up to a newline are | |
920 | ignored, suppressing history expansion for the remainder of the line. | |
921 | This is disabled by default. | |
922 | </DL> | |
923 | ||
924 | </P> | |
925 | <P> | |
926 | <DL> | |
927 | <DT><U>Variable:</U> char * <B>history_no_expand_chars</B> | |
928 | <DD><A NAME="IDX42"></A> | |
929 | The list of characters which inhibit history expansion if found immediately | |
930 | following <VAR>history_expansion_char</VAR>. The default is whitespace and | |
931 | <SAMP>`='</SAMP>. | |
932 | </DL> | |
933 | ||
934 | </P> | |
935 | <P> | |
936 | <DL> | |
937 | <DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B> | |
938 | <DD><A NAME="IDX43"></A> | |
939 | The list of additional characters which can delimit a history search | |
940 | string, in addition to whitespace, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of | |
941 | a substring search. The default is empty. | |
942 | </DL> | |
943 | ||
944 | </P> | |
945 | <P> | |
946 | <DL> | |
947 | <DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B> | |
948 | <DD><A NAME="IDX44"></A> | |
949 | If non-zero, single-quoted words are not scanned for the history expansion | |
950 | character. The default value is 0. | |
951 | </DL> | |
952 | ||
953 | </P> | |
954 | <P> | |
955 | <DL> | |
956 | <DT><U>Variable:</U> Function * <B>history_inhibit_expansion_function</B> | |
957 | <DD><A NAME="IDX45"></A> | |
958 | This should be set to the address of a function that takes two arguments: | |
959 | a <CODE>char *</CODE> (<VAR>string</VAR>) and an integer index into that string (<VAR>i</VAR>). | |
960 | It should return a non-zero value if the history expansion starting at | |
961 | <VAR>string[i]</VAR> should not be performed; zero if the expansion should | |
962 | be done. | |
963 | It is intended for use by applications like Bash that use the history | |
964 | expansion character for additional purposes. | |
965 | By default, this variable is set to NULL. | |
966 | </DL> | |
967 | ||
968 | </P> | |
969 | ||
970 | ||
971 | <H2><A NAME="SEC18" HREF="history.html#TOC18">History Programming Example</A></H2> | |
972 | ||
973 | <P> | |
974 | The following program demonstrates simple use of the GNU History Library. | |
975 | ||
976 | </P> | |
977 | ||
978 | <PRE> | |
979 | main () | |
980 | { | |
981 | char line[1024], *t; | |
982 | int len, done = 0; | |
983 | ||
984 | line[0] = 0; | |
985 | ||
986 | using_history (); | |
987 | while (!done) | |
988 | { | |
989 | printf ("history$ "); | |
990 | fflush (stdout); | |
991 | t = fgets (line, sizeof (line) - 1, stdin); | |
992 | if (t && *t) | |
993 | { | |
994 | len = strlen (t); | |
995 | if (t[len - 1] == '\n') | |
996 | t[len - 1] = '\0'; | |
997 | } | |
998 | ||
999 | if (!t) | |
1000 | strcpy (line, "quit"); | |
1001 | ||
1002 | if (line[0]) | |
1003 | { | |
1004 | char *expansion; | |
1005 | int result; | |
1006 | ||
1007 | result = history_expand (line, &expansion); | |
1008 | if (result) | |
1009 | fprintf (stderr, "%s\n", expansion); | |
1010 | ||
1011 | if (result < 0 || result == 2) | |
1012 | { | |
1013 | free (expansion); | |
1014 | continue; | |
1015 | } | |
1016 | ||
1017 | add_history (expansion); | |
1018 | strncpy (line, expansion, sizeof (line) - 1); | |
1019 | free (expansion); | |
1020 | } | |
1021 | ||
1022 | if (strcmp (line, "quit") == 0) | |
1023 | done = 1; | |
1024 | else if (strcmp (line, "save") == 0) | |
1025 | write_history ("history_file"); | |
1026 | else if (strcmp (line, "read") == 0) | |
1027 | read_history ("history_file"); | |
1028 | else if (strcmp (line, "list") == 0) | |
1029 | { | |
1030 | register HIST_ENTRY **the_list; | |
1031 | register int i; | |
1032 | ||
1033 | the_list = history_list (); | |
1034 | if (the_list) | |
1035 | for (i = 0; the_list[i]; i++) | |
1036 | printf ("%d: %s\n", i + history_base, the_list[i]->line); | |
1037 | } | |
1038 | else if (strncmp (line, "delete", 6) == 0) | |
1039 | { | |
1040 | int which; | |
1041 | if ((sscanf (line + 6, "%d", &which)) == 1) | |
1042 | { | |
1043 | HIST_ENTRY *entry = remove_history (which); | |
1044 | if (!entry) | |
1045 | fprintf (stderr, "No such entry %d\n", which); | |
1046 | else | |
1047 | { | |
1048 | free (entry->line); | |
1049 | free (entry); | |
1050 | } | |
1051 | } | |
1052 | else | |
1053 | { | |
1054 | fprintf (stderr, "non-numeric arg given to `delete'\n"); | |
1055 | } | |
1056 | } | |
1057 | } | |
1058 | } | |
1059 | </PRE> | |
1060 | ||
1061 | ||
1062 | ||
1063 | <H1><A NAME="SEC19" HREF="history.html#TOC19">Concept Index</A></H1> | |
1064 | <P> | |
1065 | Jump to: | |
f9267e15 | 1066 | <A HREF="#cindex_a">a</A> |
a44161c3 | 1067 | - |
f9267e15 | 1068 | <A HREF="#cindex_e">e</A> |
a44161c3 | 1069 | - |
f9267e15 | 1070 | <A HREF="#cindex_h">h</A> |
a44161c3 | 1071 | <P> |
f9267e15 | 1072 | <H2><A NAME="cindex_a">a</A></H2> |
a44161c3 EZ |
1073 | <DIR> |
1074 | <LI><A HREF="history.html#IDX23">anchored search</A> | |
1075 | </DIR> | |
f9267e15 | 1076 | <H2><A NAME="cindex_e">e</A></H2> |
a44161c3 EZ |
1077 | <DIR> |
1078 | <LI><A HREF="history.html#IDX2">event designators</A> | |
1079 | </DIR> | |
f9267e15 | 1080 | <H2><A NAME="cindex_h">h</A></H2> |
a44161c3 EZ |
1081 | <DIR> |
1082 | <LI><A HREF="history.html#IDX3">history events</A> | |
1083 | <LI><A HREF="history.html#IDX1">history expansion</A> | |
1084 | <LI><A HREF="history.html#IDX22">History Searching</A> | |
1085 | </DIR> | |
1086 | ||
1087 | </P> | |
1088 | ||
1089 | ||
1090 | <H1><A NAME="SEC20" HREF="history.html#TOC20">Function and Variable Index</A></H1> | |
1091 | <P> | |
1092 | Jump to: | |
f9267e15 | 1093 | <A HREF="#vindex_a">a</A> |
a44161c3 | 1094 | - |
f9267e15 | 1095 | <A HREF="#vindex_c">c</A> |
a44161c3 | 1096 | - |
f9267e15 | 1097 | <A HREF="#vindex_g">g</A> |
a44161c3 | 1098 | - |
f9267e15 | 1099 | <A HREF="#vindex_h">h</A> |
a44161c3 | 1100 | - |
f9267e15 | 1101 | <A HREF="#vindex_m">m</A> |
a44161c3 | 1102 | - |
f9267e15 | 1103 | <A HREF="#vindex_n">n</A> |
a44161c3 | 1104 | - |
f9267e15 | 1105 | <A HREF="#vindex_p">p</A> |
a44161c3 | 1106 | - |
f9267e15 | 1107 | <A HREF="#vindex_r">r</A> |
a44161c3 | 1108 | - |
f9267e15 | 1109 | <A HREF="#vindex_s">s</A> |
a44161c3 | 1110 | - |
f9267e15 | 1111 | <A HREF="#vindex_u">u</A> |
a44161c3 | 1112 | - |
f9267e15 | 1113 | <A HREF="#vindex_w">w</A> |
a44161c3 | 1114 | <P> |
f9267e15 | 1115 | <H2><A NAME="vindex_a">a</A></H2> |
a44161c3 EZ |
1116 | <DIR> |
1117 | <LI><A HREF="history.html#IDX7">add_history</A> | |
1118 | <LI><A HREF="history.html#IDX30">append_history</A> | |
1119 | </DIR> | |
f9267e15 | 1120 | <H2><A NAME="vindex_c">c</A></H2> |
a44161c3 EZ |
1121 | <DIR> |
1122 | <LI><A HREF="history.html#IDX10">clear_history</A> | |
1123 | <LI><A HREF="history.html#IDX16">current_history</A> | |
1124 | </DIR> | |
f9267e15 | 1125 | <H2><A NAME="vindex_g">g</A></H2> |
a44161c3 EZ |
1126 | <DIR> |
1127 | <LI><A HREF="history.html#IDX34">get_history_event</A> | |
1128 | </DIR> | |
f9267e15 | 1129 | <H2><A NAME="vindex_h">h</A></H2> |
a44161c3 EZ |
1130 | <DIR> |
1131 | <LI><A HREF="history.html#IDX33">history_arg_extract</A> | |
1132 | <LI><A HREF="history.html#IDX36">history_base</A> | |
1133 | <LI><A HREF="history.html#IDX41">history_comment_char</A> | |
1134 | <LI><A HREF="history.html#IDX32">history_expand</A> | |
1135 | <LI><A HREF="history.html#IDX39">history_expansion_char</A> | |
1136 | <LI><A HREF="history.html#IDX17">history_get</A> | |
1137 | <LI><A HREF="history.html#IDX5">history_get_history_state</A> | |
1138 | <LI><A HREF="history.html#IDX45">history_inhibit_expansion_function</A> | |
1139 | <LI><A HREF="history.html#IDX13">history_is_stifled</A> | |
1140 | <LI><A HREF="history.html#IDX37">history_length</A> | |
1141 | <LI><A HREF="history.html#IDX14">history_list</A> | |
1142 | <LI><A HREF="history.html#IDX42">history_no_expand_chars</A> | |
1143 | <LI><A HREF="history.html#IDX44">history_quotes_inhibit_expansion</A> | |
1144 | <LI><A HREF="history.html#IDX24">history_search</A> | |
1145 | <LI><A HREF="history.html#IDX43">history_search_delimiter_chars</A> | |
1146 | <LI><A HREF="history.html#IDX26">history_search_pos</A> | |
1147 | <LI><A HREF="history.html#IDX25">history_search_prefix</A> | |
1148 | <LI><A HREF="history.html#IDX6">history_set_history_state</A> | |
1149 | <LI><A HREF="history.html#IDX19">history_set_pos</A> | |
1150 | <LI><A HREF="history.html#IDX40">history_subst_char</A> | |
1151 | <LI><A HREF="history.html#IDX35">history_tokenize</A> | |
1152 | <LI><A HREF="history.html#IDX18">history_total_bytes</A> | |
1153 | <LI><A HREF="history.html#IDX31">history_truncate_file</A> | |
1154 | </DIR> | |
f9267e15 | 1155 | <H2><A NAME="vindex_m">m</A></H2> |
a44161c3 EZ |
1156 | <DIR> |
1157 | <LI><A HREF="history.html#IDX38">max_input_history</A> | |
1158 | </DIR> | |
f9267e15 | 1159 | <H2><A NAME="vindex_n">n</A></H2> |
a44161c3 EZ |
1160 | <DIR> |
1161 | <LI><A HREF="history.html#IDX21">next_history</A> | |
1162 | </DIR> | |
f9267e15 | 1163 | <H2><A NAME="vindex_p">p</A></H2> |
a44161c3 EZ |
1164 | <DIR> |
1165 | <LI><A HREF="history.html#IDX20">previous_history</A> | |
1166 | </DIR> | |
f9267e15 | 1167 | <H2><A NAME="vindex_r">r</A></H2> |
a44161c3 EZ |
1168 | <DIR> |
1169 | <LI><A HREF="history.html#IDX27">read_history</A> | |
1170 | <LI><A HREF="history.html#IDX28">read_history_range</A> | |
1171 | <LI><A HREF="history.html#IDX8">remove_history</A> | |
1172 | <LI><A HREF="history.html#IDX9">replace_history_entry</A> | |
1173 | </DIR> | |
f9267e15 | 1174 | <H2><A NAME="vindex_s">s</A></H2> |
a44161c3 EZ |
1175 | <DIR> |
1176 | <LI><A HREF="history.html#IDX11">stifle_history</A> | |
1177 | </DIR> | |
f9267e15 | 1178 | <H2><A NAME="vindex_u">u</A></H2> |
a44161c3 EZ |
1179 | <DIR> |
1180 | <LI><A HREF="history.html#IDX12">unstifle_history</A> | |
1181 | <LI><A HREF="history.html#IDX4">using_history</A> | |
1182 | </DIR> | |
f9267e15 | 1183 | <H2><A NAME="vindex_w">w</A></H2> |
a44161c3 EZ |
1184 | <DIR> |
1185 | <LI><A HREF="history.html#IDX15">where_history</A> | |
1186 | <LI><A HREF="history.html#IDX29">write_history</A> | |
1187 | </DIR> | |
1188 | ||
1189 | </P> | |
1190 | <P><HR><P> | |
f9267e15 | 1191 | This document was generated on 19 January 2000 using the |
a44161c3 EZ |
1192 | <A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> |
1193 | translator version 1.52.</P> | |
1194 | </BODY> | |
1195 | </HTML> |