Offset 1, 1020 lines modifiedOffset 1, 1172 lines modified
 1 .TH·EDITLINE·3·"August·15,·2021"·""
1 .\"»    $NetBSD:·editline.3,v·1.102·2024/02/04·18:47:27·andvar·Exp·$ 
2 .\" 
3 .\"·Copyright·(c)·1997-2014·The·NetBSD·Foundation,·Inc. 
4 .\"·All·rights·reserved. 
5 .\" 
6 .\"·This·file·was·contributed·to·The·NetBSD·Foundation·by·Luke·Mewburn. 
7 .\" 
8 .\"·Redistribution·and·use·in·source·and·binary·forms,·with·or·without 
9 .\"·modification,·are·permitted·provided·that·the·following·conditions 
10 .\"·are·met: 
11 .\"·1.·Redistributions·of·source·code·must·retain·the·above·copyright 
12 .\"····notice,·this·list·of·conditions·and·the·following·disclaimer. 
13 .\"·2.·Redistributions·in·binary·form·must·reproduce·the·above·copyright 
14 .\"····notice,·this·list·of·conditions·and·the·following·disclaimer·in·the 
15 .\"····documentation·and/or·other·materials·provided·with·the·distribution. 
16 .\" 
17 .\"·THIS·SOFTWARE·IS·PROVIDED·BY·THE·NETBSD·FOUNDATION,·INC.·AND·CONTRIBUTORS 
18 .\"·``AS·IS''·AND·ANY·EXPRESS·OR·IMPLIED·WARRANTIES,·INCLUDING,·BUT·NOT·LIMITED 
19 .\"·TO,·THE·IMPLIED·WARRANTIES·OF·MERCHANTABILITY·AND·FITNESS·FOR·A·PARTICULAR 
20 .\"·PURPOSE·ARE·DISCLAIMED.··IN·NO·EVENT·SHALL·THE·FOUNDATION·OR·CONTRIBUTORS 
21 .\"·BE·LIABLE·FOR·ANY·DIRECT,·INDIRECT,·INCIDENTAL,·SPECIAL,·EXEMPLARY,·OR 
22 .\"·CONSEQUENTIAL·DAMAGES·(INCLUDING,·BUT·NOT·LIMITED·TO,·PROCUREMENT·OF 
23 .\"·SUBSTITUTE·GOODS·OR·SERVICES;·LOSS·OF·USE,·DATA,·OR·PROFITS;·OR·BUSINESS 
24 .\"·INTERRUPTION)·HOWEVER·CAUSED·AND·ON·ANY·THEORY·OF·LIABILITY,·WHETHER·IN 
25 .\"·CONTRACT,·STRICT·LIABILITY,·OR·TORT·(INCLUDING·NEGLIGENCE·OR·OTHERWISE) 
26 .\"·ARISING·IN·ANY·WAY·OUT·OF·THE·USE·OF·THIS·SOFTWARE,·EVEN·IF·ADVISED·OF·THE 
27 .\"·POSSIBILITY·OF·SUCH·DAMAGE. 
28 .\" 
29 .Dd·August·15,·2021 
30 .Dt·EDITLINE·3 
31 .Os 
32 .Sh·NAME2 .SH·NAME
33 .Nm·editline·, 
34 .Nm·el_init·, 
35 .Nm·el_init_fd·, 
36 .Nm·el_end·, 
37 .Nm·el_reset·, 
38 .Nm·el_gets·, 
39 .Nm·el_wgets·, 
40 .Nm·el_getc·, 
41 .Nm·el_wgetc·, 
42 .Nm·el_push·, 
43 .Nm·el_wpush·, 
44 .Nm·el_parse·, 
45 .Nm·el_wparse·, 
46 .Nm·el_set·, 
47 .Nm·el_wset·, 
48 .Nm·el_get·, 
49 .Nm·el_wget·, 
50 .Nm·el_source·, 
51 .Nm·el_resize·, 
52 .Nm·el_cursor·, 
53 .Nm·el_line·, 
54 .Nm·el_wline·, 
55 .Nm·el_insertstr·, 
56 .Nm·el_winsertstr·, 
57 .Nm·el_deletestr·, 
58 .Nm·el_wdeletestr·, 
59 .Nm·history_init·, 
60 .Nm·history_winit·, 
61 .Nm·history_end·, 
62 .Nm·history_wend·, 
63 .Nm·history·, 
64 .Nm·history_w·, 
65 .Nm·tok_init·, 
66 .Nm·tok_winit·, 
67 .Nm·tok_end·, 
68 .Nm·tok_wend·, 
69 .Nm·tok_reset·, 
70 .Nm·tok_wreset·, 
71 .Nm·tok_line·, 
72 .Nm·tok_wline·, 
73 .Nm·tok_str·, 
74 .Nm·tok_wstr3 \fBeditline\fP,
 4 \fBel_init\fP,
 5 \fBel_init_fd\fP,
 6 \fBel_end\fP,
 7 \fBel_reset\fP,
 8 \fBel_gets\fP,
 9 \fBel_wgets\fP,
 10 \fBel_getc\fP,
 11 \fBel_wgetc\fP,
 12 \fBel_push\fP,
 13 \fBel_wpush\fP,
 14 \fBel_parse\fP,
 15 \fBel_wparse\fP,
 16 \fBel_set\fP,
 17 \fBel_wset\fP,
 18 \fBel_get\fP,
 19 \fBel_wget\fP,
 20 \fBel_source\fP,
 21 \fBel_resize\fP,
 22 \fBel_cursor\fP,
 23 \fBel_line\fP,
 24 \fBel_wline\fP,
 25 \fBel_insertstr\fP,
 26 \fBel_winsertstr\fP,
 27 \fBel_deletestr\fP,
 28 \fBel_wdeletestr\fP,
 29 \fBhistory_init\fP,
 30 \fBhistory_winit\fP,
 31 \fBhistory_end\fP,
 32 \fBhistory_wend\fP,
 33 \fBhistory\fP,
 34 \fBhistory_w\fP,
 35 \fBtok_init\fP,
 36 \fBtok_winit\fP,
 37 \fBtok_end\fP,
 38 \fBtok_wend\fP,
 39 \fBtok_reset\fP,
 40 \fBtok_wreset\fP,
 41 \fBtok_line\fP,
 42 \fBtok_wline\fP,
 43 \fBtok_str\fP,
 44 \fBtok_wstr\fP
75 .Nd·line·editor,·history·and·tokenization·functions45 \-·line·editor,·history·and·tokenization·functions
76 .Sh·LIBRARY46 .SH·LIBRARY
77 .Lb·libedit47 Command·Line·Editor·Library·(libedit,·-ledit)
78 .Sh·SYNOPSIS48 .SH·SYNOPSIS
79 .In·histedit.h 
80 .Ft·EditLine·* 
81 .Fn·el_init·"const·char·*prog"·"FILE·*fin"·"FILE·*fout"·"FILE·*ferr" 
82 .Ft·EditLine·* 
83 .Fn·el_init_fd·"const·char·*prog"·"FILE·*fin"·"FILE·*fout"·"FILE·*ferr"·"int·fdin"·"int·fdout"·"int·fderr" 
84 .Ft·void 
85 .Fn·el_end·"EditLine·*e" 
86 .Ft·void 
87 .Fn·el_reset·"EditLine·*e" 
88 .Ft·const·char·* 
89 .Fn·el_gets·"EditLine·*e"·"int·*count"49 .PP
 50 \fB#include·<histedit.h>\fP
 51 .PP
 52 \fIEditLine·*\fP
 53 .br
 54 \fBel_init\fP(\fIconst·char·*prog\fP,·\fIFILE·*fin\fP,·\fIFILE·*fout\fP,·\fIFILE·*ferr\fP);
 55 .PP
 56 \fIEditLine·*\fP
 57 .br
 58 \fBel_init_fd\fP(\fIconst·char·*prog\fP,·\fIFILE·*fin\fP,·\fIFILE·*fout\fP,·\fIFILE·*ferr\fP,·\fIint·fdin\fP,·\fIint·fdout\fP,·\fIint·fderr\fP);
 59 .PP
 60 \fIvoid\fP
 61 .br
 62 \fBel_end\fP(\fIEditLine·*e\fP);
 63 .PP
 64 \fIvoid\fP
 65 .br
 66 \fBel_reset\fP(\fIEditLine·*e\fP);
 67 .PP
 68 \fIconst·char·*\fP
 69 .br
 70 \fBel_gets\fP(\fIEditLine·*e\fP,·\fIint·*count\fP);
 71 .PP
90 .Ft·const·wchar_t·*72 \fIconst·wchar_t·*\fP
91 .Fn·el_wgets·"EditLine·*e"·"int·*count" 
92 .Ft·int 
93 .Fn·el_getc·"EditLine·*e"·"char·*ch" 
94 .Ft·int 
95 .Fn·el_wgetc·"EditLine·*e"·"wchar_t·*wc" 
96 .Ft·void 
97 .Fn·el_push·"EditLine·*e"·"const·char·*mbs" 
98 .Ft·void 
99 .Fn·el_wpush·"EditLine·*e"·"const·wchar_t·*wcs" 
100 .Ft·int 
101 .Fn·el_parse·"EditLine·*e"·"int·argc"·"const·char·*argv[]" 
102 .Ft·int 
103 .Fn·el_wparse·"EditLine·*e"·"int·argc"·"const·wchar_t·*argv[]" 
104 .Ft·int 
105 .Fn·el_set·"EditLine·*e"·"int·op"·"..." 
106 .Ft·int 
107 .Fn·el_wset·"EditLine·*e"·"int·op"·"..." 
108 .Ft·int 
109 .Fn·el_get·"EditLine·*e"·"int·op"·"..." 
110 .Ft·int 
111 .Fn·el_wget·"EditLine·*e"·"int·op"·"..." 
112 .Ft·int 
113 .Fn·el_source·"EditLine·*e"·"const·char·*file" 
114 .Ft·void 
115 .Fn·el_resize·"EditLine·*e" 
116 .Ft·int 
117 .Fn·el_cursor·"EditLine·*e"·"int·count"73 .br
 74 \fBel_wgets\fP(\fIEditLine·*e\fP,·\fIint·*count\fP);
 75 .PP
 76 \fIint\fP
 77 .br
 78 \fBel_getc\fP(\fIEditLine·*e\fP,·\fIchar·*ch\fP);
 79 .PP
 80 \fIint\fP
 81 .br
 82 \fBel_wgetc\fP(\fIEditLine·*e\fP,·\fIwchar_t·*wc\fP);
 83 .PP
 84 \fIvoid\fP
 85 .br
 86 \fBel_push\fP(\fIEditLine·*e\fP,·\fIconst·char·*mbs\fP);
 87 .PP
 88 \fIvoid\fP
 89 .br
 90 \fBel_wpush\fP(\fIEditLine·*e\fP,·\fIconst·wchar_t·*wcs\fP);
 91 .PP
 92 \fIint\fP
 93 .br
 94 \fBel_parse\fP(\fIEditLine·*e\fP,·\fIint·argc\fP,·\fIconst·char·*argv[]\fP);
 95 .PP
 96 \fIint\fP
 97 .br
 98 \fBel_wparse\fP(\fIEditLine·*e\fP,·\fIint·argc\fP,·\fIconst·wchar_t·*argv[]\fP);
 99 .PP
 100 \fIint\fP
 101 .br
 102 \fBel_set\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP);
 103 .PP
 104 \fIint\fP
 105 .br
 106 \fBel_wset\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP);
 107 .PP
 108 \fIint\fP
 109 .br
 110 \fBel_get\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP);
 111 .PP
 112 \fIint\fP
 113 .br
 114 \fBel_wget\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP);
 115 .PP
 116 \fIint\fP
 117 .br
 118 \fBel_source\fP(\fIEditLine·*e\fP,·\fIconst·char·*file\fP);
 119 .PP
 120 \fIvoid\fP
 121 .br
 122 \fBel_resize\fP(\fIEditLine·*e\fP);
 123 .PP
 124 \fIint\fP
 125 .br
 126 \fBel_cursor\fP(\fIEditLine·*e\fP,·\fIint·count\fP);
 127 .PP
118 .Ft·const·LineInfo·*128 \fIconst·LineInfo·*\fP
119 .Fn·el_line·"EditLine·*e"129 .br
 130 \fBel_line\fP(\fIEditLine·*e\fP);
 131 .PP
120 .Ft·const·LineInfoW·*132 \fIconst·LineInfoW·*\fP
121 .Fn·el_wline·"EditLine·*e" 
122 .Ft·int 
123 .Fn·el_insertstr·"EditLine·*e"·"const·char·*str" 
124 .Ft·int 
125 .Fn·el_winsertstr·"EditLine·*e"·"const·wchar_t·*str" 
126 .Ft·void 
127 .Fn·el_deletestr·"EditLine·*e"·"int·count" 
128 .Ft·void 
129 .Fn·el_wdeletestr·"EditLine·*e"·"int·count" 
130 .Ft·History·* 
131 .Fn·history_init·void 
132 .Ft·HistoryW·* 
133 .Fn·history_winit·void 
134 .Ft·void 
135 .Fn·history_end·"History·*h" 
136 .Ft·void 
137 .Fn·history_wend·"HistoryW·*h" 
138 .Ft·int 
139 .Fn·history·"History·*h"·"HistEvent·*ev"·"int·op"·"..." 
140 .Ft·int 
141 .Fn·history_w·"HistoryW·*h"·"HistEventW·*ev"·"int·op"·"..." 
142 .Ft·Tokenizer·* 
143 .Fn·tok_init·"const·char·*IFS" 
144 .Ft·TokenizerW·* 
145 .Fn·tok_winit·"const·wchar_t·*IFS" 
146 .Ft·void 
147 .Fn·tok_end·"Tokenizer·*t" 
148 .Ft·void 
149 .Fn·tok_wend·"TokenizerW·*t" 
150 .Ft·void 
151 .Fn·tok_reset·"Tokenizer·*t" 
152 .Ft·void 
153 .Fn·tok_wreset·"TokenizerW·*t" 
154 .Ft·int 
155 .Fn·tok_line·"Tokenizer·*t"·"const·LineInfo·*li"·"int·*argc"·"const·char·**argv[]"·"int·*cursorc"·"int·*cursoro" 
156 .Ft·int133 .br
 134 \fBel_wline\fP(\fIEditLine·*e\fP);
 135 .PP
 136 \fIint\fP
 137 .br
 138 \fBel_insertstr\fP(\fIEditLine·*e\fP,·\fIconst·char·*str\fP);
 139 .PP
 140 \fIint\fP
 141 .br
 142 \fBel_winsertstr\fP(\fIEditLine·*e\fP,·\fIconst·wchar_t·*str\fP);
 143 .PP
 144 \fIvoid\fP
 145 .br
 146 \fBel_deletestr\fP(\fIEditLine·*e\fP,·\fIint·count\fP);
 147 .PP
 148 \fIvoid\fP
 149 .br
 150 \fBel_wdeletestr\fP(\fIEditLine·*e\fP,·\fIint·count\fP);
 151 .PP
 152 \fIHistory·*\fP
 153 .br
 154 \fBhistory_init\fP(void·);
 155 .PP
 156 \fIHistoryW·*\fP
 157 .br
 158 \fBhistory_winit\fP(void·);
 159 .PP
 160 \fIvoid\fP
 161 .br
 162 \fBhistory_end\fP(\fIHistory·*h\fP);
 163 .PP
 164 \fIvoid\fP
 165 .br
 166 \fBhistory_wend\fP(\fIHistoryW·*h\fP);
 167 .PP
 168 \fIint\fP
 169 .br
 170 \fBhistory\fP(\fIHistory·*h\fP,·\fIHistEvent·*ev\fP,·\fIint·op\fP,·\fI...\fP);
 171 .PP
 172 \fIint\fP
 173 .br
 174 \fBhistory_w\fP(\fIHistoryW·*h\fP,·\fIHistEventW·*ev\fP,·\fIint·op\fP,·\fI...\fP);
 175 .PP
 176 \fITokenizer·*\fP
 177 .br
 178 \fBtok_init\fP(\fIconst·char·*IFS\fP);
 179 .PP
 180 \fITokenizerW·*\fP
 181 .br
 182 \fBtok_winit\fP(\fIconst·wchar_t·*IFS\fP);
 183 .PP
 184 \fIvoid\fP
 185 .br
 186 \fBtok_end\fP(\fITokenizer·*t\fP);
 187 .PP
 188 \fIvoid\fP
 189 .br
 190 \fBtok_wend\fP(\fITokenizerW·*t\fP);
 191 .PP
 192 \fIvoid\fP
 193 .br
 194 \fBtok_reset\fP(\fITokenizer·*t\fP);
 195 .PP
 196 \fIvoid\fP
 197 .br
 198 \fBtok_wreset\fP(\fITokenizerW·*t\fP);
 199 .PP
 200 \fIint\fP
 201 .br
 202 \fBtok_line\fP(\fITokenizer·*t\fP,·\fIconst·LineInfo·*li\fP,·\fIint·*argc\fP,·\fIconst·char·**argv[]\fP,·\fIint·*cursorc\fP,·\fIint·*cursoro\fP);
 203 .PP
 204 \fIint\fP
 205 .br
157 .Fn·tok_wline·"TokenizerW·*t"·"const·LineInfoW·*li"·"int·*argc"·"const·wchar_t·**argv[]"·"int·*cursorc"·"int·*cursoro"206 \fBtok_wline\fP(\fITokenizerW·*t\fP,·\fIconst·LineInfoW·*li\fP,·\fIint·*argc\fP,·\fIconst·wchar_t·**argv[]\fP,·\fIint·*cursorc\fP,·\fIint·*cursoro\fP);
158 .Ft·int 
159 .Fn·tok_str·"Tokenizer·*t"·"const·char·*str"·"int·*argc"·"const·char·**argv[]" 
160 .Ft·int 
161 .Fn·tok_wstr·"TokenizerW·*t"·"const·wchar_t·*str"·"int·*argc"·"const·wchar_t·**argv[]"207 .PP
 208 \fIint\fP
 209 .br
 210 \fBtok_str\fP(\fITokenizer·*t\fP,·\fIconst·char·*str\fP,·\fIint·*argc\fP,·\fIconst·char·**argv[]\fP);
 211 .PP
 212 \fIint\fP
 213 .br
 214 \fBtok_wstr\fP(\fITokenizerW·*t\fP,·\fIconst·wchar_t·*str\fP,·\fIint·*argc\fP,·\fIconst·wchar_t·**argv[]\fP);
162 .Sh·DESCRIPTION215 .SH·DESCRIPTION
163 The216 The
164 .Nm217 \fBeditline\fP
165 library·provides·generic·line·editing,·history·and·tokenization·functions,218 library·provides·generic·line·editing,·history·and·tokenization·functions,
166 similar·to·those·found·in219 similar·to·those·found·in
167 .Xr·sh·1·. 
168 .Pp220 \fBsh\fP(1).
  
169 These·functions·are·available·in·the221 These·functions·are·available·in·the
170 .Nm·libedit222 \fBlibedit\fP
171 library·(which·needs·the223 library·(which·needs·the
172 .Nm·libtermcap224 \fBlibtermcap\fP
173 library).225 library).
174 Programs·should·be·linked·with226 Programs·should·be·linked·with
175 .Fl·ledit·ltermcap·. 
176 .Pp227 \fB\-ledit\fP·ltermcap·.
  
177 The228 The
178 .Nm229 \fBeditline\fP
179 library·respects·the230 library·respects·the
180 .Ev·LC_CTYPE231 .IR·LC_CTYPE
181 locale·set·by·the·application·program·and·never·uses232 locale·set·by·the·application·program·and·never·uses
182 .Xr·setlocale·3233 \fBsetlocale\fP(3)
183 to·change·the·locale.234 to·change·the·locale.
184 .Sh·LINE·EDITING·FUNCTIONS235 .SH·LINE·EDITING·FUNCTIONS
185 The·line·editing·functions·use·a·common·data·structure,236 The·line·editing·functions·use·a·common·data·structure,
186 .Fa·EditLine·,237 \fIEditLine\fP,
187 which·is·created·by238 which·is·created·by
188 .Fn·el_init239 \fBel_init\fP()
189 or240 or
190 .Fn·el_init_fd241 \fBel_init_fd\fP()
191 and·freed·by242 and·freed·by
192 .Fn·el_end·. 
193 .Pp243 \fBel_end\fP().
  
194 The·wide-character·functions·behave·the·same·way·as·their·narrow244 The·wide-character·functions·behave·the·same·way·as·their·narrow
195 counterparts.245 counterparts.
196 .Pp 
197 The·following·functions·are·available:246 The·following·functions·are·available:
198 .Bl·-tag·-width·4n 
199 .It·Fn·el_init247 .TP
 248 \fBel_init\fP()
200 Initialize·the·line·editor,·and·return·a·data·structure249 Initialize·the·line·editor,·and·return·a·data·structure
201 to·be·used·by·all·other·line·editing·functions,·or250 to·be·used·by·all·other·line·editing·functions,·or
202 .Dv·NULL251 NULL
203 on·failure.252 on·failure.
204 .Fa·prog253 \fIprog·\fP
205 is·the·name·of·the·invoking·program,·used·when·reading·the254 is·the·name·of·the·invoking·program,·used·when·reading·the
206 .Xr·editrc·5255 \fBeditrc\fP(5)
207 file·to·determine·which·settings·to·use.256 file·to·determine·which·settings·to·use.
208 .Fa·fin·, 
209 .Fa·fout257 \fIfin\fP,
 258 \fIfout·\fP
210 and259 and
211 .Fa·ferr260 \fIferr·\fP
212 are·the·input,·output,·and·error·streams·(respectively)·to·use.261 are·the·input,·output,·and·error·streams·(respectively)·to·use.
213 In·this·documentation,·references·to262 In·this·documentation,·references·to
214 .Dq·the·tty263 ``the·tty''
215 are·actually·to·this·input/output·stream·combination.264 are·actually·to·this·input/output·stream·combination.
216 .It·Fn·el_init_fd265 .TP
 266 \fBel_init_fd\fP()
217 Like267 Like
218 .Fn·el_init268 \fBel_init\fP()
219 but·allows·specifying·file·descriptors·for·the269 but·allows·specifying·file·descriptors·for·the
220 .Xr·stdio·3270 \fBstdio\fP(3)
221 corresponding·streams,·in·case·those·were·created·with271 corresponding·streams,·in·case·those·were·created·with
222 .Xr·funopen·3·. 
223 .It·Fn·el_end272 \fBfunopen\fP(3).
 273 .TP
 274 \fBel_end\fP()
224 Clean·up·and·finish·with275 Clean·up·and·finish·with
225 .Fa·e·,276 \fIe\fP,
226 assumed·to·have·been·created·with277 assumed·to·have·been·created·with
227 .Fn·el_init278 \fBel_init\fP()
228 or279 or
229 .Fn·el_init_fd·. 
230 .It·Fn·el_reset280 \fBel_init_fd\fP().
 281 .TP
 282 \fBel_reset\fP()
231 Reset·the·tty·and·the·parser.283 Reset·the·tty·and·the·parser.
232 This·should·be·called·after·an·error·which·may·have·upset·the·tty's284 This·should·be·called·after·an·error·which·may·have·upset·the·tty's
233 state.285 state.
234 .It·Fn·el_gets286 .TP
 287 \fBel_gets\fP()
235 Read·a·line·from·the·tty.288 Read·a·line·from·the·tty.
236 .Fa·count289 \fIcount·\fP
237 is·modified·to·contain·the·number·of·characters·read.290 is·modified·to·contain·the·number·of·characters·read.
238 Returns·the·line·read·if·successful,·or291 Returns·the·line·read·if·successful,·or
239 .Dv·NULL292 NULL
240 if·no·characters·were·read·or·if·an·error·occurred.293 if·no·characters·were·read·or·if·an·error·occurred.
241 If·an·error·occurred,294 If·an·error·occurred,
242 .Fa·count295 \fIcount·\fP
243 is·set·to·\-1·and296 is·set·to·\-1·and
244 .Dv·errno297 errno
245 contains·the·error·code·that·caused·it.298 contains·the·error·code·that·caused·it.
246 The·return·value·may·not·remain·valid·across·calls·to299 The·return·value·may·not·remain·valid·across·calls·to
247 .Fn·el_gets300 \fBel_gets\fP()
248 and·must·be·copied·if·the·data·is·to·be·retained.301 and·must·be·copied·if·the·data·is·to·be·retained.
249 .It·Fn·el_wgetc302 .TP
 303 \fBel_wgetc\fP()
250 Read·a·wide·character·from·the·tty,·respecting·the·current·locale,304 Read·a·wide·character·from·the·tty,·respecting·the·current·locale,
251 or·from·the·input·queue·described·in305 or·from·the·input·queue·described·in
252 .Xr·editline·7306 \fBeditline\fP(7)
253 if·that·is·not·empty,·and·store·it·in307 if·that·is·not·empty,·and·store·it·in
254 .Fa·wc·.308 \fIwc\fP.
255 If·an·invalid·or·incomplete·character·is·found,·it·is·discarded,309 If·an·invalid·or·incomplete·character·is·found,·it·is·discarded,
256 .Va·errno310 \fIerrno\fP
257 is·set·to311 is·set·to
258 .Er·EILSEQ·,312 Er·EILSEQ·,
259 and·the·next·character·is·read·and·stored·in313 and·the·next·character·is·read·and·stored·in
260 .Fa·wc·.314 \fIwc\fP.
261 Returns·1·if·a·valid·character·was·read,·0·on·end·of·file,·or·\-1·on315 Returns·1·if·a·valid·character·was·read,·0·on·end·of·file,·or·\-1·on
262 .Xr·read·2316 \fBread\fP(2)
263 failure.317 failure.
264 In·the·latter·case,318 In·the·latter·case,
265 .Va·errno319 \fIerrno\fP
266 is·set·to·indicate·the·error.320 is·set·to·indicate·the·error.
267 .It·Fn·el_getc321 .TP
 322 \fBel_getc\fP()
268 Read·a·wide·character·as·described·for323 Read·a·wide·character·as·described·for
269 .Fn·el_wgetc324 \fBel_wgetc\fP()
270 and·return·0·on·end·of·file·or·\-1·on·failure.325 and·return·0·on·end·of·file·or·\-1·on·failure.
271 If·the·wide·character·can·be·represented·as·a·single-byte·character,326 If·the·wide·character·can·be·represented·as·a·single-byte·character,
272 convert·it·with327 convert·it·with
273 .Xr·wctob·3·,328 \fBwctob\fP(3),
274 store·the·result·in329 store·the·result·in
275 .Fa·ch·,330 \fIch\fP,
276 and·return·1;·otherwise,·set331 and·return·1;·otherwise,·set
277 .Va·errno332 \fIerrno\fP
278 to333 to
279 .Er·ERANGE334 Er·ERANGE
280 and·return·\-1.335 and·return·\-1.
281 In·the·C·or·POSIX·locale,·this·simply·reads·a·byte,·but·for·any·other336 In·the·C·or·POSIX·locale,·this·simply·reads·a·byte,·but·for·any·other
282 locale,·including·UTF-8,·this·is·rarely·useful.337 locale,·including·UTF-8,·this·is·rarely·useful.
283 .It·Fn·el_wpush338 .TP
 339 \fBel_wpush\fP()
284 Push·the·wide·character·string340 Push·the·wide·character·string
285 .Fa·wcs341 \fIwcs·\fP
286 back·onto·the·input·queue·described·in342 back·onto·the·input·queue·described·in
287 .Xr·editline·7·.343 \fBeditline\fP(7).
288 If·the·queue·overflows,·for·example·due·to·a·recursive·macro,344 If·the·queue·overflows,·for·example·due·to·a·recursive·macro,
289 or·if·an·error·occurs,·for·example·because345 or·if·an·error·occurs,·for·example·because
290 .Fa·wcs346 \fIwcs·\fP
291 is347 is
292 .Dv·NULL348 NULL
293 or·memory·allocation·fails,·the·function·beeps·at·the·user,349 or·memory·allocation·fails,·the·function·beeps·at·the·user,
294 but·does·not·report·the·problem·to·the·caller.350 but·does·not·report·the·problem·to·the·caller.
295 .It·Fn·el_push351 .TP
 352 \fBel_push\fP()
296 Use·the·current·locale·to·convert·the·multibyte·string353 Use·the·current·locale·to·convert·the·multibyte·string
297 .Fa·mbs354 \fImbs·\fP
298 to·a·wide·character·string,·and·pass·the·result·to355 to·a·wide·character·string,·and·pass·the·result·to
299 .Fn·el_wpush·. 
300 .It·Fn·el_parse356 \fBel_wpush\fP().
 357 .TP
 358 \fBel_parse\fP()
301 Parses·the359 Parses·the
302 .Fa·argv360 \fIargv·\fP
303 array·(which·is361 array·(which·is
304 .Fa·argc362 \fIargc·\fP
305 elements·in·size)363 elements·in·size)
306 to·execute·builtin364 to·execute·builtin
307 .Nm365 \fBeditline\fP
308 commands.366 commands.
309 If·the·command·is·prefixed·with367 If·the·command·is·prefixed·with
310 .Dq·prog·:368 ``prog·:''
311 then369 then
312 .Fn·el_parse370 \fBel_parse\fP()
313 will·only·execute·the·command·if371 will·only·execute·the·command·if
314 .Dq·prog372 ``prog''
315 matches·the373 matches·the
316 .Fa·prog374 \fIprog·\fP
317 argument·supplied·to375 argument·supplied·to
318 .Fn·el_init·.376 \fBel_init\fP().
319 The·return·value·is377 The·return·value·is
320 \-1·if·the·command·is·unknown,378 \-1·if·the·command·is·unknown,
321 0·if·there·was·no·error·or379 0·if·there·was·no·error·or
322 .Dq·prog380 ``prog''
323 didn't·match,·or381 didn't·match,·or
324 1·if·the·command·returned·an·error.382 1·if·the·command·returned·an·error.
325 Refer·to383 Refer·to
326 .Xr·editrc·5384 \fBeditrc\fP(5)
327 for·more·information.385 for·more·information.
328 .It·Fn·el_set386 .TP
 387 \fBel_set\fP()
329 Set388 Set
330 .Nm389 \fBeditline\fP
331 parameters.390 parameters.
332 .Fa·op391 \fIop·\fP
333 determines·which·parameter·to·set,·and·each·operation·has·its392 determines·which·parameter·to·set,·and·each·operation·has·its
334 own·parameter·list.393 own·parameter·list.
335 Returns·0·on·success,·\-1·on·failure.394 Returns·0·on·success,·\-1·on·failure.
336 .Pp 
337 The·following·values·for395 The·following·values·for
338 .Fa·op396 \fIop·\fP
339 are·supported,·along·with·the·required·argument·list:397 are·supported,·along·with·the·required·argument·list:
340 .Bl·-tag·-width·4n398 .RS
 399 .TP
341 .It·Dv·EL_PROMPT·,·Fa·"char·*(*f)(EditLine·*)"400 EL_PROMPT·,·\fIchar·*(*f)(EditLine·*)\fP
342 Define·prompt·printing·function·as401 Define·prompt·printing·function·as
343 .Fa·f·,402 \fIf\fP,
344 which·is·to·return·a·string·that·contains·the·prompt.403 which·is·to·return·a·string·that·contains·the·prompt.
 404 .TP
345 .It·Dv·EL_PROMPT_ESC·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·c"405 EL_PROMPT_ESC·,·\fIchar·*(*f)(EditLine·*),·Fa·char·c\fP
346 Same·as406 Same·as
347 .Dv·EL_PROMPT·,407 EL_PROMPT·,
348 but·the408 but·the
349 .Fa·c409 \fIc·\fP
350 argument·indicates·the·start/stop·literal·prompt·character.410 argument·indicates·the·start/stop·literal·prompt·character.
351 .Pp 
352 If·a·start/stop·literal·character·is·found·in·the·prompt,·the411 If·a·start/stop·literal·character·is·found·in·the·prompt,·the
353 character·itself412 character·itself
354 is·not·printed,·but·characters·after·it·are·printed·directly·to·the413 is·not·printed,·but·characters·after·it·are·printed·directly·to·the
355 terminal·without·affecting·the·state·of·the·current·line.414 terminal·without·affecting·the·state·of·the·current·line.
356 A·subsequent·second·start/stop·literal·character·ends·this·behavior.415 A·subsequent·second·start/stop·literal·character·ends·this·behavior.
357 This·is·typically·used·to·embed·literal·escape·sequences·that·change·the416 This·is·typically·used·to·embed·literal·escape·sequences·that·change·the
358 color/style·of·the·terminal·in·the·prompt.417 color/style·of·the·terminal·in·the·prompt.
359 Note·that·the·literal·escape·character·cannot·be·the·last·character·in·the418 Note·that·the·literal·escape·character·cannot·be·the·last·character·in·the
360 prompt,·as·the·escape·sequence·is·attached·to·the·next·character·in·the·prompt.419 prompt,·as·the·escape·sequence·is·attached·to·the·next·character·in·the·prompt.
361 .Dv·0420 0
362 unsets·it.421 unsets·it.
363 .It·Dv·EL_REFRESH422 .TP
 423 EL_REFRESH
364 Re-display·the·current·line·on·the·next·terminal·line.424 Re-display·the·current·line·on·the·next·terminal·line.
 425 .TP
365 .It·Dv·EL_RPROMPT·,·Fa·"char·*(*f)(EditLine·*)"426 EL_RPROMPT·,·\fIchar·*(*f)(EditLine·*)\fP
366 Define·right·side·prompt·printing·function·as427 Define·right·side·prompt·printing·function·as
367 .Fa·f·,428 \fIf\fP,
368 which·is·to·return·a·string·that·contains·the·prompt.429 which·is·to·return·a·string·that·contains·the·prompt.
 430 .TP
369 .It·Dv·EL_RPROMPT_ESC·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·c"431 EL_RPROMPT_ESC·,·\fIchar·*(*f)(EditLine·*),·Fa·char·c\fP
370 Define·the·right·prompt·printing·function·but·with·a·literal·escape·character.432 Define·the·right·prompt·printing·function·but·with·a·literal·escape·character.
 433 .TP
371 .It·Dv·EL_TERMINAL·,·Fa·"const·char·*type"434 EL_TERMINAL·,·\fIconst·char·*type\fP
372 Define·terminal·type·of·the·tty·to·be435 Define·terminal·type·of·the·tty·to·be
373 .Fa·type·,436 \fItype\fP,
374 or·to437 or·to
375 .Ev·TERM438 .IR·TERM
376 if439 if
377 .Fa·type440 \fItype·\fP
378 is441 is
379 .Dv·NULL·.442 NULL·.
 443 .TP
380 .It·Dv·EL_EDITOR·,·Fa·"const·char·*mode"444 EL_EDITOR·,·\fIconst·char·*mode\fP
381 Set·editing·mode·to445 Set·editing·mode·to
382 .Fa·mode·,446 \fImode\fP,
383 which·must·be·one·of447 which·must·be·one·of
384 .Dq·emacs448 ``emacs''
385 or449 or
386 .Dq·vi·. 
387 .It·Dv·EL_SIGNAL·,·Fa·"int·flag"450 ``vi''.
 451 .TP
 452 EL_SIGNAL·,·\fIint·flag\fP
388 If453 If
389 .Fa·flag454 \fIflag·\fP
390 is·non-zero,455 is·non-zero,
391 .Nm456 \fBeditline\fP
392 will·install·its·own·signal·handler·for·the·following·signals·when457 will·install·its·own·signal·handler·for·the·following·signals·when
393 reading·command·input:458 reading·command·input:
394 .Dv·SIGCONT·,459 SIGCONT·,
395 .Dv·SIGHUP·,460 SIGHUP·,
396 .Dv·SIGINT·,461 SIGINT·,
397 .Dv·SIGQUIT·,462 SIGQUIT·,
398 .Dv·SIGSTOP·,463 SIGSTOP·,
399 .Dv·SIGTERM·,464 SIGTERM·,
400 .Dv·SIGTSTP·,465 SIGTSTP·,
401 and466 and
402 .Dv·SIGWINCH·.467 SIGWINCH·.
403 Otherwise,·the·current·signal·handlers·will·be·used.468 Otherwise,·the·current·signal·handlers·will·be·used.
 469 .TP
404 .It·Dv·EL_BIND·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL470 EL_BIND·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP
405 Perform·the471 Perform·the
406 .Ic·bind472 \fBbind\fP
407 builtin·command.473 builtin·command.
408 Refer·to474 Refer·to
409 .Xr·editrc·5475 \fBeditrc\fP(5)
410 for·more·information.476 for·more·information.
 477 .TP
411 .It·Dv·EL_ECHOTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL478 EL_ECHOTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP
412 Perform·the479 Perform·the
413 .Ic·echotc480 \fBechotc\fP
414 builtin·command.481 builtin·command.
415 Refer·to482 Refer·to
416 .Xr·editrc·5483 \fBeditrc\fP(5)
417 for·more·information.484 for·more·information.
 485 .TP
418 .It·Dv·EL_SETTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL486 EL_SETTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP
419 Perform·the487 Perform·the
420 .Ic·settc488 \fBsettc\fP
421 builtin·command.489 builtin·command.
422 Refer·to490 Refer·to
423 .Xr·editrc·5491 \fBeditrc\fP(5)
424 for·more·information.492 for·more·information.
 493 .TP
425 .It·Dv·EL_SETTY·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL494 EL_SETTY·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP
426 Perform·the495 Perform·the
427 .Ic·setty496 \fBsetty\fP
428 builtin·command.497 builtin·command.
429 Refer·to498 Refer·to
430 .Xr·editrc·5499 \fBeditrc\fP(5)
431 for·more·information.500 for·more·information.
 501 .TP
432 .It·Dv·EL_TELLTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL502 EL_TELLTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP
433 Perform·the503 Perform·the
434 .Ic·telltc504 \fBtelltc\fP
435 builtin·command.505 builtin·command.
436 Refer·to506 Refer·to
437 .Xr·editrc·5507 \fBeditrc\fP(5)
438 for·more·information.508 for·more·information.
 509 .TP
439 .It·Dv·EL_ADDFN·,·Fa·"const·char·*name"·,·Fa·"const·char·*help"·,·\510 EL_ADDFN·,·\fIconst·char·*name,·Fa·const·char·*help,·\·\fP
440 Fa·"unsigned·char·(*func)(EditLine·*e,·int·ch)"511 Fa·"unsigned·char·(*func)(EditLine·*e,·int·ch)"
441 Add·a·user·defined·function,512 Add·a·user·defined·function,
442 .Fn·func·,513 \fBfunc\fP(),
443 referred·to·as514 referred·to·as
444 .Fa·name515 \fIname·\fP
445 which·is·invoked·when·a·key·which·is·bound·to516 which·is·invoked·when·a·key·which·is·bound·to
446 .Fa·name517 \fIname·\fP
447 is·entered.518 is·entered.
448 .Fa·help519 \fIhelp·\fP
449 is·a·description·of520 is·a·description·of
450 .Fa·name·.521 \fIname\fP.
451 At·invocation·time,522 At·invocation·time,
452 .Fa·ch523 \fIch·\fP
453 is·the·key·which·caused·the·invocation.524 is·the·key·which·caused·the·invocation.
454 The·return·value·of525 The·return·value·of
455 .Fn·func526 \fBfunc\fP()
456 should·be·one·of:527 should·be·one·of:
457 .Bl·-tag·-width·"CC_REDISPLAY" 
458 .It·Dv·CC_NORM528 .RS
 529 .TP
 530 CC_NORM
459 Add·a·normal·character.531 Add·a·normal·character.
460 .It·Dv·CC_NEWLINE532 .TP
 533 CC_NEWLINE
461 End·of·line·was·entered.534 End·of·line·was·entered.
462 .It·Dv·CC_EOF535 .TP
 536 CC_EOF
463 EOF·was·entered.537 EOF·was·entered.
464 .It·Dv·CC_ARGHACK538 .TP
 539 CC_ARGHACK
465 Expecting·further·command·input·as·arguments,·do·nothing·visually.540 Expecting·further·command·input·as·arguments,·do·nothing·visually.
466 .It·Dv·CC_REFRESH541 .TP
 542 CC_REFRESH
467 Refresh·display.543 Refresh·display.
 544 .TP
468 .It·Dv·CC_REFRESH_BEEP545 CC_REFRESH_BEEP
469 Refresh·display,·and·beep.546 Refresh·display,·and·beep.
470 .It·Dv·CC_CURSOR547 .TP
 548 CC_CURSOR
471 Cursor·moved,·so·update·and·perform549 Cursor·moved,·so·update·and·perform
472 .Dv·CC_REFRESH·.550 CC_REFRESH·.
 551 .TP
473 .It·Dv·CC_REDISPLAY552 CC_REDISPLAY
474 Redisplay·entire·input·line.553 Redisplay·entire·input·line.
475 This·is·useful·if·a·key·binding·outputs·extra·information.554 This·is·useful·if·a·key·binding·outputs·extra·information.
476 .It·Dv·CC_ERROR555 .TP
 556 CC_ERROR
477 An·error·occurred.557 An·error·occurred.
478 Beep,·and·flush·tty.558 Beep,·and·flush·tty.
479 .It·Dv·CC_FATAL559 .TP
 560 CC_FATAL
480 Fatal·error,·reset·tty·to·known·state.561 Fatal·error,·reset·tty·to·known·state.
481 .El562 .RE
 563 .TP
482 .It·Dv·EL_HIST·,·Fa·"History·*(*func)(History·*,·int·op,·...)"·,·\564 EL_HIST·,·\fIHistory·*(*func)(History·*,·int·op,·...),·\·\fP
483 Fa·"const·char·*ptr"565 Fa·"const·char·*ptr"
484 Defines·which·history·function·to·use,·which·is·usually566 Defines·which·history·function·to·use,·which·is·usually
485 .Fn·history·. 
486 .Fa·ptr567 \fBhistory\fP().
 568 \fIptr·\fP
487 should·be·the·value·returned·by569 should·be·the·value·returned·by
488 .Fn·history_init·. 
489 .It·Dv·EL_EDITMODE·,·Fa·"int·flag"570 \fBhistory_init\fP().
 571 .TP
 572 EL_EDITMODE·,·\fIint·flag\fP
490 If573 If
491 .Fa·flag574 \fIflag·\fP
492 is·non-zero,575 is·non-zero,
493 editing·is·enabled·(the·default).576 editing·is·enabled·(the·default).
494 Note·that·this·is·only·an·indication,·and·does·not577 Note·that·this·is·only·an·indication,·and·does·not
495 affect·the·operation·of578 affect·the·operation·of
496 .Nm·.579 \fB.\fP
497 At·this·time,·it·is·the·caller's·responsibility·to580 At·this·time,·it·is·the·caller's·responsibility·to
498 check·this581 check·this
499 (using582 (using
500 .Fn·el_get·)583 \fBel_get\fP()·)
501 to·determine·if·editing·should·be·enabled·or·not.584 to·determine·if·editing·should·be·enabled·or·not.
502 .It·Dv·EL_UNBUFFERED·,·Fa·"int·flag"585 .TP
 586 EL_UNBUFFERED·,·\fIint·flag\fP
503 If587 If
504 .Fa·flag588 \fIflag·\fP
505 is·zero,589 is·zero,
506 unbuffered·mode·is·disabled·(the·default).590 unbuffered·mode·is·disabled·(the·default).
507 In·unbuffered·mode,591 In·unbuffered·mode,
508 .Fn·el_gets592 \fBel_gets\fP()
509 will·return·immediately·after·processing·a·single·character.593 will·return·immediately·after·processing·a·single·character.
510 .It·Dv·EL_SAFEREAD·,·Fa·"int·flag"594 .TP
 595 EL_SAFEREAD·,·\fIint·flag\fP
511 If·the596 If·the
512 .Fa·flag597 \fIflag·\fP
513 argument·is·non-zero,·then598 argument·is·non-zero,·then
514 .Nm·editline599 \fBeditline\fP
515 attempts·to·recover·from·read·errors,·ignoring·the·first·interrupted600 attempts·to·recover·from·read·errors,·ignoring·the·first·interrupted
516 error,·and·trying·to·reset·the·input·file·descriptor·to·reset·non-blocking·I/O.601 error,·and·trying·to·reset·the·input·file·descriptor·to·reset·non-blocking·I/O.
517 This·is·disabled·by·default,·and·desirable·only·when602 This·is·disabled·by·default,·and·desirable·only·when
518 .Nm·editline603 \fBeditline\fP
519 is·used·in·shell-like·applications.604 is·used·in·shell-like·applications.
520 .It·Dv·EL_GETCFN·,·Fa·"el_rfunc_t·f"605 .TP
 606 EL_GETCFN·,·\fIel_rfunc_t·f\fP
521 Whenever·reading·a·character,·use·the·function607 Whenever·reading·a·character,·use·the·function
522 .Bd·-ragged·-offset·indent·-compact608 -ragged·-offset·indent·-compact
523 .Ft·int609 .PP
 610 \fIint\fP
 611 .br
524 .Fo·f612 Fo·f
525 .Fa·"EditLine·*e" 
526 .Fa·"wchar_t·*wc"613 \fIEditLine·*e\fP
 614 \fIwchar_t·*wc\fP
527 .Fc615 Fc
528 .Ed 
529 which·stores·the·character·in616 which·stores·the·character·in
530 .Fa·wc617 \fIwc·\fP
531 and·returns·1·on·success,·0·on·end·of·file,·or·\-1·on·I/O·or·encoding618 and·returns·1·on·success,·0·on·end·of·file,·or·\-1·on·I/O·or·encoding
532 errors.619 errors.
533 Functions·internally·using·it·include620 Functions·internally·using·it·include
534 .Fn·el_wgets·, 
535 .Fn·el_wgetc·, 
536 .Fn·el_gets·,621 \fBel_wgets\fP(),
 622 \fBel_wgetc\fP(),
 623 \fBel_gets\fP(),
537 and624 and
538 .Fn·el_getc·.625 \fBel_getc\fP().
539 Initially,·a·builtin·function·is·installed,·and·replacing·it626 Initially,·a·builtin·function·is·installed,·and·replacing·it
540 is·discouraged·because·writing·such·a·function·is·very·error·prone.627 is·discouraged·because·writing·such·a·function·is·very·error·prone.
541 The·builtin·function·can·be·restored·at·any·time·by·passing·the628 The·builtin·function·can·be·restored·at·any·time·by·passing·the
542 special·value629 special·value
543 .Dv·EL_BUILTIN_GETCFN630 EL_BUILTIN_GETCFN
544 instead·of·a·function·pointer.631 instead·of·a·function·pointer.
545 .It·Dv·EL_CLIENTDATA·,·Fa·"void·*data"632 .TP
 633 EL_CLIENTDATA·,·\fIvoid·*data\fP
546 Register634 Register
547 .Fa·data635 \fIdata·\fP
548 to·be·associated·with·this·EditLine·structure.636 to·be·associated·with·this·EditLine·structure.
549 It·can·be·retrieved·with·the·corresponding637 It·can·be·retrieved·with·the·corresponding
550 .Fn·el_get638 \fBel_get\fP();
551 call.639 call.
552 .It·Dv·EL_SETFP·,·Fa·"int·fd"·,·Fa·"FILE·*fp"640 .TP
 641 EL_SETFP·,·\fIint·fd,·Fa·FILE·*fp\fP
553 Set·the·current642 Set·the·current
554 .Nm·editline643 \fBeditline\fP
555 file·pointer·for644 file·pointer·for
556 .Dq·input 
557 .Fa·fd645 ``input''
 646 \fIfd·\fP
558 =647 =
559 .Dv·0·, 
560 .Dq·output 
561 .Fa·fd648 0·,
 649 ``output''
 650 \fIfd·\fP
562 =651 =
563 .Dv·1·,652 1·,
564 or653 or
565 .Dq·error 
566 .Fa·fd654 ``error''
 655 \fIfd·\fP
567 =656 =
568 .Dv·2657 2
569 from658 from
570 .Fa·fp·. 
571 .El 
572 .It·Fn·el_get659 \fIfp\fP.
 660 .RE
 661 .TP
 662 \fBel_get\fP()
573 Get663 Get
574 .Nm664 \fBeditline\fP
575 parameters.665 parameters.
576 .Fa·op666 \fIop·\fP
577 determines·which·parameter·to·retrieve·into667 determines·which·parameter·to·retrieve·into
578 .Fa·result·.668 \fIresult\fP.
579 Returns·0·if·successful,·\-1·otherwise.669 Returns·0·if·successful,·\-1·otherwise.
580 .Pp 
581 The·following·values·for670 The·following·values·for
582 .Fa·op671 \fIop·\fP
583 are·supported,·along·with·actual·type·of672 are·supported,·along·with·actual·type·of
584 .Fa·result·: 
585 .Bl·-tag·-width·4n673 \fIresult·:·\fP
 674 .RS
 675 .TP
586 .It·Dv·EL_PROMPT·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·*c"676 EL_PROMPT·,·\fIchar·*(*f)(EditLine·*),·Fa·char·*c\fP
587 Set677 Set
588 .Fa·f678 \fIf·\fP
589 to·a·pointer·to·the·function·that·displays·the·prompt.679 to·a·pointer·to·the·function·that·displays·the·prompt.
590 If680 If
591 .Fa·c681 \fIc·\fP
592 is·not682 is·not
593 .Dv·NULL·,683 NULL·,
594 set·it·to·the·start/stop·literal·prompt·character.684 set·it·to·the·start/stop·literal·prompt·character.
 685 .TP
595 .It·Dv·EL_RPROMPT·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·*c"686 EL_RPROMPT·,·\fIchar·*(*f)(EditLine·*),·Fa·char·*c\fP
596 Set687 Set
597 .Fa·f688 \fIf·\fP
598 to·a·pointer·to·the·function·that·displays·the·prompt.689 to·a·pointer·to·the·function·that·displays·the·prompt.
599 If690 If
600 .Fa·c691 \fIc·\fP
601 is·not692 is·not
602 .Dv·NULL·,693 NULL·,
603 set·it·to·the·start/stop·literal·prompt·character.694 set·it·to·the·start/stop·literal·prompt·character.
604 .It·Dv·EL_EDITOR·,·Fa·"const·char·**n"695 .TP
 696 EL_EDITOR·,·\fIconst·char·**n\fP
605 Set·the·name·of·the·editor·in697 Set·the·name·of·the·editor·in
606 .Fa·n·,698 \fIn\fP,
607 which·will·be·one·of699 which·will·be·one·of
608 .Dq·emacs700 ``emacs''
609 or701 or
610 .Dq·vi·.702 ``vi''.
 703 .TP
611 .It·Dv·EL_GETTC·,·Fa·"const·char·*name"·,·Fa·"void·*value"704 EL_GETTC·,·\fIconst·char·*name,·Fa·void·*value\fP
612 If705 If
613 .Fa·name706 \fIname·\fP
614 is·a·valid707 is·a·valid
615 .Xr·termcap·5708 \fBtermcap\fP(5)
616 capability·set709 capability·set
617 .Fa·value710 \fIvalue·\fP
618 to·the·current·value·of·that·capability.711 to·the·current·value·of·that·capability.
619 .It·Dv·EL_SIGNAL·,·Fa·"int·*s"712 .TP
 713 EL_SIGNAL·,·\fIint·*s\fP
620 Set714 Set
621 .Fa·s715 \fIs·\fP
622 to·non-zero·if716 to·non-zero·if
623 .Nm717 \fBeditline\fP
624 has·installed·private·signal·handlers·(see718 has·installed·private·signal·handlers·(see
625 .Fn·el_get719 \fBel_get\fP()
626 above).720 above).
627 .It·Dv·EL_EDITMODE·,·Fa·"int·*c"721 .TP
 722 EL_EDITMODE·,·\fIint·*c\fP
628 Set723 Set
629 .Fa·c724 \fIc·\fP
630 to·non-zero·if·editing·is·enabled.725 to·non-zero·if·editing·is·enabled.
631 .It·Dv·EL_GETCFN·,·Fa·"el_rfunc_t·*f"726 .TP
 727 EL_GETCFN·,·\fIel_rfunc_t·*f\fP
632 Set728 Set
633 .Fa·f729 \fIf·\fP
634 to·a·pointer·to·the·function·that·reads·characters,·or·to730 to·a·pointer·to·the·function·that·reads·characters,·or·to
635 .Dv·EL_BUILTIN_GETCFN731 EL_BUILTIN_GETCFN
636 if·the·builtin·function·is·in·use.732 if·the·builtin·function·is·in·use.
 733 .TP
637 .It·Dv·EL_CLIENTDATA·,·Fa·"void·**data"734 EL_CLIENTDATA·,·\fIvoid·**data\fP
638 Set735 Set
639 .Fa·data736 \fIdata·\fP
640 to·the·previously·registered·client·data·set·by·an737 to·the·previously·registered·client·data·set·by·an
641 .Fn·el_set738 \fBel_set\fP()
642 call.739 call.
643 .It·Dv·EL_UNBUFFERED·,·Fa·"int·*c"740 .TP
 741 EL_UNBUFFERED·,·\fIint·*c\fP
644 Set742 Set
645 .Fa·c743 \fIc·\fP
646 to·non-zero·if·unbuffered·mode·is·enabled.744 to·non-zero·if·unbuffered·mode·is·enabled.
647 .It·Dv·EL_SAFEREAD·,·Fa·"int·*c"745 .TP
 746 EL_SAFEREAD·,·\fIint·*c\fP
648 Set747 Set
649 .Fa·c748 \fIc·\fP
650 to·non-zero·if·safe·read·is·set.749 to·non-zero·if·safe·read·is·set.
 750 .TP
651 .It·Dv·EL_GETFP·,·Fa·"int·fd",·Fa·"FILE·**fp"751 EL_GETFP·,·\fIint·fd",·Fa·FILE·**fp\fP
652 Set752 Set
653 .Fa·fp753 \fIfp·\fP
654 to·the·current754 to·the·current
655 .Nm·editline755 \fBeditline\fP
656 file·pointer·for756 file·pointer·for
657 .Dq·input 
658 .Fa·fd757 ``input''
 758 \fIfd·\fP
659 =759 =
660 .Dv·0·, 
661 .Dq·output 
662 .Fa·fd760 0·,
 761 ``output''
 762 \fIfd·\fP
663 =763 =
664 .Dv·1·,764 1·,
665 or765 or
666 .Dq·error 
667 .Fa·fd766 ``error''
 767 \fIfd·\fP
668 =768 =
669 .Dv·2·. 
670 .El 
671 .It·Fn·el_source769 2·.
 770 .RE
 771 .TP
 772 \fBel_source\fP()
672 Initialize773 Initialize
673 .Nm774 \fBeditline\fP
674 by·reading·the·contents·of775 by·reading·the·contents·of
675 .Fa·file·. 
676 .Fn·el_parse776 \fIfile\fP.
 777 \fBel_parse\fP()
677 is·called·for·each·line·in778 is·called·for·each·line·in
678 .Fa·file·.779 \fIfile\fP.
679 If780 If
680 .Fa·file781 \fIfile·\fP
681 is782 is
682 .Dv·NULL·,783 NULL·,
683 try784 try
684 .Pa·$EDITRC785 \fI$EDITRC\fP
685 and·if·that·is·not·set786 and·if·that·is·not·set
686 .Pa·$HOME/.editrc·.787 \fI$HOME/.editrc\fP.
687 Refer·to788 Refer·to
688 .Xr·editrc·5789 \fBeditrc\fP(5)
689 for·details·on·the·format·of790 for·details·on·the·format·of
690 .Fa·file·. 
691 .Fn·el_source791 \fIfile\fP.
 792 \fBel_source\fP()
692 returns·0·on·success·and·\-1·on·error.793 returns·0·on·success·and·\-1·on·error.
693 .It·Fn·el_resize794 .TP
 795 \fBel_resize\fP()
694 Must·be·called·if·the·terminal·size·changes.796 Must·be·called·if·the·terminal·size·changes.
695 If797 If
696 .Dv·EL_SIGNAL798 EL_SIGNAL
697 has·been·set·with799 has·been·set·with
698 .Fn·el_set·,800 \fBel_set\fP(),
699 then·this·is·done·automatically.801 then·this·is·done·automatically.
700 Otherwise,·it's·the·responsibility·of·the·application·to·call802 Otherwise,·it's·the·responsibility·of·the·application·to·call
701 .Fn·el_resize803 \fBel_resize\fP()
702 on·the·appropriate·occasions.804 on·the·appropriate·occasions.
703 .It·Fn·el_cursor805 .TP
 806 \fBel_cursor\fP()
704 Move·the·cursor·to·the·right·(if·positive)·or·to·the·left·(if·negative)807 Move·the·cursor·to·the·right·(if·positive)·or·to·the·left·(if·negative)
705 .Fa·count808 \fIcount·\fP
706 characters.809 characters.
707 Returns·the·resulting·offset·of·the·cursor·from·the·beginning·of·the·line.810 Returns·the·resulting·offset·of·the·cursor·from·the·beginning·of·the·line.
708 .It·Fn·el_line811 .TP
 812 \fBel_line\fP()
709 Return·the·editing·information·for·the·current·line·in·a813 Return·the·editing·information·for·the·current·line·in·a
710 .Fa·LineInfo814 \fILineInfo·\fP
711 structure,·which·is·defined·as·follows:815 structure,·which·is·defined·as·follows:
712 .Bd·-literal 
713 typedef·struct·lineinfo·{816 typedef·struct·lineinfo·{
 817 .br
714 ····const·char·*buffer;····/*·address·of·buffer·*/818 ····const·char·*buffer;····/*·address·of·buffer·*/
 819 .br
715 ····const·char·*cursor;····/*·address·of·cursor·*/820 ····const·char·*cursor;····/*·address·of·cursor·*/
 821 .br
716 ····const·char·*lastchar;··/*·address·of·last·character·*/822 ····const·char·*lastchar;··/*·address·of·last·character·*/
 823 .br
717 }·LineInfo;824 }·LineInfo;
718 .Ed 
719 .Pp 
720 .Fa·buffer825 .br
  
 826 \fIbuffer·\fP
721 is·not·NUL·terminated.827 is·not·NUL·terminated.
722 This·function·may·be·called·after828 This·function·may·be·called·after
723 .Fn·el_gets829 \fBel_gets\fP()
724 to·obtain·the830 to·obtain·the
725 .Fa·LineInfo831 \fILineInfo·\fP
726 structure·pertaining·to·line·returned·by·that·function,832 structure·pertaining·to·line·returned·by·that·function,
727 and·from·within·user·defined·functions·added·with833 and·from·within·user·defined·functions·added·with
728 .Dv·EL_ADDFN·.834 EL_ADDFN·.
729 .It·Fn·el_insertstr835 .TP
 836 \fBel_insertstr\fP()
730 Insert837 Insert
731 .Fa·str838 \fIstr·\fP
732 into·the·line·at·the·cursor.839 into·the·line·at·the·cursor.
733 Returns·\-1·if840 Returns·\-1·if
734 .Fa·str841 \fIstr·\fP
735 is·empty·or·won't·fit,·and·0·otherwise.842 is·empty·or·won't·fit,·and·0·otherwise.
736 .It·Fn·el_deletestr843 .TP
 844 \fBel_deletestr\fP()
737 Delete845 Delete
738 .Fa·count846 \fIcount·\fP
739 characters·before·the·cursor.847 characters·before·the·cursor.
740 .El 
741 .Sh·HISTORY·LIST·FUNCTIONS848 .SH·HISTORY·LIST·FUNCTIONS
742 The·history·functions·use·a·common·data·structure,849 The·history·functions·use·a·common·data·structure,
743 .Fa·History·,850 \fIHistory\fP,
744 which·is·created·by851 which·is·created·by
745 .Fn·history_init852 \fBhistory_init\fP()
746 and·freed·by853 and·freed·by
747 .Fn·history_end·. 
748 .Pp854 \fBhistory_end\fP().
  
749 The·following·functions·are·available:855 The·following·functions·are·available:
750 .Bl·-tag·-width·4n 
751 .It·Fn·history_init856 .TP
 857 \fBhistory_init\fP()
752 Initialize·the·history·list,·and·return·a·data·structure858 Initialize·the·history·list,·and·return·a·data·structure
753 to·be·used·by·all·other·history·list·functions,·or859 to·be·used·by·all·other·history·list·functions,·or
754 .Dv·NULL860 NULL
755 on·failure.861 on·failure.
756 .It·Fn·history_end862 .TP
 863 \fBhistory_end\fP()
757 Clean·up·and·finish·with864 Clean·up·and·finish·with
758 .Fa·h·,865 \fIh\fP,
759 assumed·to·have·been·created·with866 assumed·to·have·been·created·with
760 .Fn·history_init·. 
761 .It·Fn·history867 \fBhistory_init\fP().
 868 .TP
 869 \fBhistory\fP()
762 Perform·operation870 Perform·operation
763 .Fa·op871 \fIop·\fP
764 on·the·history·list,·with·optional·arguments·as·needed·by·the872 on·the·history·list,·with·optional·arguments·as·needed·by·the
765 operation.873 operation.
766 .Fa·ev874 \fIev·\fP
767 is·changed·accordingly·to·operation.875 is·changed·accordingly·to·operation.
768 The·following·values·for876 The·following·values·for
769 .Fa·op877 \fIop·\fP
770 are·supported,·along·with·the·required·argument·list:878 are·supported,·along·with·the·required·argument·list:
771 .Bl·-tag·-width·4n 
772 .It·Dv·H_SETSIZE·,·Fa·"int·size"879 .RS
 880 .TP
 881 H_SETSIZE·,·\fIint·size\fP
773 Set·size·of·history·to882 Set·size·of·history·to
774 .Fa·size883 \fIsize·\fP
775 elements.884 elements.
776 .It·Dv·H_GETSIZE885 .TP
 886 H_GETSIZE
777 Get·number·of·events·currently·in·history.887 Get·number·of·events·currently·in·history.
778 .It·Dv·H_END888 .TP
 889 H_END
779 Cleans·up·and·finishes·with890 Cleans·up·and·finishes·with
780 .Fa·h·,891 \fIh\fP,
781 assumed·to·be·created·with892 assumed·to·be·created·with
782 .Fn·history_init·. 
783 .It·Dv·H_CLEAR893 \fBhistory_init\fP().
 894 .TP
 895 H_CLEAR
784 Clear·the·history.896 Clear·the·history.
 897 .TP
785 .It·Dv·H_FUNC·,·Fa·"void·*ptr"·,·Fa·"history_gfun_t·first"·,·\898 H_FUNC·,·\fIvoid·*ptr,·Fa·history_gfun_t·first,·\·\fP
786 Fa·"history_gfun_t·next"·,·Fa·"history_gfun_t·last"·,·\899 Fa·"history_gfun_t·next"·,·Fa·"history_gfun_t·last"·,·\
787 Fa·"history_gfun_t·prev"·,·Fa·"history_gfun_t·curr"·,·\900 Fa·"history_gfun_t·prev"·,·Fa·"history_gfun_t·curr"·,·\
788 Fa·"history_sfun_t·set"·,·Fa·"history_vfun_t·clear"·,·\901 Fa·"history_sfun_t·set"·,·Fa·"history_vfun_t·clear"·,·\
789 Fa·"history_efun_t·enter"·,·Fa·"history_efun_t·add"902 Fa·"history_efun_t·enter"·,·Fa·"history_efun_t·add"
790 Define·functions·to·perform·various·history·operations.903 Define·functions·to·perform·various·history·operations.
791 .Fa·ptr904 \fIptr·\fP
792 is·the·argument·given·to·a·function·when·it's·invoked.905 is·the·argument·given·to·a·function·when·it's·invoked.
793 .It·Dv·H_FIRST906 .TP
 907 H_FIRST
794 Return·the·first·element·in·the·history.908 Return·the·first·element·in·the·history.
795 .It·Dv·H_LAST909 .TP
 910 H_LAST
796 Return·the·last·element·in·the·history.911 Return·the·last·element·in·the·history.
797 .It·Dv·H_PREV912 .TP
 913 H_PREV
798 Return·the·previous·element·in·the·history.914 Return·the·previous·element·in·the·history.
799 It·is·newer·than·the·current·one.915 It·is·newer·than·the·current·one.
800 .It·Dv·H_NEXT916 .TP
 917 H_NEXT
801 Return·the·next·element·in·the·history.918 Return·the·next·element·in·the·history.
802 It·is·older·than·the·current·one.919 It·is·older·than·the·current·one.
803 .It·Dv·H_CURR920 .TP
 921 H_CURR
804 Return·the·current·element·in·the·history.922 Return·the·current·element·in·the·history.
805 .It·Dv·H_SET·,·Fa·"int·position"923 .TP
 924 H_SET·,·\fIint·position\fP
806 Set·the·cursor·to·point·to·the·requested·element.925 Set·the·cursor·to·point·to·the·requested·element.
807 .It·Dv·H_ADD·,·Fa·"const·char·*str"926 .TP
 927 H_ADD·,·\fIconst·char·*str\fP
808 Append928 Append
809 .Fa·str929 \fIstr·\fP
810 to·the·current·element·of·the·history,·or·perform·the930 to·the·current·element·of·the·history,·or·perform·the
811 .Dv·H_ENTER931 H_ENTER
812 operation·with·argument932 operation·with·argument
813 .Fa·str933 \fIstr·\fP
814 if·there·is·no·current·element.934 if·there·is·no·current·element.
815 .It·Dv·H_APPEND·,·Fa·"const·char·*str"935 .TP
 936 H_APPEND·,·\fIconst·char·*str\fP
816 Append937 Append
817 .Fa·str938 \fIstr·\fP
818 to·the·last·new·element·of·the·history.939 to·the·last·new·element·of·the·history.
819 .It·Dv·H_ENTER·,·Fa·"const·char·*str"940 .TP
 941 H_ENTER·,·\fIconst·char·*str\fP
820 Add942 Add
821 .Fa·str943 \fIstr·\fP
822 as·a·new·element·to·the·history·and,·if·necessary,944 as·a·new·element·to·the·history·and,·if·necessary,
823 removing·the·oldest·entry·to·keep·the·list·to·the·created·size.945 removing·the·oldest·entry·to·keep·the·list·to·the·created·size.
824 If946 If
825 .Dv·H_SETUNIQUE947 H_SETUNIQUE
826 has·been·called·with·a·non-zero·argument,·the·element948 has·been·called·with·a·non-zero·argument,·the·element
827 will·not·be·entered·into·the·history·if·its·contents·match949 will·not·be·entered·into·the·history·if·its·contents·match
828 the·ones·of·the·current·history·element.950 the·ones·of·the·current·history·element.
829 If·the·element·is·entered951 If·the·element·is·entered
830 .Fn·history952 \fBhistory\fP()
831 returns·1;·if·it·is·ignored·as·a·duplicate·returns·0.953 returns·1;·if·it·is·ignored·as·a·duplicate·returns·0.
832 Finally954 Finally
833 .Fn·history955 \fBhistory\fP()
834 returns·\-1·if·an·error·occurred.956 returns·\-1·if·an·error·occurred.
 957 .TP
835 .It·Dv·H_PREV_STR·,·Fa·"const·char·*str"958 H_PREV_STR·,·\fIconst·char·*str\fP
836 Return·the·closest·previous·event·that·starts·with959 Return·the·closest·previous·event·that·starts·with
837 .Fa·str·.960 \fIstr\fP.
 961 .TP
838 .It·Dv·H_NEXT_STR·,·Fa·"const·char·*str"962 H_NEXT_STR·,·\fIconst·char·*str\fP
839 Return·the·closest·next·event·that·starts·with963 Return·the·closest·next·event·that·starts·with
840 .Fa·str·. 
841 .It·Dv·H_PREV_EVENT·,·Fa·"int·e"964 \fIstr\fP.
 965 .TP
 966 H_PREV_EVENT·,·\fIint·e\fP
842 Return·the·previous·event·numbered967 Return·the·previous·event·numbered
843 .Fa·e·. 
844 .It·Dv·H_NEXT_EVENT·,·Fa·"int·e"968 \fIe\fP.
 969 .TP
 970 H_NEXT_EVENT·,·\fIint·e\fP
845 Return·the·next·event·numbered971 Return·the·next·event·numbered
846 .Fa·e·. 
847 .It·Dv·H_LOAD·,·Fa·"const·char·*file"972 \fIe\fP.
 973 .TP
 974 H_LOAD·,·\fIconst·char·*file\fP
848 Load·the·history·list·stored·in975 Load·the·history·list·stored·in
849 .Fa·file·. 
850 .It·Dv·H_SAVE·,·Fa·"const·char·*file"976 \fIfile\fP.
 977 .TP
 978 H_SAVE·,·\fIconst·char·*file\fP
851 Save·the·history·list·to979 Save·the·history·list·to
852 .Fa·file·. 
853 .It·Dv·H_SAVE_FP·,·Fa·"FILE·*fp"980 \fIfile\fP.
 981 .TP
 982 H_SAVE_FP·,·\fIFILE·*fp\fP
854 Save·the·history·list·to·the·opened983 Save·the·history·list·to·the·opened
855 .Ft·FILE984 .PP
 985 \fIFILE\fP
 986 .br
856 pointer987 pointer
857 .Fa·fp·.988 \fIfp\fP.
 989 .TP
858 .It·Dv·H_NSAVE_FP·,·Fa·"size_t·n"·,·Fa·"FILE·*fp"990 H_NSAVE_FP·,·\fIsize_t·n,·Fa·FILE·*fp\fP
859 Save·the·last991 Save·the·last
860 .Ft·n992 .PP
 993 \fIn\fP
 994 .br
861 history·entries·to·the·opened995 history·entries·to·the·opened
862 .Ft·FILE996 .PP
 997 \fIFILE\fP
 998 .br
863 pointer999 pointer
864 .Fa·fp·. 
865 .It·Dv·H_SETUNIQUE·,·Fa·"int·unique"1000 \fIfp\fP.
 1001 .TP
 1002 H_SETUNIQUE·,·\fIint·unique\fP
866 Set·flag·that·adjacent·identical·event·strings·should·not·be·entered1003 Set·flag·that·adjacent·identical·event·strings·should·not·be·entered
867 into·the·history.1004 into·the·history.
 1005 .TP
868 .It·Dv·H_GETUNIQUE1006 H_GETUNIQUE
869 Retrieve·the·current·setting·if·adjacent·identical·elements·should1007 Retrieve·the·current·setting·if·adjacent·identical·elements·should
870 be·entered·into·the·history.1008 be·entered·into·the·history.
871 .It·Dv·H_DEL·,·Fa·"int·e"1009 .TP
 1010 H_DEL·,·\fIint·e\fP
872 Delete·the·event·numbered1011 Delete·the·event·numbered
873 .Fa·e·.1012 \fIe\fP.
874 This·function·is·only·provided·for1013 This·function·is·only·provided·for
875 .Nm·readline1014 \fBreadline\fP
876 compatibility.1015 compatibility.
877 The·caller·is·responsible·for·free'ing·the·string·in·the·returned1016 The·caller·is·responsible·for·free'ing·the·string·in·the·returned
878 .Fa·HistEvent·. 
879 .El 
880 .Pp 
881 .Fn·history1017 \fIHistEvent\fP.
 1018 .RE
  
 1019 \fBhistory\fP();
882 returns·>=·0·if·the·operation1020 returns·>=·0·if·the·operation
883 .Fa·op1021 \fIop·\fP
884 succeeds.1022 succeeds.
885 Otherwise,·\-1·is·returned·and1023 Otherwise,·\-1·is·returned·and
886 .Fa·ev1024 \fIev·\fP
887 is·updated·to·contain·more·details·about·the·error.1025 is·updated·to·contain·more·details·about·the·error.
888 .El 
889 .Sh·TOKENIZATION·FUNCTIONS1026 .SH·TOKENIZATION·FUNCTIONS
890 The·tokenization·functions·use·a·common·data·structure,1027 The·tokenization·functions·use·a·common·data·structure,
891 .Fa·Tokenizer·,1028 \fITokenizer\fP,
892 which·is·created·by1029 which·is·created·by
893 .Fn·tok_init1030 \fBtok_init\fP()
894 and·freed·by1031 and·freed·by
895 .Fn·tok_end·. 
896 .Pp1032 \fBtok_end\fP().
  
897 The·following·functions·are·available:1033 The·following·functions·are·available:
898 .Bl·-tag·-width·4n 
899 .It·Fn·tok_init1034 .TP
 1035 \fBtok_init\fP()
900 Initialize·the·tokenizer,·and·return·a·data·structure1036 Initialize·the·tokenizer,·and·return·a·data·structure
901 to·be·used·by·all·other·tokenizer·functions.1037 to·be·used·by·all·other·tokenizer·functions.
902 .Fa·IFS1038 \fIIFS·\fP
903 contains·the·Input·Field·Separators,·which·defaults·to1039 contains·the·Input·Field·Separators,·which·defaults·to
904 .Aq·space·, 
905 .Aq·tab·,1040 <space·,>
 1041 <tab·,>
906 and1042 and
907 .Aq·newline1043 <newline>
908 if1044 if
909 .Dv·NULL·.1045 NULL·.
910 .It·Fn·tok_end1046 .TP
 1047 \fBtok_end\fP()
911 Clean·up·and·finish·with1048 Clean·up·and·finish·with
912 .Fa·t·,1049 \fIt\fP,
913 assumed·to·have·been·created·with1050 assumed·to·have·been·created·with
914 .Fn·tok_init·. 
915 .It·Fn·tok_reset1051 \fBtok_init\fP().
 1052 .TP
 1053 \fBtok_reset\fP()
916 Reset·the·tokenizer·state.1054 Reset·the·tokenizer·state.
917 Use·after·a·line·has·been·successfully·tokenized1055 Use·after·a·line·has·been·successfully·tokenized
918 by1056 by
919 .Fn·tok_line1057 \fBtok_line\fP()
920 or1058 or
921 .Fn·tok_str1059 \fBtok_str\fP()
922 and·before·a·new·line·is·to·be·tokenized.1060 and·before·a·new·line·is·to·be·tokenized.
923 .It·Fn·tok_line1061 .TP
 1062 \fBtok_line\fP()
924 Tokenize1063 Tokenize
925 .Fa·li·,1064 \fIli\fP,
926 If·successful,·modify:1065 If·successful,·modify:
927 .Fa·argv1066 \fIargv·\fP
928 to·contain·the·words,1067 to·contain·the·words,
929 .Fa·argc1068 \fIargc·\fP
930 to·contain·the·number·of·words,1069 to·contain·the·number·of·words,
931 .Fa·cursorc1070 \fIcursorc·\fP
932 (if·not1071 (if·not
933 .Dv·NULL·)1072 NULL·)
934 to·contain·the·index·of·the·word·containing·the·cursor,1073 to·contain·the·index·of·the·word·containing·the·cursor,
935 and1074 and
936 .Fa·cursoro1075 \fIcursoro·\fP
937 (if·not1076 (if·not
938 .Dv·NULL·)1077 NULL·)
939 to·contain·the·offset·within1078 to·contain·the·offset·within
940 .Fa·argv[cursorc]1079 \fIargv[cursorc]·\fP
941 of·the·cursor.1080 of·the·cursor.
942 .Pp 
943 Returns1081 Returns
944 0·if·successful,1082 0·if·successful,
945 \-1·for·an·internal·error,1083 \-1·for·an·internal·error,
946 1·for·an·unmatched·single·quote,1084 1·for·an·unmatched·single·quote,
947 2·for·an·unmatched·double·quote,1085 2·for·an·unmatched·double·quote,
948 and1086 and
949 3·for·a·backslash·quoted1087 3·for·a·backslash·quoted
950 .Aq·newline·.1088 <newline·.>
951 A·positive·exit·code·indicates·that·another·line·should·be·read1089 A·positive·exit·code·indicates·that·another·line·should·be·read
952 and·tokenization·attempted·again.1090 and·tokenization·attempted·again.
953 . 
954 .It·Fn·tok_str1091 .TP
 1092 \fBtok_str\fP()
955 A·simpler·form·of1093 A·simpler·form·of
956 .Fn·tok_line·; 
957 .Fa·str1094 \fBtok_line\fP(;·)
 1095 \fIstr·\fP
958 is·a·NUL·terminated·string·to·tokenize.1096 is·a·NUL·terminated·string·to·tokenize.
959 .El 
960 . 
961 .\"XXX.Sh·EXAMPLES 
962 .\"XXX:·provide·some·examples 
963 .Sh·SEE·ALSO1097 .SH·SEE·ALSO
964 .Xr·sh·1·, 
965 .Xr·signal·3·, 
966 .Xr·termcap·3·, 
967 .Xr·editrc·5·, 
968 .Xr·termcap·5·, 
969 .Xr·editline·71098 \fBsh\fP(1),
 1099 \fBsignal\fP(3),
 1100 \fBtermcap\fP(3),
 1101 \fBeditrc\fP(5),
 1102 \fBtermcap\fP(5),
 1103 \fBeditline\fP(7)
970 .Sh·HISTORY1104 .SH·HISTORY
971 The1105 The
972 .Nm1106 \fBeditline\fP
973 library·first·appeared·in1107 library·first·appeared·in
974 .Bx·4.4·.1108 Bx·4.4·.
975 .Dv·CC_REDISPLAY1109 CC_REDISPLAY
976 appeared·in1110 appeared·in
977 .Nx·1.3·.1111 Nx·1.3·.
978 .Dv·CC_REFRESH_BEEP·,1112 CC_REFRESH_BEEP·,
979 .Dv·EL_EDITMODE1113 EL_EDITMODE
980 and·the·readline·emulation·appeared·in1114 and·the·readline·emulation·appeared·in
981 .Nx·1.4·.1115 Nx·1.4·.
982 .Dv·EL_RPROMPT1116 EL_RPROMPT
983 appeared·in1117 appeared·in
984 .Nx·1.5·.1118 Nx·1.5·.
985 .Sh·AUTHORS1119 .SH·AUTHORS
  
986 .An·-nosplit1120 -nosplit
987 The1121 The
988 .Nm1122 \fBeditline\fP
989 library·was·written·by1123 library·was·written·by
  
990 .An·Christos·Zoulas·.1124 Christos·Zoulas·.
  
991 .An·Luke·Mewburn1125 Luke·Mewburn
992 wrote·this·manual·and·implemented1126 wrote·this·manual·and·implemented
993 .Dv·CC_REDISPLAY·,1127 CC_REDISPLAY·,
994 .Dv·CC_REFRESH_BEEP·,1128 CC_REFRESH_BEEP·,
995 .Dv·EL_EDITMODE·,1129 EL_EDITMODE·,
996 and1130 and
997 .Dv·EL_RPROMPT·.1131 EL_RPROMPT·.
  
998 .An·Jaromir·Dolecek1132 Jaromir·Dolecek
999 implemented·the·readline·emulation.1133 implemented·the·readline·emulation.
  
1000 .An·Johny·Mattsson1134 Johny·Mattsson
1001 implemented·wide-character·support.1135 implemented·wide-character·support.
1002 .Sh·BUGS1136 .SH·BUGS
1003 At·this·time,·it·is·the·responsibility·of·the·caller·to1137 At·this·time,·it·is·the·responsibility·of·the·caller·to
1004 check·the·result·of·the1138 check·the·result·of·the
1005 .Dv·EL_EDITMODE1139 EL_EDITMODE
1006 operation·of1140 operation·of
1007 .Fn·el_get1141 \fBel_get\fP()
1008 (after·an1142 (after·an
1009 .Fn·el_source1143 \fBel_source\fP()
1010 or1144 or
1011 .Fn·el_parse·)1145 \fBel_parse\fP()·)
1012 to·determine·if1146 to·determine·if
1013 .Nm1147 \fBeditline\fP
1014 should·be·used·for·further·input.1148 should·be·used·for·further·input.
1015 I.e.,1149 I.e.,
1016 .Dv·EL_EDITMODE1150 EL_EDITMODE
1017 is·purely·an·indication·of·the·result·of·the·most·recent1151 is·purely·an·indication·of·the·result·of·the·most·recent
1018 .Xr·editrc·5 
1019 .Ic·edit1152 \fBeditrc\fP(5)
 1153 \fBedit\fP
1020 command.1154 command.