xref: /openbsd-src/bin/csh/extern.h (revision ce7279d89b71439c96c854f612f4ac93a461fdc4)
1*ce7279d8Sjsg /*	$OpenBSD: extern.h,v 1.32 2024/05/21 05:00:47 jsg Exp $	*/
26b38f156Smillert /*	$NetBSD: extern.h,v 1.8 1996/10/31 23:50:54 christos Exp $	*/
3df930be7Sderaadt 
4df930be7Sderaadt /*-
5df930be7Sderaadt  * Copyright (c) 1991, 1993
6df930be7Sderaadt  *	The Regents of the University of California.  All rights reserved.
7df930be7Sderaadt  *
8df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
9df930be7Sderaadt  * modification, are permitted provided that the following conditions
10df930be7Sderaadt  * are met:
11df930be7Sderaadt  * 1. Redistributions of source code must retain the above copyright
12df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer.
13df930be7Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
14df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer in the
15df930be7Sderaadt  *    documentation and/or other materials provided with the distribution.
1629295d1cSmillert  * 3. Neither the name of the University nor the names of its contributors
17df930be7Sderaadt  *    may be used to endorse or promote products derived from this software
18df930be7Sderaadt  *    without specific prior written permission.
19df930be7Sderaadt  *
20df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21df930be7Sderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22df930be7Sderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23df930be7Sderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24df930be7Sderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25df930be7Sderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26df930be7Sderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27df930be7Sderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28df930be7Sderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29df930be7Sderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30df930be7Sderaadt  * SUCH DAMAGE.
31df930be7Sderaadt  *
32df930be7Sderaadt  *	@(#)extern.h	8.1 (Berkeley) 5/31/93
33df930be7Sderaadt  */
34df930be7Sderaadt 
35df930be7Sderaadt /*
36df930be7Sderaadt  * csh.c
37df930be7Sderaadt  */
386a01f4acSderaadt int	gethdir(Char *, int);
39c72b5b24Smillert void	dosource(Char **, struct command *);
40c72b5b24Smillert void	exitstat(void);
41c72b5b24Smillert void	goodbye(void);
42c72b5b24Smillert void	importpath(Char *);
43c72b5b24Smillert void	initdesc(void);
44c72b5b24Smillert void	pintr(int);
45c72b5b24Smillert void	pintr1(bool);
46c72b5b24Smillert void	printprompt(void);
47c72b5b24Smillert void	process(bool);
48c72b5b24Smillert void	rechist(void);
49c72b5b24Smillert void	untty(void);
50c72b5b24Smillert int	vis_fputc(int, FILE *);
51c72b5b24Smillert void	xexit(int);
52df930be7Sderaadt 
53df930be7Sderaadt /*
54df930be7Sderaadt  * dir.c
55df930be7Sderaadt  */
56c72b5b24Smillert void	 dinit(Char *);
57c72b5b24Smillert void	 dodirs(Char **, struct command *);
58c72b5b24Smillert Char	*dcanon(Char *, Char *);
59c72b5b24Smillert void	 dtildepr(Char *, Char *);
60c72b5b24Smillert void	 dtilde(void);
61c72b5b24Smillert void	 dochngd(Char **, struct command *);
62c72b5b24Smillert Char	*dnormalize(Char *);
63c72b5b24Smillert void	 dopushd(Char **, struct command *);
64c72b5b24Smillert void	 dopopd(Char **, struct command *);
65df930be7Sderaadt struct directory;
66c72b5b24Smillert void	 dfree(struct directory *);
67df930be7Sderaadt 
68df930be7Sderaadt /*
69df930be7Sderaadt  * dol.c
70df930be7Sderaadt  */
71c72b5b24Smillert void	 Dfix(struct command *);
72c72b5b24Smillert Char	*Dfix1(Char *);
73c72b5b24Smillert void	 heredoc(Char *);
74df930be7Sderaadt 
75df930be7Sderaadt /*
76df930be7Sderaadt  * err.c
77df930be7Sderaadt  */
78c72b5b24Smillert void	seterror(int, ...);
79c72b5b24Smillert void	stderror(int, ...);
80df930be7Sderaadt 
81df930be7Sderaadt /*
82df930be7Sderaadt  * exec.c
83df930be7Sderaadt  */
84c72b5b24Smillert void	doexec(Char **, struct command *);
85c72b5b24Smillert void	dohash(Char **, struct command *);
86c72b5b24Smillert void	dounhash(Char **, struct command *);
87c72b5b24Smillert void	dowhich(Char **, struct command *);
88c72b5b24Smillert void	execash(Char **, struct command *);
89c72b5b24Smillert void	hashstat(Char **, struct command *);
90c72b5b24Smillert void	xechoit(Char **);
91df930be7Sderaadt 
92df930be7Sderaadt /*
93df930be7Sderaadt  * exp.c
94df930be7Sderaadt  */
95c72b5b24Smillert int	expr(Char ***);
96c72b5b24Smillert int	exp0(Char ***, bool);
97df930be7Sderaadt 
98df930be7Sderaadt /*
99df930be7Sderaadt  * file.c
100df930be7Sderaadt  */
101c72b5b24Smillert int	tenex(Char *, int);
102df930be7Sderaadt 
103df930be7Sderaadt /*
104df930be7Sderaadt  * func.c
105df930be7Sderaadt  */
106c72b5b24Smillert void	Setenv(Char *, Char *);
107c72b5b24Smillert void	doalias(Char **, struct command *);
108c72b5b24Smillert void	dobreak(Char **, struct command *);
109c72b5b24Smillert void	docontin(Char **, struct command *);
110c72b5b24Smillert void	doecho(Char **, struct command *);
111c72b5b24Smillert void	doelse(Char **, struct command *);
112c72b5b24Smillert void	doend(Char **, struct command *);
113c72b5b24Smillert void	doeval(Char **, struct command *);
114c72b5b24Smillert void	doexit(Char **, struct command *);
115c72b5b24Smillert void	doforeach(Char **, struct command *);
116c72b5b24Smillert void	doglob(Char **, struct command *);
117c72b5b24Smillert void	dogoto(Char **, struct command *);
118c72b5b24Smillert void	doif(Char **, struct command *);
119c72b5b24Smillert void	dolimit(Char **, struct command *);
120c72b5b24Smillert void	dologin(Char **, struct command *);
121c72b5b24Smillert void	dologout(Char **, struct command *);
122c72b5b24Smillert void	donohup(Char **, struct command *);
123c72b5b24Smillert void	doonintr(Char **, struct command *);
124c72b5b24Smillert void	dorepeat(Char **, struct command *);
125c72b5b24Smillert void	dosetenv(Char **, struct command *);
126c72b5b24Smillert void	dosuspend(Char **, struct command *);
127c72b5b24Smillert void	doswbrk(Char **, struct command *);
128c72b5b24Smillert void	doswitch(Char **, struct command *);
129c72b5b24Smillert void	doumask(Char **, struct command *);
130c72b5b24Smillert void	dounlimit(Char **, struct command *);
131c72b5b24Smillert void	dounsetenv(Char **, struct command *);
132c72b5b24Smillert void	dowhile(Char **, struct command *);
133c72b5b24Smillert void	dozip(Char **, struct command *);
134c72b5b24Smillert void	func(struct command *, struct biltins *);
135df930be7Sderaadt struct	biltins *
136c72b5b24Smillert 	isbfunc(struct command *);
137c72b5b24Smillert void	prvars(void);
138c72b5b24Smillert void	gotolab(Char *);
139c72b5b24Smillert int	srchx(Char *);
140c72b5b24Smillert void	unalias(Char **, struct command *);
141c72b5b24Smillert void	wfree(void);
142df930be7Sderaadt 
143df930be7Sderaadt /*
144df930be7Sderaadt  * glob.c
145df930be7Sderaadt  */
146c72b5b24Smillert Char	**dobackp(Char *, bool);
147c72b5b24Smillert void	  Gcat(Char *, Char *);
148c72b5b24Smillert Char	 *globone(Char *, int);
149c72b5b24Smillert int	  Gmatch(Char *, Char *);
150c72b5b24Smillert void	  ginit(void);
151c72b5b24Smillert Char	**globall(Char **);
15274637cb2Sderaadt void	  rscan(Char **, void (*)(int));
153c72b5b24Smillert void	  tglob(Char **);
154c72b5b24Smillert void	  trim(Char **);
155cfb4977bStedu int	  sortscmp(const void *, const void *);
156df930be7Sderaadt 
157df930be7Sderaadt /*
158df930be7Sderaadt  * hist.c
159df930be7Sderaadt  */
160c72b5b24Smillert void	dohist(Char **, struct command *);
161df930be7Sderaadt struct Hist *
162c72b5b24Smillert 	enthist(int, struct wordent *, bool);
163c72b5b24Smillert void	savehist(struct wordent *);
164df930be7Sderaadt 
165df930be7Sderaadt /*
166df930be7Sderaadt  * lex.c
167df930be7Sderaadt  */
168c72b5b24Smillert void	 addla(Char *);
169c72b5b24Smillert void	 bseek(struct Ain *);
170c72b5b24Smillert void	 btell(struct Ain *);
171c72b5b24Smillert void	 btoeof(void);
172c72b5b24Smillert void	 copylex(struct wordent *, struct wordent *);
173c72b5b24Smillert Char	*domod(Char *, int);
174c72b5b24Smillert void	 freelex(struct wordent *);
175c72b5b24Smillert int	 lex(struct wordent *);
176c72b5b24Smillert void	 prlex(FILE *, struct wordent *);
177c72b5b24Smillert int	 readc(bool);
178c72b5b24Smillert void	 settell(void);
179c72b5b24Smillert void	 unreadc(int);
180df930be7Sderaadt 
181df930be7Sderaadt /*
182df930be7Sderaadt  * misc.c
183df930be7Sderaadt  */
1845f867525Sderaadt int	  any(char *, int);
185c72b5b24Smillert Char	**blkcat(Char **, Char **);
186c72b5b24Smillert Char	**blkcpy(Char **, Char **);
187c72b5b24Smillert Char	**blkend(Char **);
188c72b5b24Smillert void	  blkfree(Char **);
189c72b5b24Smillert int	  blklen(Char **);
190c72b5b24Smillert void	  blkpr(FILE *, Char **);
191c72b5b24Smillert Char	**blkspl(Char **, Char **);
192c72b5b24Smillert void	  closem(void);
193c72b5b24Smillert Char	**copyblk(Char **);
194c72b5b24Smillert int	  dcopy(int, int);
195c72b5b24Smillert int	  dmove(int, int);
196c72b5b24Smillert void	  donefds(void);
197c72b5b24Smillert Char	  lastchr(Char *);
198c72b5b24Smillert void	  lshift(Char **, int);
199c72b5b24Smillert int	  number(Char *);
200c72b5b24Smillert int	  prefix(Char *, Char *);
201c72b5b24Smillert Char	**saveblk(Char **);
202c72b5b24Smillert Char	 *strip(Char *);
203c72b5b24Smillert Char	 *quote(Char *);
204c72b5b24Smillert void	  udvar(Char *);
205df930be7Sderaadt 
206df930be7Sderaadt /*
207df930be7Sderaadt  * parse.c
208df930be7Sderaadt  */
209c72b5b24Smillert void	alias(struct wordent *);
210c72b5b24Smillert void	freesyn(struct command *);
211df930be7Sderaadt struct command *
212c72b5b24Smillert 	syntax(struct wordent *, struct wordent *, int);
213df930be7Sderaadt 
214df930be7Sderaadt /*
215df930be7Sderaadt  * proc.c
216df930be7Sderaadt  */
217c72b5b24Smillert void	dobg(Char **, struct command *);
218c72b5b24Smillert void	dobg1(Char **, struct command *);
219c72b5b24Smillert void	dofg(Char **, struct command *);
220c72b5b24Smillert void	dofg1(Char **, struct command *);
221c72b5b24Smillert void	dojobs(Char **, struct command *);
222c72b5b24Smillert void	dokill(Char **, struct command *);
223c72b5b24Smillert void	donotify(Char **, struct command *);
224c72b5b24Smillert void	dostop(Char **, struct command *);
225c72b5b24Smillert void	dowait(Char **, struct command *);
226c72b5b24Smillert void	palloc(int, struct command *);
227c72b5b24Smillert void	panystop(bool);
228c72b5b24Smillert void	pchild(int);
229c72b5b24Smillert void	pendjob(void);
230df930be7Sderaadt struct process *
231c72b5b24Smillert 	pfind(Char *);
232c72b5b24Smillert int	pfork(struct command *, int);
233c72b5b24Smillert void	pgetty(int, int);
234c72b5b24Smillert void	pjwait(struct process *);
235c72b5b24Smillert void	pnote(void);
236c72b5b24Smillert void	prestjob(void);
237c72b5b24Smillert void	psavejob(void);
238c72b5b24Smillert void	pstart(struct process *, int);
239c72b5b24Smillert void	pwait(void);
240df930be7Sderaadt 
241df930be7Sderaadt /*
242df930be7Sderaadt  * sem.c
243df930be7Sderaadt  */
244c72b5b24Smillert void	execute(struct command *, int, int *, int *);
245c72b5b24Smillert void	mypipe(int *);
246df930be7Sderaadt 
247df930be7Sderaadt /*
248df930be7Sderaadt  * set.c
249df930be7Sderaadt  */
250df930be7Sderaadt struct	varent
251c72b5b24Smillert 	*adrof1(Char *, struct varent *);
252c72b5b24Smillert void	 doset(Char **, struct command *);
253c72b5b24Smillert void	 dolet(Char **, struct command *);
254c72b5b24Smillert Char	*putn(int);
255c72b5b24Smillert int	 getn(Char *);
256c72b5b24Smillert Char	*value1(Char *, struct varent *);
257c72b5b24Smillert void	 set(Char *, Char *);
258c72b5b24Smillert void	 set1(Char *, Char **, struct varent *);
259c72b5b24Smillert void	 setq(Char *, Char **, struct varent *);
260c72b5b24Smillert void	 unset(Char **, struct command *);
261c72b5b24Smillert void	 unset1(Char *[], struct varent *);
262c72b5b24Smillert void	 unsetv(Char *);
263c72b5b24Smillert void	 setNS(Char *);
264c72b5b24Smillert void	 shift(Char **, struct command *);
265c72b5b24Smillert void	 plist(struct varent *);
266df930be7Sderaadt 
267df930be7Sderaadt /*
268df930be7Sderaadt  * time.c
269df930be7Sderaadt  */
270c72b5b24Smillert void	donice(Char **, struct command *);
271c72b5b24Smillert void	dotime(Char **, struct command *);
272f3c3a9c6Smillert void	prusage(struct rusage *, struct rusage *,
273833a4d71Santon 	    struct timespec *, struct timespec *);
274c72b5b24Smillert void	ruadd(struct rusage *, struct rusage *);
275c72b5b24Smillert void	settimes(void);
276c72b5b24Smillert void	pcsecs(long);
277c72b5b24Smillert void	psecs(long);
278df930be7Sderaadt 
279df930be7Sderaadt /*
280df930be7Sderaadt  * alloc.c
281df930be7Sderaadt  */
28244cfad27Smillert void	*xmalloc(size_t);
28344cfad27Smillert void	*xreallocarray(void *, size_t, size_t);
28444cfad27Smillert void	*xcalloc(size_t, size_t);
28544cfad27Smillert char	*xstrdup(const char *);
286df930be7Sderaadt 
287df930be7Sderaadt /*
288df930be7Sderaadt  * str.c:
289df930be7Sderaadt  */
290ba0a7c12Snaddy size_t	  Strlcpy(Char *, const Char *, size_t);
291ba0a7c12Snaddy size_t	  Strlcat(Char *, const Char *, size_t);
292ba0a7c12Snaddy Char	 *Strchr(Char *, int);
293ba0a7c12Snaddy Char	 *Strrchr(Char *, int);
294ba0a7c12Snaddy Char	 *Strspl(Char *, Char *);
295ba0a7c12Snaddy size_t	  Strlen(Char *);
296ba0a7c12Snaddy int	  Strcmp(Char *, Char *);
297ba0a7c12Snaddy int	  Strncmp(Char *, Char *, size_t);
298ba0a7c12Snaddy Char	 *Strsave(Char *);
299ba0a7c12Snaddy Char	 *Strend(Char *);
300ba0a7c12Snaddy Char	 *Strstr(Char *, Char *);
301c72b5b24Smillert Char	 *str2short(char *);
302c72b5b24Smillert Char	**blk2short(char **);
303c72b5b24Smillert char	 *short2str(Char *);
304c72b5b24Smillert char	**short2blk(Char **);
305c72b5b24Smillert char	 *short2qstr(Char *);
306c72b5b24Smillert char	 *vis_str(Char *);
307