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