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