1 /*
2  *
3  * This code contains changes by
4  *      Gunnar Ritter, Freiburg i. Br., Germany, 2002. All rights reserved.
5  *
6  * Conditions 1, 2, and 4 and the no-warranty notice below apply
7  * to these changes.
8  *
9  *
10  * Copyright (c) 1980, 1993
11  * 	The Regents of the University of California.  All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions
15  * are met:
16  * 1. Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions and the following disclaimer.
18  * 2. Redistributions in binary form must reproduce the above copyright
19  *    notice, this list of conditions and the following disclaimer in the
20  *    documentation and/or other materials provided with the distribution.
21  * 3. All advertising materials mentioning features or use of this software
22  *    must display the following acknowledgement:
23  * 	This product includes software developed by the University of
24  * 	California, Berkeley and its contributors.
25  * 4. Neither the name of the University nor the names of its contributors
26  *    may be used to endorse or promote products derived from this software
27  *    without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39  * SUCH DAMAGE.
40  *
41  *
42  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
43  *
44  * Redistribution and use in source and binary forms, with or without
45  * modification, are permitted provided that the following conditions
46  * are met:
47  *   Redistributions of source code and documentation must retain the
48  *    above copyright notice, this list of conditions and the following
49  *    disclaimer.
50  *   Redistributions in binary form must reproduce the above copyright
51  *    notice, this list of conditions and the following disclaimer in the
52  *    documentation and/or other materials provided with the distribution.
53  *   All advertising materials mentioning features or use of this software
54  *    must display the following acknowledgement:
55  *      This product includes software developed or owned by Caldera
56  *      International, Inc.
57  *   Neither the name of Caldera International, Inc. nor the names of
58  *    other contributors may be used to endorse or promote products
59  *    derived from this software without specific prior written permission.
60  *
61  * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
62  * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
63  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
64  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
65  * ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
66  * LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
67  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
68  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
69  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
70  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
71  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
72  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
73  *	@(#)ex_proto.h	1.28 (gritter) 2/19/05
74  */
75 
76 /*
77  * Function type definitions
78  */
79 
80 #define	join	xjoin
81 #define	word	xword
82 #define	getline	xgetline
83 
84 /* ex.c */
85 extern void erropen(void);
86 extern void usage(void);
87 extern void needarg(int);
88 extern void invopt(int);
89 extern char *tailpath(register char *);
90 extern int iownit(char *);
91 extern shand setsig(int, shand);
92 extern void init(void);
93 /* ex_addr.c */
94 extern void setdot(void);
95 extern void setdot1(void);
96 extern void setcount(void);
97 extern int getnum(void);
98 extern void setall(void);
99 extern void setnoaddr(void);
100 extern line *address(char *);
101 extern void setCNL(void);
102 extern void setNAEOL(void);
103 /* ex_cmds.c */
104 extern void commands(int, int);
105 /* ex_cmds2.c */
106 extern int cmdreg(void);
107 extern int endcmd(int);
108 extern void eol(void);
109 extern void error0(void);
110 extern int error1(char *);
111 extern void verror(char *, va_list);
112 extern void error(char *, ...);
113 extern void erewind(void);
114 extern void fixol(void);
115 extern int exclam(void);
116 extern void makargs(void);
117 extern void next(void);
118 extern void newline(void);
119 extern void nomore(void);
120 extern int quickly(void);
121 extern void resetflav(void);
122 extern void serror(char *, ...);
123 extern void setflav(void);
124 extern int skipend(void);
125 extern void tailspec(int);
126 extern void tail(char *);
127 extern void tail2of(char *);
128 extern void tailprim(register char *, int, bool);
129 extern void vcontin(bool);
130 extern void vnfl(void);
131 /* ex_cmdsub.c */
132 extern int append(int (*)(void), line *);
133 extern void appendnone(void);
134 extern void pargs(void);
135 extern void delete(int);
136 extern void deletenone(void);
137 extern void squish(void);
138 extern void join(int);
139 extern void move1(int, line *);
140 extern void move(void);
141 extern int getcopy(void);
142 extern int getput(void);
143 extern void put(int);
144 extern void pragged(int);
145 extern void shift(int, int);
146 extern void tagfind(bool);
147 extern void yank(int);
148 extern void zop(int);
149 extern void zop2(register int, register int);
150 extern void plines(line *, register line *, bool);
151 extern void pofix(void);
152 extern void somechange(void);
153 extern void undo(bool);
154 extern void mapcmd(int, int);
155 extern void cmdmac(char);
156 /* ex_data.c */
157 /* ex_extern.c */
158 /* ex_get.c */
159 extern void ignchar(void);
160 extern int getach(void);
161 extern int getchar(void);
162 extern void checkjunk(int);
163 extern int getcd(void);
164 extern int peekchar(void);
165 extern int peekcd(void);
166 extern int smunch(register int, char *);
167 extern int gettty(void);
168 extern void setin(line *);
169 /* ex_io.c */
170 extern void filename(int);
171 extern int getargs(void);
172 extern int gscan(void);
173 extern void getone(void);
174 extern int samei(struct stat *, char *);
175 extern void rop(int);
176 extern void rop2(void);
177 extern int iostats(void);
178 extern void rop3(int);
179 extern int edfile(void);
180 extern void wop(bool);
181 extern int getfile(void);
182 extern void putfile(int);
183 extern void wrerror(void);
184 extern void source(char *, bool);
185 extern void clrstats(void);
186 extern void checkmodeline(char *);
187 #ifdef	MB
188 extern int mbtowi(int *c, const char *s, size_t n);
189 extern int widthok(int c);
190 #endif	/* MB */
191 extern int GETWC(char *);
192 /* ex_put.c */
193 extern int (*setlist(int))(int);
194 extern void (*setnumb(int))(int);
195 extern int listchar(int);
196 extern int normchar(register int);
197 extern void slobber(int);
198 extern void numbline(int);
199 extern void normline(int);
200 extern int putchar(int);
201 extern int termchar(int);
202 extern void flush2(void);
203 extern void flush(void);
204 extern void flush1(void);
205 extern int plodput(int);
206 extern int plod(int);
207 extern void fgoto(void);
208 extern void tab(int);
209 extern void noteinp(void);
210 extern void termreset(void);
211 extern void draino(void);
212 extern void flusho(void);
213 extern void putnl(void);
214 extern void putS(char *);
215 extern int putch(int);
216 extern void putpad(char *);
217 extern void setoutt(void);
218 extern void vlprintf(char *, va_list);
219 extern void lprintf(char *, ...);
220 extern void putNFL(void);
221 extern void sTTY(int);
222 extern void pstart(void);
223 extern void pstop(void);
224 extern void ttcharoff(void);
225 extern struct termios ostart(void);
226 extern void normal(struct termios);
227 /* ex_re.c */
228 extern void global(int);
229 extern void gdelete(void);
230 extern int substitute(int);
231 extern int compsub(int);
232 extern void comprhs(int);
233 extern int getsub(void);
234 extern int dosubcon(bool, line *);
235 extern int confirmed(line *);
236 extern void ugo(int, int);
237 extern void dosub(void);
238 extern int fixcase(register int);
239 extern char *place(register char *, register char *, register char *);
240 extern void snote(register int, register int);
241 extern void cerror(char *);
242 extern struct regexp *savere(struct regexp *);
243 extern struct regexp *resre(struct regexp *);
244 extern int compile(int, int);
245 extern int same(register int, register int);
246 extern int ecmp(register char *, register char *, register int);
247 extern int execute(int, line *);
248 /* ex_set.c */
249 extern void set(void);
250 extern int setend(void);
251 extern void prall(void);
252 extern void propts(void);
253 extern void propt(register struct option *);
254 /* ex_subr.c */
255 extern int any(int, register char *);
256 extern int backtab(register int);
257 extern void change(void);
258 extern int column(register char *);
259 extern int lcolumn(register char *);
260 extern void comment(void);
261 extern void Copy(register char *, register char *, register int);
262 extern void copyw(register line *, register line *, register int);
263 extern void copywR(register line *, register line *, register int);
264 extern int ctlof(int);
265 extern void dingdong(void);
266 extern int fixindent(int);
267 extern void filioerr(char *);
268 extern char *genindent(register int);
269 extern void getDOT(void);
270 extern line *getmark(register int);
271 extern int getn(register char *);
272 extern void ignnEOF(void);
273 extern int is_white(int);
274 extern int junk(register int);
275 extern void killed(void);
276 extern void killcnt(register int);
277 extern int lineno(line *);
278 extern int lineDOL(void);
279 extern int lineDOT(void);
280 extern void markDOT(void);
281 extern void markpr(line *);
282 extern int markreg(register int);
283 extern char *mesg(register char *);
284 extern void merror1(intptr_t);
285 extern void vmerror(char *, va_list);
286 extern void merror(char *, ...);
287 extern int morelines(void);
288 extern void nonzero(void);
289 extern int notable(int);
290 extern void notempty(void);
291 extern void netchHAD(int);
292 extern void netchange(register int);
293 extern int printof(int);
294 extern void putmark(line *);
295 extern void putmk1(register line *, int);
296 extern char *plural(long);
297 extern int qcolumn(register char *, register char *);
298 extern int qcount(int);
299 extern void reverse(register line *, register line *);
300 extern void save(line *, register line *);
301 extern void save12(void);
302 extern void saveall(void);
303 extern int span(void);
304 extern void synced(void);
305 extern int skipwh(void);
306 extern void vsmerror(char *, va_list);
307 extern void smerror(char *, ...);
308 extern char *strend(register char *);
309 extern void strcLIN(char *);
310 extern void syserror(void);
311 extern int tabcol(int, int);
312 extern char *vfindcol(int);
313 extern char *vskipwh(register char *);
314 extern char *vpastwh(register char *);
315 extern int whitecnt(register char *);
316 extern void markit(line *);
317 extern void onhup(int);
318 extern void onintr(int);
319 extern void setrupt(void);
320 extern int preserve(void);
321 extern int exitex(int);
322 extern void onsusp(int);
323 extern void onemt(int);
324 extern char *movestr(char *, const char *);
325 extern char *safecp(char *, const char *, size_t, char *, ...);
326 extern char *safecat(char *, const char *, size_t, char *, ...);
327 /* ex_tagio.c */
328 extern int topen(char *, char *);
329 extern int tseek(int, off_t);
330 extern int tgets(char *, int, int);
331 extern void tclose(int);
332 /* ex_temp.c */
333 extern void fileinit(void);
334 extern void cleanup(bool);
335 extern void getline(line);
336 extern line putline(void);
337 extern char *getblock(line, int);
338 extern void blkio(bloc, char *, ssize_t (*)(int, void *, size_t));
339 extern void tlaste(void);
340 extern void tflush(void);
341 extern void synctmp(void);
342 extern void TSYNC(void);
343 extern void regio(short, ssize_t (*)(int, void *, size_t));
344 extern int REGblk(void);
345 extern struct strreg *mapreg(register int);
346 extern void KILLreg(register int);
347 extern ssize_t shread(void);
348 extern void putreg(int);
349 extern int partreg(int);
350 extern void notpart(register int);
351 extern int getREG(void);
352 extern void YANKreg(register int);
353 extern void kshift(void);
354 extern void YANKline(void);
355 extern void rbflush(void);
356 extern void regbuf(char, char *, int);
357 extern void tlaste(void);
358 /* ex_tty.c */
359 extern void gettmode(void);
360 extern void setterm(char *);
361 extern void setsize(void);
362 extern void zap(void);
363 extern char *gettlongname(register char *, char *);
364 extern char *fkey(int);
365 extern int cost(char *);
366 extern int countnum(int);
367 extern struct termios ostart(void);
368 extern void tostart(void);
369 extern void ostop(struct termios);
370 extern void tostop(void);
371 extern struct termios setty(struct termios);
372 extern void gTTY(int);
373 extern void noonl(void);
374 /* ex_unix.c */
375 extern void unix0(int);
376 extern struct termios unixex(char *, char *, int, int);
377 extern void unixwt(int, struct termios);
378 extern void filter(register int);
379 extern void recover(void);
380 extern void waitfor(void);
381 extern void revocer(void);
382 /* ex_v.c */
383 extern void oop(void);
384 extern void ovbeg(void);
385 extern void ovend(struct termios);
386 extern void vop(void);
387 extern void fixzero(void);
388 extern void savevis(void);
389 extern void undvis(void);
390 extern void setwind(void);
391 extern void vok(register cell *);
392 extern void vintr(int);
393 extern void vsetsiz(int);
394 extern void onwinch(int);
395 /* ex_vadj.c */
396 extern void vopen(line *, int);
397 extern int vreopen(int, int, int);
398 extern int vglitchup(int, int);
399 extern void vinslin(register int, register int, int);
400 extern void vopenup(int, int, int);
401 extern void vadjAL(int, int);
402 extern void vrollup(int);
403 extern void vup1(void);
404 extern void vmoveitup(register int, int);
405 extern void vscroll(register int);
406 extern void vscrap(void);
407 extern void vrepaint(char *);
408 extern void vredraw(register int);
409 extern void vdellin(int, int, int);
410 extern void vadjDL(int, int);
411 extern void vsyncCL(void);
412 extern void vsync(register int);
413 extern void vsync1(register int);
414 extern void vcloseup(int, register int);
415 extern void vreplace(int, int, int);
416 extern void sethard(void);
417 extern void vdirty(register int, register int);
418 /* ex_version.c */
419 extern void printver(void);
420 /* ex_vget.c */
421 extern void ungetkey(int);
422 extern int getkey(void);
423 extern int peekbr(void);
424 extern int getbr(void);
425 extern int getesc(void);
426 extern int peekkey(void);
427 extern int readecho(int);
428 extern void setLAST(void);
429 extern void addtext(char *);
430 extern void setDEL(void);
431 extern void setBUF(register cell *);
432 extern void addto(register cell *, register char *);
433 extern int noteit(int);
434 extern void obeep(void);
435 extern void macpush(char *, int);
436 extern int vgetcnt(void);
437 extern void trapalarm(int);
438 extern int fastpeekkey(void);
439 /* ex_vmain.c */
440 extern void vmain(void);
441 extern void grabtag(void);
442 extern void prepapp(void);
443 extern void vremote(int, void (*)(int), int);
444 extern void vsave(void);
445 extern void vzop(int, int, register int);
446 extern cell *str2cell(cell *, register char *);
447 extern char *cell2str(char *, register cell *);
448 extern cell *cellcpy(cell *, register cell *);
449 extern size_t cellen(register cell *);
450 extern cell *cellcat(cell *, register cell *);
451 /* ex_voper.c */
452 extern void operate(register int, register int);
453 extern int find(int);
454 extern int word(register void (*)(int), int);
455 extern void eend(register void (*)(int));
456 extern int wordof(int, register char *);
457 extern int wordch(char *);
458 extern int edge(void);
459 extern int margin(void);
460 /* ex_vops.c */
461 extern void vUndo(void);
462 extern void vundo(int);
463 extern void vmacchng(int);
464 extern void vnoapp(void);
465 extern void vmove(int);
466 extern void vdelete(int);
467 extern void vchange(int);
468 extern void voOpen(int, register int);
469 extern void vshftop(int);
470 extern void vfilter(int);
471 extern int xdw(void);
472 extern void vshift(int);
473 extern void vrep(register int);
474 extern void vyankit(int);
475 extern void setpk(void);
476 extern void vkillDEL(void);
477 /* ex_vops2.c */
478 extern void bleep(register int, char *);
479 extern int vdcMID(void);
480 extern void takeout(cell *);
481 extern int ateopr(void);
482 extern void showmode(int);
483 extern void addc(cell);
484 extern void vappend(int, int, int);
485 extern void back1(void);
486 extern char *vgetline(int, register char *, bool *, int);
487 extern void vdoappend(char *);
488 extern int vgetsplit(void);
489 extern int vmaxrep(int, register int);
490 /* ex_vops3.c */
491 extern int llfind(bool, int, void (*)(int), line *);
492 extern int endsent(bool);
493 extern int endPS(void);
494 extern int lindent(line *);
495 extern int lmatchp(line *);
496 extern void lsmatch(char *);
497 extern int ltosolid(void);
498 extern int ltosol1(register char *);
499 extern int lskipbal(register char *);
500 extern int lskipatom(void);
501 extern int lskipa1(register char *);
502 extern int lnext(void);
503 extern int lbrack(register int, void (*)(int));
504 extern int isa(register char *);
505 extern void vswitch(int);
506 #ifdef	MB
507 extern int	wskipleft(char *, char *);
508 extern int	wskipright(char *, char *);
509 extern int	wsamechar(char *, int);
510 #endif	/* MB */
511 /* ex_vput.c */
512 extern void vclear(void);
513 extern void vclrcell(register cell *, register int);
514 extern void vclrlin(int, line *);
515 extern void vclreol(void);
516 extern void vclrech(bool);
517 extern void fixech(void);
518 extern void vcursbef(register char *);
519 extern void vcursat(register char *);
520 extern void vcursaft(register char *);
521 extern void vfixcurs(void);
522 extern void vsetcurs(register char *);
523 extern void vigoto(int, int);
524 extern void vcsync(void);
525 extern void vgotoCL(register int);
526 extern void vigotoCL(register int);
527 extern void vgoto(register int, register int);
528 extern void vgotab(void);
529 extern void vprepins(void);
530 extern void vmaktop(register int, cell *);
531 extern int vinschar(int);
532 extern void vrigid(void);
533 extern void vneedpos(int);
534 extern void vnpins(int);
535 extern void vishft(void);
536 extern void viin(int);
537 extern void godm(void);
538 extern void enddm(void);
539 extern void goim(void);
540 extern void endim(void);
541 extern int vputchar(register int);
542 extern void physdc(int, int);
543 extern int vputch(int);
544 /* ex_vwind.c */
545 extern void vmoveto(register line *, char *, int);
546 extern void vjumpto(register line *, char *, int);
547 extern void vupdown(register int, char *);
548 extern void vup(register int, register int, int);
549 extern void vdown(register int, register int, int);
550 extern void vcontext(register line *, int);
551 extern void vclean(void);
552 extern void vshow(line *, line *);
553 extern void vreset(int);
554 extern line *vback(register line *, register int);
555 extern int vfit(register line *, int);
556 extern void vroll(register int);
557 extern void vrollR(register int);
558 extern int vcookit(register int);
559 extern int vdepth(void);
560 extern void vnline(char *);
561 /* malloc.c */
562 /* mapmalloc.c */
563 extern char *poolsbrk(intptr_t);
564 /* printf.c */
565 extern int printf(const char *, ...);
566 extern int vprintf(const char *, va_list);
567 extern char *p_dconv(long, char *);
568