%!PS-Adobe-3.0
%%Creator: groff version 1.18.1
%%CreationDate: Mon Sep 22 09:15:44 2003
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.18 1
%%Pages: 7
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.18 1
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/Fk{
setcmykcolor fill
}bind def
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/Ck/setcmykcolor load def
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
/Times-Roman@0 ENC0/Times-Roman RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME)
.219 E F0(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72
112.8 Q F0(The GNU History Library is Cop)108 124.8 Q
(yright \251 1989-2002 by the Free Softw)-.1 E(are F)-.1 E
(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q
2.81(yp)-.15 G .31(rograms read input from the user a line at a time.)
-2.81 F .309(The GNU History library is able to k)5.309 F .309
(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\
h line, and utilize information from pre)108 165.6 R .024
(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5
E F1(HIST)72 199.2 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
E F0 .823(The history library supports a history e)108 211.2 R .822
(xpansion feature that is identical to the history e)-.15 F .822
(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0
(This section describes what syntax features are a)108 223.2 Q -.25(va)
-.2 G(ilable.).25 E 1.305(History e)108 240 R 1.305
(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
 input stream, making it easy to repeat)-.1 F .21
(commands, insert the ar)108 252 R .21(guments to a pre)-.18 F .209
(vious command into the current input line, or \214x errors in pre)-.25
F(vious)-.25 E(commands quickly)108 264 Q(.)-.65 E 1.296(History e)108
280.8 R 1.297(xpansion is usually performed immediately after a complet\
e line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F
(o)-.1 E 2.855(parts. The)108 292.8 R .354(\214rst is to determine whic\
h line from the history list to use during substitution.)2.855 F .354
(The second is to)5.354 F .116
(select portions of that line for inclusion into the current one.)108
304.8 R .117(The line selected from the history is the)5.116 F/F3 10
/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846
(and the portions of that line that are acted upon are)108 316.8 R F3
(wor)3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346
E(s)-.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate)
.25 F .304(the selected w)108 328.8 R 2.804(ords. The)-.1 F .304
(line is brok)2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F
.304(ashion as)-.1 F F2(bash)2.804 E F0 .305
(does when reading input, so)2.804 F .539(that se)108 340.8 R -.15(ve)
-.25 G .539(ral w).15 F .539(ords that w)-.1 F .539
(ould otherwise be separated are considered one w)-.1 F .538
(ord when surrounded by quotes)-.1 F .307(\(see the description of)108
352.8 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807
(w\). History)-.25 F -.15(ex)2.807 G .307
(pansions are introduced by the appearance of).15 F .52(the history e)
108 364.8 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)
-3.02 F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52
(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52
(nd single quotes can quote the)-3.02 F(history e)108 376.8 Q
(xpansion character)-.15 E(.)-.55 E F2(Ev)87 393.6 Q(ent Designators)-.1
E F0(An e)108 405.6 Q -.15(ve)-.25 G(nt designator is a reference to a \
command line entry in the history list.).15 E F2(!)108 422.4 Q F0
(Start a history substitution, e)32.67 E(xcept when follo)-.15 E
(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G
(line, = or \(.).25 E F2(!)108 434.4 Q F3(n)A F0(Refer to command line)
27.67 E F3(n)2.5 E F0(.).24 E F2<21ad>108 446.4 Q F3(n)A F0
(Refer to the current command line minus)21.97 E F3(n)2.5 E F0(.).24 E
F2(!!)108 458.4 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E
(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 470.4 Q F3(string)
A F0(Refer to the most recent command starting with)9.33 E F3(string)2.5
E F0(.).22 E F2(!?)108 482.4 Q F3(string)A F2([?])A F0 1.022
(Refer to the most recent command containing)144 494.4 R F3(string)3.522
E F0 6.022(.T).22 G 1.022(he trailing)-6.022 F F2(?)3.522 E F0 1.022
(may be omitted if)3.522 F F3(string)3.862 E F0(is)3.742 E(follo)144
506.4 Q(wed immediately by a ne)-.25 E(wline.)-.25 E/F4 12/Times-Bold@0
SF(^)108 523.4 Q F3(string1)-5 I F4(^)5 I F3(string2)-5 I F4(^)5 I F0
2.63(Quick substitution.)144 530.4 R 2.629
(Repeat the last command, replacing)7.629 F F3(string1)5.469 E F0(with)
5.129 E F3(string2)5.129 E F0 7.629(.E).02 G(qui)-7.629 E -.25(va)-.25 G
2.629(lent to).25 F -.74(``)144 542.4 S(!!:s/).74 E F3(string1)A F0(/)A
F3(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0
(belo)2.5 E(w\).)-.25 E F2(!#)108 554.4 Q F0
(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75
(Wo)87 571.2 S(rd Designators).75 E F0 -.8(Wo)108 583.2 S 1.313
(rd designators are used to select desired w).8 F 1.314(ords from the e)
-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314
(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F
.53(from the w)108 595.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G
3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
-3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3
(are numbered from the be)108 607.2 R 1.3
(ginning of the line, with the \214rst w)-.15 F 1.301
(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8
F(inserted into the current line separated by single spaces.)108 619.2 Q
F2 2.5(0\()108 636 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 648 Q 2.5
(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F3
(n)108.36 660 Q F0(The)30.64 E F3(n)2.5 E F0(th w)A(ord.)-.1 E F2(^)108
672 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E
(ord 1.)-.1 E F2($)108 684 Q F0(The last ar)31 E(gument.)-.18 E F2(%)108
696 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F3(string)A
F0(?' search.)A F3(x)108.77 708 Q F2<ad>A F3(y)A F0 2.5(Ar)20.65 G
(ange of w)-2.5 E(ords; `\255)-.1 E F3(y)A F0 2.5('a)C(bbre)-2.5 E
(viates `0\255)-.25 E F3(y)A F0('.)A(GNU History 5.0)72 768 Q
(2003 July 31)139.005 E(1)203.165 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(*)108 84 Q F0 .316
(All of the w)31 F .316(ords b)-.1 F .316(ut the zeroth.)-.2 F .315
(This is a synon)5.315 F .315(ym for `)-.15 F/F2 10/Times-Italic@0 SF
(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
2.815 E F0 .315(if there is)2.815 F(just one w)144 96 Q(ord in the e)-.1
E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15 E F1
(x*)108 108 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1
<78ad>108 120 Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5
E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E
(If a w)108 136.8 Q(ord designator is supplied without an e)-.1 E -.15
(ve)-.25 G(nt speci\214cation, the pre).15 E
(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
(Modi\214ers)87 153.6 Q F0 .183(After the optional w)108 165.6 R .183
(ord designator)-.1 F 2.683(,t)-.4 G .184
(here may appear a sequence of one or more of the follo)-2.683 F .184
(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 177.6 Q F1(h)108
194.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H
(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1
(t)108 206.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H
(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r)
108 218.4 Q F0(Remo)31.56 E .3 -.15(ve a t)-.15 H(railing suf).15 E
(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
(ving the basename.)-.2 E F1(e)108 230.4 Q F0(Remo)31.56 E .3 -.15(ve a)
-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 242.4
Q F0(Print the ne)30.44 E 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
E -.15(xe)-.15 G(cute it.).15 E F1(q)108 254.4 Q F0
(Quote the substituted w)30.44 E(ords, escaping further substitutions.)
-.1 E F1(x)108 266.4 Q F0(Quote the substituted w)31 E(ords as with)-.1
E F1(q)2.5 E F0 2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)
2.5 E F0(and ne)2.5 E(wlines.)-.25 E F1(s/)108 278.4 Q F2(old)A F1(/)A
F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 290.4 Q F2(ne)3.082 E(w)-.15 E
F0 .221(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221
(in the e)3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721
(yd)-.15 G .221(elimiter can be used in place)-2.721 F .616(of /.)144
302.4 R .617
(The \214nal delimiter is optional if it is the last character of the e)
5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617
F .666(be quoted in)144 314.4 R F2(old)3.396 E F0(and)3.936 E F2(ne)
3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666
(If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166
(ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E
F0 5.666(.A).77 G .274(single backslash will quote the &.)144 326.4 R
(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544
F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775
(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E
(ous history substitutions took place, the last)144 338.4 Q F2(string)
2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1
(&)108 350.4 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1
(g)108 362.4 Q F0 .398(Cause changes to be applied o)31 F -.15(ve)-.15 G
2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.)
.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897
('\()C(e.g.,)-2.897 E(`)144 374.4 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)
-.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218
(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219
(elimiter can be used in place of /, and the \214nal)-3.718 F .09
(delimiter is optional if it is the last character of the e)144 386.4 R
-.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089
(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 398.4 Q F0
(.)A F1(G)108 410.4 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0
2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25
G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(PR)72 427.2 Q
(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738
E F0(This section describes ho)108 439.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G
(se the History library in other programs.)-2.5 E F1(Intr)87 456 Q
(oduction to History)-.18 E F0 .796
(The programmer using the History library has a)108 468 R -.25(va)-.2 G
.797(ilable functions for remembering lines on a history list,).25 F
.308(associating arbitrary data with a line, remo)108 480 R .308
(ving lines from the list, searching through the list for a line con-)
-.15 F .303(taining an arbitrary te)108 492 R .303
(xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303
(ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G
.303(ddition, a history)-2.803 F F2 -.2(ex)2.803 G(pansion).2 E F0
(function is a)108 504 Q -.25(va)-.2 G(ilable which pro).25 E
(vides for a consistent user interf)-.15 E(ace across dif)-.1 E
(ferent programs.)-.25 E .059(The user using programs written with the \
History library has the bene\214t of a consistent user interf)108 520.8
R .058(ace with a)-.1 F .917(set of well-kno)108 532.8 R .917
(wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917
(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.418(wc)-.25
G(om-)-3.418 E 4.184(mands. The)108 544.8 R 1.684(basic history manipul\
ation commands are identical to the history substitution pro)4.184 F
1.683(vided by)-.15 F F1(bash)108 556.8 Q F0(.)A .903
(If the programmer desires, he can use the Readline library)108 573.6 R
3.403(,w)-.65 G .904(hich includes some history manipulation by)-3.403 F
(def)108 585.6 Q(ault, and has the added adv)-.1 E
(antage of command line editing.)-.25 E .39(Before declaring an)108
602.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
(unctionality the History library pro)-2.89 F .39
(vides in other code, an appli-)-.15 F .066
(cation writer should include the \214le)108 614.4 R F2(<r)4.232 E
(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.232 F 2.567<798c>-.15
G .067(le that uses the History library')-2.567 F 2.567(sf)-.55 G
(eatures.)-2.567 E .539(It supplies e)108 626.4 R .538
(xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538
(ublic functions and v)-3.038 F .538(ariables, and declares all of the)
-.25 F(public data structures.)108 638.4 Q F1(History Storage)87 667.2 Q
F0(The history list is an array of history entries.)108 679.2 Q 2.5(Ah)5
G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *)
108 696 Q F1(histdata_t;)2.5 E F0(typedef struct _hist_entry {)108 712.8
Q(char *line;)113 724.8 Q(GNU History 5.0)72 768 Q(2003 July 31)139.005
E(2)203.165 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E(char *timestamp;)113 84 Q(histdata_t data;)113
96 Q 2.5(}H)108 108 S(IST_ENTR)-2.5 E -.92(Y;)-.65 G
(The history list itself might therefore be declared as)108 124.8 Q/F1
10/Times-Italic@0 SF(HIST_ENTR)108 141.6 Q 2.5(Y*)-.18 G(*)-2.5 E/F2 10
/Times-Bold@0 SF(the_history_list;)2.5 E F0(The state of the History li\
brary is encapsulated into a single structure:)108 158.4 Q(/*)108 175.2
Q 2.5(*As)110.5 187.2 S
(tructure used to pass around the current state of the history)-2.5 E(.)
-.65 E(*/)110.5 199.2 Q(typedef struct _hist_state {)108 211.2 Q
(HIST_ENTR)113 223.2 Q 2.5(Y*)-.65 G
(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E
(int of)113 235.2 Q 25(fset; /*)-.25 F
(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E
(int length;)113 247.2 Q(/* Number of elements within this array)27.5 E
2.5(.*)-.65 G(/)-2.5 E(int size;)113 259.2 Q
(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5
E(int \215ags;)113 271.2 Q 2.5(}H)108 283.2 S(IST)-2.5 E(OR)-.18 E(Y_ST)
-.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108 300
Q F2(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)-2.5 E
/F3 10.95/Times-Bold@0 SF(History Functions)72 316.8 Q F0
(This section describes the calling sequence for the v)108 328.8 Q
(arious functions e)-.25 E(xported by the GNU History library)-.15 E(.)
-.65 E F2(Initializing History and State Management)87 345.6 Q F0 1.274
(This section describes functions used to initialize and manage the sta\
te of the History library when you)108 357.6 R -.1(wa)108 369.6 S
(nt to use the history functions in your program.).1 E F1(void)108 393.6
Q F2(using_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E(Be)108
405.6 Q(gin a session in which the history functions might be used.)-.15
E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E
F1(HIST)108 429.6 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2
(history_get_history_state)A F0(\()4.166 E F1(void)A F0(\))1.666 E
(Return a structure describing the current state of the input history)
108 441.6 Q(.)-.65 E F1(void)108 465.6 Q F2(history_set_history_state)
2.5 E F0(\()4.166 E F1(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5
(E*).37 G(state)-2.5 E F0(\))1.666 E
(Set the state of the history list according to)108 477.6 Q F1(state)2.5
E F0(.)A F2(History List Management)87 506.4 Q F0
(These functions manage indi)108 518.4 Q(vidual entries on the history \
list, or set parameters managing the list itself.)-.25 E F1(void)108
542.4 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15
E F0(\))1.666 E(Place)108 554.4 Q F1(string)2.5 E F0
(at the end of the history list.)2.5 E
(The associated data \214eld \(if an)5 E(y\) is set to)-.15 E F2(NULL)
2.5 E F0(.)A F1(void)108 578.4 Q F2(add_history_time)2.5 E F0(\()4.166 E
F1(const c)A(har *string)-.15 E F0(\))1.666 E
(Change the time stamp associated with the most recent history entry to)
108 590.4 Q F1(string)2.5 E F0(.)A F1(HIST_ENTR)108 614.4 Q 2.5(Y*)-.18
G F2 -.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1
(int whic)A(h)-.15 E F0(\))1.666 E(Remo)108 626.4 Q .353 -.15(ve h)-.15
H .053(istory entry at of).15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0
.053(from the history)2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15
(ve)-.15 G 2.553(de).15 G .052(lement is returned so you can free the)
-2.553 F(line, data, and containing structure.)108 638.4 Q F1
(histdata_t)108 662.4 Q F2(fr)2.5 E(ee_history_entry)-.18 E F0(\()4.166
E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))1.666 E .933
(Free the history entry)108 674.4 R F1(histent)3.433 E F0 .933(and an)
3.433 F 3.433(yh)-.15 G .933(istory library pri)-3.433 F -.25(va)-.25 G
.933(te data associated with it.).25 F .934(Returns the applica-)5.933 F
(tion-speci\214c data so the caller can dispose of it.)108 686.4 Q F1
(HIST_ENTR)108 710.4 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry)
.18 E F0(\()4.166 E F1(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G
(ar *line).15 E 1.666(,h)-.1 G(istdata_t data)-1.666 E F0(\))3.332 E
(Mak)108 722.4 Q 4.014(et)-.1 G 1.514(he history entry at of)-4.014 F
(fset)-.25 E F1(whic)4.013 E(h)-.15 E F0(ha)4.013 E -.15(ve)-.2 G F1
(line)4.163 E F0(and)4.013 E F1(data)4.013 E F0 6.513(.T)C 1.513
(his returns the old entry so the caller can)-6.513 F(GNU History 5.0)72
768 Q(2003 July 31)139.005 E(3)203.165 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E(dispose of an)108 84 Q 2.5(ya)-.15 G
(pplication-speci\214c data.)-2.5 E(In the case of an in)5 E -.25(va)-.4
G(lid).25 E/F1 10/Times-Italic@0 SF(whic)2.5 E(h)-.15 E F0 2.5(,a)C/F2
10/Times-Bold@0 SF(NULL)A F0(pointer is returned.)2.5 E F1(void)108 108
Q F2(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
(Clear the history list by deleting all the entries.)108 120 Q F1(void)
108 144 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\))
1.666 E(Sti\215e the history list, remembering only the last)108 156 Q
F1(max)2.5 E F0(entries.)2.5 E F1(int)108 180 Q F2(unsti\215e_history)
2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .46
(Stop sti\215ing the history)108 192 R 5.46(.T)-.65 G .46
(his returns the pre)-5.46 F .46
(viously-set maximum number of history entries \(as set by)-.25 F F2
(sti-)2.96 E(\215e_history\(\))108 204 Q F0 2.5(\). history)B -.1(wa)2.5
G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi).25 E
.3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E(as sti\215ed, ne)
-.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5(fi).15 G 2.5(tw)
-2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 228 Q F2(history_is_sti\215ed)
2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
(Returns non-zero if the history is sti\215ed, zero if it is not.)108
240 Q F2(Inf)87 268.8 Q(ormation About the History List)-.25 E F0(These\
 functions return information about the entire history list or indi)108
280.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 304.8 Q 2.5(Y*)-.18
G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
.708(Return a)108 316.8 R F2(NULL)3.208 E F0 .708(terminated array of)
3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708
(which is the current input history)B 5.707(.E)-.65 G .707
(lement 0 of this)-5.707 F(list is the be)108 328.8 Q(ginning of time.)
-.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5
E F0(.)A F1(int)108 352.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
F1(void)A F0(\))1.666 E(Returns the of)108 364.8 Q
(fset of the current history element.)-.25 E F1(HIST_ENTR)108 388.8 Q
2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
(\))1.666 E 1.373
(Return the history entry at the current position, as determined by)108
400.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
-6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 412.8 Q F2
(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 436.8 Q 2.5(Y*)
-.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\))
1.666 E .288(Return the history entry at position)108 448.8 R F1(of)
2.787 E(fset)-.18 E F0 2.787(,s)C .287(tarting from)-2.787 F F2
(history_base)2.787 E F0 5.287(.I)C 2.787(ft)-5.287 G .287
(here is no entry there, or if)-2.787 F F1(of)2.787 E(fset)-.18 E F0
(is greater than the history length, return a)108 460.8 Q F2(NULL)2.5 E
F0(pointer)2.5 E(.)-.55 E F1(time_t)108 484.8 Q F2(history_get_time)2.5
E F0(\()4.166 E F1(HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the t\
ime stamp associated with the history entry passed as the ar)108 496.8 Q
(gument.)-.18 E F1(int)108 520.8 Q F2(history_total_bytes)2.5 E F0(\()
4.166 E F1(void)A F0(\))1.666 E .391
(Return the number of bytes that the primary history entries are using.)
108 532.8 R .392(This function returns the sum of the)5.392 F
(lengths of all the lines in the history)108 544.8 Q(.)-.65 E F2(Mo)87
573.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
(These functions allo)108 585.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int)
108 609.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
1.666 E .79(Set the current history of)108 621.6 R .79(fset to)-.25 F F1
(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29
(xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79
F F1(pos)3.29 E F0 .79(is less)3.29 F
(than zero or greater than the number of history entries.)108 633.6 Q F1
(HIST_ENTR)108 657.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .207
(Back up the current history of)108 669.6 R .207(fset to the pre)-.25 F
.207(vious history entry)-.25 F 2.708(,a)-.65 G .208
(nd return a pointer to that entry)-2.708 F 5.208(.I)-.65 G 2.708(ft)
-5.208 G .208(here is)-2.708 F(no pre)108 681.6 Q(vious entry)-.25 E 2.5
(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
(HIST_ENTR)108 705.6 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
(void)A F0(\))1.666 E(Mo)108 717.6 Q 1.047 -.15(ve t)-.15 H .747
(he current history of).15 F .747(fset forw)-.25 F .746(ard to the ne)
-.1 F .746(xt history entry)-.15 F 3.246(,a)-.65 G .746
(nd return the a pointer to that entry)-3.246 F 5.746(.I)-.65 G(f)-5.746
E(there is no ne)108 729.6 Q(xt entry)-.15 E 2.5(,r)-.65 G(eturn a)-2.5
E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E(GNU History 5.0)72 768 Q
(2003 July 31)139.005 E(4)203.165 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Bold@0 SF(Sear)87 84 Q
(ching the History List)-.18 E F0 .005(These functions allo)108 96 R
2.505(ws)-.25 G .006(earching of the history list for entries containin\
g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452
(performed both forw)108 108 R 1.452(ard and backw)-.1 F 1.451
(ard from the current history position.)-.1 F 1.451(The search may be)
6.451 F/F2 10/Times-Italic@0 SF(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
(meaning that the string must match at the be)108 120 Q
(ginning of the history entry)-.15 E(.)-.65 E F2(int)108 144 Q F1
(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F2(const c)A(har *string)
-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155
(Search the history for)108 156 R F2(string)2.655 E F0 2.656(,s)C .156
(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F2
(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
F .802(is through pre)108 168 R .802
(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
F2(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
(tory inde)108 180 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564
F .064(alue returned is the of)-.25 F .064
(fset in the line of the entry where)-.25 F F2(string)2.565 E F0 -.1(wa)
108 192 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
(nothing is changed, and a -1 is returned.)2.5 E F2(int)108 216 Q F1
(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F2(const c)
A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))
1.666 E .684(Search the history for)108 228 R F2(string)3.183 E F0 3.183
(,s)C .683(tarting at the current history of)-3.183 F 3.183(fset. The)
-.25 F .683(search is anchored: matching lines)3.183 F 1.063(must be)108
240 R 1.063(gin with)-.15 F F2(string)3.563 E F0 6.063(.I)C(f)-6.063 E
F2(dir)3.563 E(ection)-.37 E F0 1.064
(is less than 0, then the search is through pre)3.563 F 1.064
(vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108
252 R(If)6.115 E F2(string)3.615 E F0 1.115
(is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614
(ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114
(nd the)-3.614 F(return v)108 264 Q(alue is 0.)-.25 E
(Otherwise, nothing is changed, and a -1 is returned.)5 E F2(int)108 288
Q F1(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F2(const c)A
(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834(ection, int)
-.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 300 R F2(string)3.103
E F0 .603(in the history list, starting at)3.103 F F2(pos)3.104 E F0
3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104(xi)-.15 G
.604(nto the list.)-3.104 F(If)5.604 E F2(dir)3.104 E(ection)-.37 E F0
.604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,).15 E .608
(the search proceeds backw)108 312 R .608(ard from)-.1 F F2(pos)3.108 E
F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108(ard. Returns)-.1 F .608
(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108(ft)-3.108 G .608
(he history ele-)-3.108 F(ment where)108 324 Q F2(string)2.5 E F0 -.1
(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F1
(Managing the History File)87 352.8 Q F0 .035(The History library can r\
ead the history from and write it to a \214le.)108 364.8 R .036
(This section documents the functions for)5.035 F
(managing a history \214le.)108 376.8 Q F2(int)108 400.8 Q F1 -.18(re)
2.5 G(ad_history).18 E F0(\()4.166 E F2(const c)A(har *\214lename)-.15 E
F0(\))1.666 E .151(Add the contents of)108 412.8 R F2(\214lename)2.651 E
F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F2
(\214lename)2.65 E F0(is)2.65 E F1(NULL)2.65 E F0 2.65(,t)C .15
(hen read from)-2.65 F F2(~/.his-)2.65 E(tory)108 424.8 Q F0 5(.R)C
(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E
F2(int)108 448.8 Q F1 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
F2(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834
(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from)
108 460.8 R F2(\214lename)2.553 E F0 2.553(,a)C .053
(dding them to the history list.)-2.553 F .053(Start reading at line)
5.053 F F2(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F2(to)2.553 E
F0(.)A(If)108 472.8 Q F2(fr)2.889 E(om)-.45 E F0 .389
(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F2(to)2.889 E
F0 .389(is less than)2.889 F F2(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388
(hen read until the end of the \214le.)-2.889 F(If)5.388 E F2
(\214lename)2.888 E F0(is)108 484.8 Q F1(NULL)2.5 E F0 2.5(,t)C
(hen read from)-2.5 E F2(~/.history)2.5 E F0 5(.R)C
(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E
F2(int)108 508.8 Q F1(write_history)2.5 E F0(\()4.166 E F2(const c)A
(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
108 520.8 R F2(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
(rwriting).15 E F2(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
(.I)-.65 G(f)-5.961 E F2(\214lename)3.462 E F0(is)3.462 E F1(NULL)3.462
E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 532.8 Q
F2(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F1(err)2.5 E
(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 568.8 Q
F1(append_history)2.5 E F0(\()4.166 E F2(int nelements,)A(const c)1.666
E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 580.8 R
F2(nelements)3.339 E F0 .839(of the history list to)3.339 F F2
(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F2(\214lename)3.339 E F0
(is)3.339 E F1(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F2
(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 592.8 Q F1(err)
2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108
616.8 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2(const c)A
(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E
-.35(Tr)108 628.8 S .38(uncate the history \214le).35 F F2(\214lename)
2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F2(nlines)
2.881 E F0 2.881(lines. If)2.881 F F2(\214lename)2.881 E F0(is)2.881 E
F1(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F2(~/.history)2.881 E F0(is)
2.881 E 2.5(truncated. Returns)108 640.8 R 2.5(0o)2.5 G 2.5(ns)-2.5 G
(uccess, or)-2.5 E F1(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E F1
(History Expansion)87 669.6 Q F0(These functions implement history e)108
681.6 Q(xpansion.)-.15 E F2(int)108 705.6 Q F1(history_expand)2.5 E F0
(\()4.166 E F2 -.15(ch)C(ar *string).15 E 1.666(,c)-.1 G(har **output)
-1.816 E F0(\))1.666 E(Expand)108 717.6 Q F2(string)2.5 E F0 2.5(,p)C
(lacing the result into)-2.5 E F2(output)2.5 E F0 2.5(,ap)C
(ointer to a string.)-2.5 E(Returns:)5 E(GNU History 5.0)72 768 Q
(2003 July 31)139.005 E(5)203.165 E 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E 31(0I)144 84 S 3.066(fn)-31 G 3.066(oe)-3.066 G
.566(xpansions took place \(or)-3.216 F 3.065(,i)-.4 G 3.065(ft)-3.065 G
.565(he only change in the te)-3.065 F .565(xt w)-.15 F .565
(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)-3.065 G
(scape)-3.065 E(characters preceding the history e)180 96 Q
(xpansion character\);)-.15 E 31(1i)144 108 S 2.5(fe)-31 G
(xpansions did tak)-2.65 E 2.5(ep)-.1 G(lace;)-2.5 E 25.17(-1 if)144 120
R(there w)2.5 E(as an error in e)-.1 E(xpansion;)-.15 E 31(2i)144 132 S
2.5(ft)-31 G(he returned line should be displayed, b)-2.5 E(ut not e)-.2
E -.15(xe)-.15 G(cuted, as with the).15 E/F1 10/Times-Bold@0 SF(:p)2.5 E
F0(modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 144 Q
(xpansion, then)-.15 E/F2 10/Times-Italic@0 SF(output)2.5 E F0
(contains a descripti)2.5 E .3 -.15(ve e)-.25 H(rror message.).15 E F2
-.15(ch)108 168 S(ar *).15 E F1(get_history_e)2.5 E -.1(ve)-.15 G(nt).1
E F0(\()4.166 E F2(const c)A(har *string)-.15 E 1.666(,i)-.1 G
(nt *cinde)-1.666 E -.834(x, int)-.2 F(qc)2.5 E(har)-.15 E F0(\))3.332 E
.262(Returns the te)108 180 R .262(xt of the history e)-.15 F -.15(ve)
-.25 G .262(nt be).15 F .263(ginning at)-.15 F F2(string)2.763 E F0(+)
2.763 E F2(*cinde)2.763 E(x)-.2 E F0(.)A F2(*cinde)5.263 E(x)-.2 E F0
.263(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 192
T .71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71
(unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709
(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F2(string)3.209
E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709
(nt speci\214ca-).15 F .527(tion be)108 204 R(gins.)-.15 E F2(qc)5.527 E
(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
(wed to end the e)-.25 F -.15(ve)-.25 G .528
(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E
(terminating characters.)108 216 Q F2 -.15(ch)108 240 S(ar **).15 E F1
(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string)
-.15 E F0(\))1.666 E .239(Return an array of tok)108 252 R .239
(ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238
(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238
(ens are split on the charac-)-.1 F(ters in the)108 264 Q F1(history_w)
2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E
(yed.)-.15 E F2 -.15(ch)108 288 S(ar *).15 E F1(history_ar)2.5 E
(g_extract)-.1 E F0(\()4.166 E F2(int \214r)A -.834(st, int)-.1 F -.834
(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025
(Extract a string se)108 300 R .025(gment consisting of the)-.15 F F2
<8c72>2.526 E(st)-.1 E F0(through)2.526 E F2(last)2.526 E F0(ar)2.526 E
.026(guments present in)-.18 F F2(string)2.526 E F0 5.026(.A)C -.18(rg)
-5.026 G .026(uments are split).18 F(using)108 312 Q F1(history_tok)2.5
E(enize\(\))-.1 E F0(.)A F1(History V)87 340.8 Q(ariables)-.92 E F0
(This section describes the e)108 352.8 Q(xternally-visible v)-.15 E
(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2
(int)108 376.8 Q F1(history_base)2.5 E F0(The logical of)108 388.8 Q
(fset of the \214rst entry in the history list.)-.25 E F2(int)108 412.8
Q F1(history_length)2.5 E F0
(The number of entries currently stored in the history list.)108 424.8 Q
F2(int)108 448.8 Q F1(history_max_entries)2.5 E F0
(The maximum number of history entries.)108 460.8 Q
(This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2
(int)108 484.8 Q F1(history_write_timestamps)2.5 E F0 1.468
(If non-zero, timestamps are written to the history \214le, so the)108
496.8 R 3.968(yc)-.15 G 1.468(an be preserv)-3.968 F 1.468
(ed between sessions.)-.15 F(The)6.468 E(def)108 508.8 Q(ault v)-.1 E
(alue is 0, meaning that timestamps are not sa)-.25 E -.15(ve)-.2 G(d.)
.15 E F2 -.15(ch)108 532.8 S(ar).15 E F1(history_expansion_char)2.5 E F0
(The character that introduces a history e)108 544.8 Q -.15(ve)-.25 G
2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F1(!)2.5 E F0 5(.S)C
(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F2 -.15(ch)
108 568.8 S(ar).15 E F1(history_subst_char)2.5 E F0
(The character that in)108 580.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
(ord substitution if found at the start of a line.)-2.6 E(The def)5 E
(ault is)-.1 E F1(^)2.5 E F0(.)A F2 -.15(ch)108 604.8 S(ar).15 E F1
(history_comment_char)2.5 E F0 .116(During tok)108 616.8 R .117
(enization, if this character is seen as the \214rst character of a w)
-.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .277
(acters up to a ne)108 628.8 R .276
(wline are ignored, suppressing history e)-.25 F .276
(xpansion for the remainder of the line.)-.15 F .276(This is dis-)5.276
F(abled by def)108 640.8 Q(ault.)-.1 E F2 -.15(ch)108 664.8 S(ar *).15 E
F1(history_w)2.5 E(ord_delimiters)-.1 E F0
(The characters that separate tok)108 676.8 Q(ens for)-.1 E F1
(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E
(alue is)-.25 E F1 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F2 -.15
(ch)108 700.8 S(ar *).15 E F1(history_no_expand_chars)2.5 E F0 2.054
(The list of characters which inhibit history e)108 712.8 R 2.054
(xpansion if found immediately follo)-.15 F(wing)-.25 E F1
(history_expan-)4.555 E(sion_char)108 724.8 Q F0 5(.T)C(he def)-5 E
(ault is space, tab, ne)-.1 E(wline,)-.25 E F1(\\r)2.5 E F0 2.5(,a)C(nd)
-2.5 E F1(=)2.5 E F0(.)A(GNU History 5.0)72 768 Q(2003 July 31)139.005 E
(6)203.165 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 357.18(Y\(3\) HIST)-.65 F
(OR)-.18 E(Y\(3\))-.65 E/F1 10/Times-Italic@0 SF -.15(ch)108 84 S(ar *)
.15 E/F2 10/Times-Bold@0 SF(history_sear)2.5 E(ch_delimiter_chars)-.18 E
F0 .401(The list of additional characters which can delimit a history s\
earch string, in addition to space, tab,)108 96 R F1(:)2.901 E F0(and)
2.901 E F1(?)2.901 E F0(in the case of a substring search.)108 108 Q
(The def)5 E(ault is empty)-.1 E(.)-.65 E F1(int)108 132 Q F2
(history_quotes_inhibit_expansion)2.5 E F0 .624
(If non-zero, single-quoted w)108 144 R .625
(ords are not scanned for the history e)-.1 F .625(xpansion character)
-.15 F 5.625(.T)-.55 G .625(he def)-5.625 F .625(ault v)-.1 F .625
(alue is)-.25 F(0.)108 156 Q F1(rl_lineb)108 180 Q(uf_func_t *)-.2 E F2
(history_inhibit_expansion_function)2.5 E F0 .348
(This should be set to the address of a function that tak)108 192 R .348
(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F2
.347(char *)2.847 F F0(\()2.847 E F1(string)A F0 2.847(\)a)C .347(nd an)
-2.847 F F2(int)2.847 E F0(inde)2.847 E(x)-.15 E .227
(into that string \()108 204 R F1(i)A F0 2.727(\). It)B .227
(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
.227(xpansion starting at)-.15 F F1(string[i])2.728 E F0 .228
(should not)2.728 F .019(be performed; zero if the e)108 216 R .019
(xpansion should be done.)-.15 F .019
(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash)
2.519 E F0 .018(that use)2.519 F(the history e)108 228 Q
(xpansion character for additional purposes.)-.15 E(By def)5 E
(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3
10.95/Times-Bold@0 SF(FILES)72 244.8 Q F1(~/.history)109.666 256.8 Q F0
(Def)144 268.8 Q(ault \214lename for reading and writing sa)-.1 E -.15
(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 285.6 Q F1
(The Gnu Readline Libr)108 297.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
(ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 309.6 Q
(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
F1(bash)108 321.6 Q F0(\(1\))A F1 -.37(re)108 333.6 S(adline).37 E F0
(\(3\))A F3 -.548(AU)72 350.4 S(THORS).548 E F0(Brian F)108 362.4 Q
(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
374.4 Q(g)-.18 E(Chet Rame)108 391.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
(chet@ins.CWR)108 403.2 Q(U.Edu)-.4 E F3 -.11(BU)72 420 S 2.738(GR).11 G
(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 432 R .16
(ug in the)-.2 F F2(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16
(ou should report it.)-2.66 F .16(But \214rst, you should mak)5.16 F
2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 444 S
(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F2
(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705
(Once you ha)108 460.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b)
.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .704
(ug report to)-.2 F F1 -.2(bu)3.204 G(g\255r).2 E(eadline)-.37 E F0(@)A
F1(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)-3.204 E(ha)108
472.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
(x, you are welcome to mail that as well!).15 F 1.51
(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
(mailed to)108 484.8 Q F1 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F1
(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2
(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 501.6 Q
(ug reports concerning this manual page should be directed to)-.2 E F1
-.15(ch)2.5 G(et@ins.CWR).15 E -.25(U.)-.4 G(Edu).25 E F0(.).25 E
(GNU History 5.0)72 768 Q(2003 July 31)139.005 E(7)203.165 E 0 Cg EP
%%Trailer
end
%%EOF
