xref: /dragonfly/contrib/tcsh-6/sh.decls.h (revision dca3c15d)
1 /* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.55 2009/02/25 22:54:54 christos Exp $ */
2 /*
3  * sh.decls.h	 External declarations from sh*.c
4  */
5 /*-
6  * Copyright (c) 1980, 1991 The Regents of the University of California.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  * 3. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  */
33 #ifndef _h_sh_decls
34 #define _h_sh_decls
35 
36 /*
37  * sh.c
38  */
39 extern	Char	 	 *gethdir	(const Char *);
40 extern	void		  dosource	(Char **, struct command *);
41 extern	void		  exitstat	(void);
42 extern	void		  goodbye	(Char **, struct command *);
43 extern	void		  importpath	(Char *);
44 extern	void		  initdesc	(void);
45 extern	void		  pintr		(void);
46 extern	void		  pintr1	(int);
47 extern	void		  phup		(void);
48 extern	void		  process	(int);
49 extern	void		  untty		(void);
50 #ifdef PROF
51 extern	void		  done		(int);
52 #else
53 extern	void		  xexit		(int);
54 #endif
55 extern	int		  grabpgrp	(int, pid_t);
56 
57 /*
58  * sh.dir.c
59  */
60 extern	void		  dinit		(Char *);
61 extern	void		  dodirs	(Char **, struct command *);
62 extern	Char		 *dcanon	(Char *, Char *);
63 extern	void		  dtildepr	(Char *);
64 extern	void		  dtilde	(void);
65 extern	void		  dochngd	(Char **, struct command *);
66 extern	Char		 *dnormalize	(const Char *, int);
67 extern	void		  dopushd	(Char **, struct command *);
68 extern	void		  dopopd	(Char **, struct command *);
69 extern	void		  dfree		(struct directory *);
70 extern	void		  dsetstack	(void);
71 extern	const Char	 *getstakd	(int);
72 extern	void		  recdirs	(Char *, int);
73 extern	void		  loaddirs	(Char *);
74 
75 /*
76  * sh.dol.c
77  */
78 extern	void		  Dfix		(struct command *);
79 extern	Char		 *Dfix1		(Char *);
80 extern	void		  heredoc	(Char *);
81 
82 /*
83  * sh.err.c
84  */
85 extern	void		  reset		(void);
86 extern	void		  cleanup_push_internal(void *, void (*fn) (void *)
87 #ifdef CLEANUP_DEBUG
88 						, const char *, size_t
89 #define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__)
90 #else
91 #define cleanup_push(v, f) cleanup_push_internal(v, f)
92 #endif
93 );
94 extern	void		  cleanup_ignore(void *);
95 extern	void		  cleanup_until	(void *);
96 extern	void		  cleanup_until_mark(void);
97 extern	size_t		  cleanup_push_mark(void);
98 extern	void		  cleanup_pop_mark(size_t);
99 extern	void		  open_cleanup(void *);
100 extern	void		  opendir_cleanup(void *);
101 extern	void		  sigint_cleanup(void *);
102 extern	void		  sigprocmask_cleanup(void *);
103 extern	void		  xfree_indirect(void *);
104 extern	void		  errinit	(void);
105 extern	void		  seterror	(unsigned int, ...);
106 extern	void		  stderror	(unsigned int, ...);
107 
108 /*
109  * sh.exec.c
110  */
111 extern	void		  doexec	(struct command *, int);
112 extern	void		  dohash	(Char **, struct command *);
113 extern	void		  dounhash	(Char **, struct command *);
114 extern	void		  execash	(Char **, struct command *);
115 extern	void		  hashstat	(Char **, struct command *);
116 extern	void		  xechoit	(Char **);
117 extern	int		  executable	(const Char *, const Char *, int);
118 extern	int		  tellmewhat	(struct wordent *, Char **);
119 extern	void		  dowhere	(Char **, struct command *);
120 extern	int		  find_cmd	(Char *, int);
121 
122 /*
123  * sh.exp.c
124  */
125 extern  Char     *filetest       (Char *, Char ***, int);
126 extern	int	 	  expr		(Char ***);
127 extern	int		  exp0		(Char ***, int);
128 
129 /*
130  * sh.file.c
131  */
132 #if defined(FILEC) && defined(TIOCSTI)
133 extern	size_t		  tenex		(Char *, size_t);
134 #endif
135 
136 /*
137  * sh.func.c
138  */
139 extern	void		  tsetenv	(const Char *, const Char *);
140 extern	void		  Unsetenv	(Char *);
141 extern	void		  doalias	(Char **, struct command *);
142 extern	void		  dobreak	(Char **, struct command *);
143 extern	void		  docontin	(Char **, struct command *);
144 extern	void		  doecho	(Char **, struct command *);
145 extern	void		  doelse	(Char **, struct command *);
146 extern	void		  doend		(Char **, struct command *);
147 extern	void		  doeval	(Char **, struct command *);
148 extern	void		  doexit	(Char **, struct command *);
149 extern	void		  doforeach	(Char **, struct command *);
150 extern	void		  doglob	(Char **, struct command *);
151 extern	void		  dogoto	(Char **, struct command *);
152 extern	void		  doif		(Char **, struct command *);
153 extern	void		  dolimit	(Char **, struct command *);
154 extern	void		  dologin	(Char **, struct command *);
155 extern	void		  dologout	(Char **, struct command *);
156 #ifdef NEWGRP
157 extern	void		  donewgrp	(Char **, struct command *);
158 #endif
159 extern	void		  donohup	(Char **, struct command *);
160 extern	void		  dohup		(Char **, struct command *);
161 extern	void		  doonintr	(Char **, struct command *);
162 extern	void		  doprintenv	(Char **, struct command *);
163 extern	void		  dorepeat	(Char **, struct command *);
164 extern	void		  dofiletest	(Char **, struct command *);
165 extern	void		  dosetenv	(Char **, struct command *);
166 extern	void		  dosuspend	(Char **, struct command *);
167 extern	void		  doswbrk	(Char **, struct command *);
168 extern	void		  doswitch	(Char **, struct command *);
169 extern	void		  doumask	(Char **, struct command *);
170 extern	void		  dounlimit	(Char **, struct command *);
171 extern	void		  dounsetenv	(Char **, struct command *);
172 extern	void		  dowhile	(Char **, struct command *);
173 extern	void		  dozip		(Char **, struct command *);
174 extern	void		  func		(struct command *,
175 					 const struct biltins *);
176 extern	void		  gotolab	(Char *);
177 extern const struct biltins *isbfunc	(struct command *);
178 extern	void		  prvars	(void);
179 extern	int		  srchx		(Char *);
180 extern	void		  unalias	(Char **, struct command *);
181 extern	void		  wfree		(void);
182 extern	void		  dobuiltins	(Char **, struct command *);
183 extern	void		  reexecute	(struct command *);
184 
185 /*
186  * sh.glob.c
187  */
188 extern	Char	 	 *globequal	(Char *);
189 extern	Char		**dobackp	(Char *, int);
190 extern	Char		 *globone	(Char *, int);
191 extern	int		  Gmatch	(const Char *, const Char *);
192 extern	int		  Gnmatch	(const Char *, const Char *,
193 					 const Char **);
194 extern	Char		**globall	(Char **, int);
195 extern	Char		**glob_all_or_error(Char **);
196 extern	void		  rscan		(Char **, void (*)(Char));
197 extern	int		  tglob		(Char **);
198 extern	void		  trim		(Char **);
199 
200 #if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS)
201 extern	char		 *xcatgets	(nl_catd, int, int, const char *);
202 #if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
203 extern	char		 *iconv_catgets	(nl_catd, int, int, const char *);
204 #endif
205 #endif
206 extern	void		  nlsinit	(void);
207 extern	void	          nlsclose	(void);
208 extern  int	  	  t_pmatch	(const Char *, const Char *,
209 					 const Char **, int);
210 
211 /*
212  * sh.hist.c
213  */
214 extern	void	 	  dohist	(Char **, struct command *);
215 extern  struct Hist 	 *enthist	(int, struct wordent *, int, int);
216 extern	void	 	  savehist	(struct wordent *, int);
217 extern	char		 *fmthist	(int, ptr_t);
218 extern	void		  rechist	(Char *, int);
219 extern	void		  loadhist	(Char *, int);
220 
221 /*
222  * sh.init.c
223  */
224 extern	void		  mesginit	(void);
225 
226 /*
227  * sh.lex.c
228  */
229 extern	void		  addla		(Char *);
230 extern	void		  bseek		(struct Ain *);
231 extern	void		  btell		(struct Ain *);
232 extern	void		  btoeof	(void);
233 extern	void		  copylex	(struct wordent *, struct wordent *);
234 extern	Char		 *domod		(Char *, Char);
235 extern	void		  freelex	(struct wordent *);
236 extern	int		  lex		(struct wordent *);
237 extern	void		  lex_cleanup	(void *);
238 extern	void		  prlex		(struct wordent *);
239 extern	eChar		  readc		(int);
240 extern	void		  settell	(void);
241 extern	void		  unreadc	(Char);
242 
243 
244 /*
245  * sh.misc.c
246  */
247 extern	int		  any		(const char *, Char);
248 extern	Char		**blkcpy	(Char **, Char **);
249 extern	void		  blkfree	(Char **);
250 extern	void		  blk_cleanup	(void *);
251 extern	void		  blk_indirect_cleanup(void *);
252 extern	int		  blklen	(Char **);
253 extern	void		  blkpr		(Char *const *);
254 extern	Char		 *blkexpand	(Char *const *);
255 extern	Char		**blkspl	(Char **, Char **);
256 extern	void		  closem	(void);
257 #ifndef CLOSE_ON_EXEC
258 extern  void 		  closech	(void);
259 #endif /* !CLOSE_ON_EXEC */
260 extern	Char		**copyblk	(Char **);
261 extern	int		  dcopy		(int, int);
262 extern	int		  dmove		(int, int);
263 extern	void		  donefds	(void);
264 extern	Char		  lastchr	(Char *);
265 extern	void		  lshift	(Char **, int);
266 extern	int		  number	(Char *);
267 extern	int		  prefix	(const Char *, const Char *);
268 extern	Char		**saveblk	(Char **);
269 extern	void		  setzero	(void *, size_t);
270 extern	Char		 *strip		(Char *);
271 extern	Char		 *quote		(Char *);
272 extern	const Char	 *quote_meta	(struct Strbuf *, const Char *);
273 extern	char		 *strnsave	(const char *, size_t);
274 extern	char		 *strsave	(const char *);
275 extern	void		  udvar		(Char *);
276 #ifndef POSIX
277 extern  char   	  	 *strstr	(const char *, const char *);
278 #endif /* !POSIX */
279 extern	char		 *strspl	(const char *, const char *);
280 extern	char		 *strend	(const char *);
281 extern	char		 *areadlink	(const char *);
282 extern	void		  xclose	(int);
283 extern	void		  xclosedir	(DIR *);
284 extern	int		  xcreat	(const char *, mode_t);
285 extern	struct group	 *xgetgrgid	(gid_t);
286 extern	struct passwd	 *xgetpwnam	(const char *);
287 extern	struct passwd	 *xgetpwuid	(uid_t);
288 extern	int		  xopen		(const char *, int, ...);
289 extern	ssize_t		  xread		(int, void *, size_t);
290 extern	int		  xtcsetattr	(int, int, const struct termios *);
291 extern	ssize_t		  xwrite	(int, const void *, size_t);
292 
293 /*
294  * sh.parse.c
295  */
296 extern	void		  alias		(struct wordent *);
297 extern	void		  freesyn	(struct command *);
298 extern struct command 	 *syntax	(const struct wordent *,
299 					 const struct wordent *, int);
300 extern	void		  syntax_cleanup(void *);
301 
302 /*
303  * sh.print.c
304  */
305 extern	void		  drainoline	(void);
306 extern	void		  flush		(void);
307 #ifdef BSDTIMES
308 extern	void		  pcsecs	(unsigned long);
309 #else /* !BSDTIMES */
310 # ifdef POSIX
311 extern	void		  pcsecs	(clock_t);
312 # else /* !POSIX */
313 extern	void		  pcsecs	(time_t);
314 # endif /* !POSIX */
315 #endif /* BSDTIMES */
316 #ifdef BSDLIMIT
317 extern	void		  psecs		(unsigned long);
318 #endif /* BSDLIMIT */
319 extern	int		  putpure	(int);
320 extern	int		  putraw	(int);
321 extern	void		  xputchar	(int);
322 #ifdef WIDE_STRINGS
323 extern	void		  putwraw	(Char);
324 extern	void		  xputwchar	(Char);
325 #else
326 # define putwraw(C) putraw(C)
327 # define xputwchar(C) xputchar(C)
328 #endif
329 extern	void		  output_raw_restore(void *);
330 
331 
332 /*
333  * sh.proc.c
334  */
335 extern	void		  dobg		(Char **, struct command *);
336 extern	void		  dobg1		(Char **, struct command *);
337 extern	void		  dofg		(Char **, struct command *);
338 extern	void		  dofg1		(Char **, struct command *);
339 extern	void		  dojobs	(Char **, struct command *);
340 extern	void		  dokill	(Char **, struct command *);
341 extern	void		  donotify	(Char **, struct command *);
342 extern	void		  dostop	(Char **, struct command *);
343 extern	void		  dowait	(Char **, struct command *);
344 extern	void		  palloc	(pid_t, struct command *);
345 extern	void		  panystop	(int);
346 extern	void		  pchild	(void);
347 extern	void		  pendjob	(void);
348 extern	pid_t		  pfork		(struct command *, int);
349 extern	void		  pgetty	(int, pid_t);
350 extern	void		  pjwait	(struct process *);
351 extern	void		  pnote		(void);
352 extern	void		  psavejob	(void);
353 extern	void		  psavejob_cleanup(void *);
354 extern	int		  pstart	(struct process *, int);
355 extern	void		  pwait		(void);
356 extern  struct process   *pfind		(Char *);
357 
358 /*
359  * sh.sem.c
360  */
361 extern	void		  execute	(struct command *, volatile int, int *,
362 					 int *, int);
363 extern	void		  mypipe	(int *);
364 
365 /*
366  * sh.set.c
367  */
368 extern	struct varent 	 *adrof1	(const Char *, struct varent *);
369 extern	void		  doset		(Char **, struct command *);
370 extern	void		  dolet		(Char **, struct command *);
371 extern	Char		 *putn		(int);
372 extern	int		  getn		(Char *);
373 extern	Char		 *value1	(Char *, struct varent *);
374 extern	void		  setcopy	(const Char *, const Char *, int);
375 extern	void		  setv		(const Char *, Char *, int);
376 extern	void		  set1		(const Char *, Char **,
377 					 struct varent *, int);
378 extern	void		  setq		(const Char *, Char **,
379 					 struct varent *, int);
380 extern	void		  unset		(Char **, struct command *);
381 extern	void		  unset1	(Char *[], struct varent *);
382 extern	void		  unsetv	(Char *);
383 extern	void		  setNS		(Char *);
384 extern	void		  shift		(Char **, struct command *);
385 extern	void		  plist		(struct varent *, int);
386 extern	Char		 *unparse	(struct command *);
387 #if defined(DSPMBYTE)
388 extern	void 		  update_dspmbyte_vars	(void);
389 extern	void		  autoset_dspmbyte	(const Char *);
390 #endif
391 extern	void		 exportpath	(Char **);
392 
393 /*
394  * sh.time.c
395  */
396 extern	void		  donice	(Char **, struct command *);
397 extern	void		  dotime	(Char **, struct command *);
398 #ifdef BSDTIMES
399 extern	void		  prusage	(struct sysrusage *,
400 					 struct sysrusage *,
401 					 timeval_t *, timeval_t *);
402 extern	void		  ruadd		(struct sysrusage *,
403 					 struct sysrusage *);
404 #else /* BSDTIMES */
405 # ifdef _SEQUENT_
406 extern	void		  prusage	(struct process_stats *,
407 					 struct process_stats *,
408 					 timeval_t *, timeval_t *);
409 extern	void		  ruadd		(struct process_stats *,
410 					 struct process_stats *);
411 # else /* !_SEQUENT_ */
412 #  ifdef POSIX
413 extern	void		  prusage	(struct tms *, struct tms *,
414 					 clock_t, clock_t);
415 #  else	/* !POSIX */
416 extern	void		  prusage	(struct tms *, struct tms *,
417 					 time_t, time_t);
418 #  endif /* !POSIX */
419 # endif	/* !_SEQUENT_ */
420 #endif /* BSDTIMES */
421 extern	void		  settimes	(void);
422 #if defined(BSDTIMES) || defined(_SEQUENT_)
423 extern	void		  tvsub		(struct timeval *,
424 					 struct timeval *,
425 					 struct timeval *);
426 #endif /* BSDTIMES || _SEQUENT_ */
427 
428 /*
429  * tw.parse.c
430  */
431 extern	 void		  copyn			(Char *, const Char *, size_t);
432 extern	 void		  catn			(Char *, const Char *, int);
433 
434 #endif /* _h_sh_decls */
435