sh.decls.h 14.8 KB
Newer Older
1
/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.68 2016/08/01 16:21:09 christos Exp $ */
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
/*
 * sh.decls.h	 External declarations from sh*.c
 */
/*-
 * Copyright (c) 1980, 1991 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */
#ifndef _h_sh_decls
#define _h_sh_decls

/*
 * sh.c
 */
39 40 41 42 43 44 45 46 47 48 49
extern	Char	 	 *gethdir	(const Char *);
extern	void		  dosource	(Char **, struct command *);
extern	void		  exitstat	(void);
extern	void		  goodbye	(Char **, struct command *);
extern	void		  importpath	(Char *);
extern	void		  initdesc	(void);
extern	void		  pintr		(void);
extern	void		  pintr1	(int);
extern	void		  phup		(void);
extern	void		  process	(int);
extern	void		  untty		(void);
50
#ifdef PROF
51
extern	void		  done		(int) __attribute__((__noreturn__));
52
#else
53
extern	void		  xexit		(int) __attribute__((__noreturn__));
54
#endif
55
extern	int		  grabpgrp	(int, pid_t);
56 57 58 59

/*
 * sh.dir.c
 */
60 61 62 63 64 65 66 67 68 69 70 71 72 73
extern	void		  dinit		(Char *);
extern	void		  dodirs	(Char **, struct command *);
extern	Char		 *dcanon	(Char *, Char *);
extern	void		  dtildepr	(Char *);
extern	void		  dtilde	(void);
extern	void		  dochngd	(Char **, struct command *);
extern	Char		 *dnormalize	(const Char *, int);
extern	void		  dopushd	(Char **, struct command *);
extern	void		  dopopd	(Char **, struct command *);
extern	void		  dfree		(struct directory *);
extern	void		  dsetstack	(void);
extern	const Char	 *getstakd	(int);
extern	void		  recdirs	(Char *, int);
extern	void		  loaddirs	(Char *);
74 75 76 77

/*
 * sh.dol.c
 */
78 79 80
extern	void		  Dfix		(struct command *);
extern	Char		 *Dfix1		(Char *);
extern	void		  heredoc	(Char *);
81
extern  Char		 *randsuf	(void);
82 83 84 85

/*
 * sh.err.c
 */
86
extern	void		  reset		(void) __attribute__((__noreturn__));
87 88 89 90 91 92 93 94
extern	void		  cleanup_push_internal(void *, void (*fn) (void *)
#ifdef CLEANUP_DEBUG
						, const char *, size_t
#define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__)
#else
#define cleanup_push(v, f) cleanup_push_internal(v, f)
#endif
);
95
extern	int		  cleanup_reset(void);
96
extern	void		  cleanup_ignore(void *);
97
extern	void		  cleanup_until(void *);
98 99 100 101 102 103 104 105 106 107
extern	void		  cleanup_until_mark(void);
extern	size_t		  cleanup_push_mark(void);
extern	void		  cleanup_pop_mark(size_t);
extern	void		  open_cleanup(void *);
extern	void		  opendir_cleanup(void *);
extern	void		  sigint_cleanup(void *);
extern	void		  sigprocmask_cleanup(void *);
extern	void		  xfree_indirect(void *);
extern	void		  errinit	(void);
extern	void		  seterror	(unsigned int, ...);
108 109 110
extern	void		  fixerror	(void);
extern	void		  stderror	(unsigned int, ...)
    __attribute__((__noreturn__));
111 112 113 114

/*
 * sh.exec.c
 */
115 116 117 118 119 120 121 122 123 124
extern	void		  doexec	(struct command *, int);
extern	void		  dohash	(Char **, struct command *);
extern	void		  dounhash	(Char **, struct command *);
extern	void		  execash	(Char **, struct command *);
extern	void		  hashstat	(Char **, struct command *);
extern	void		  xechoit	(Char **);
extern	int		  executable	(const Char *, const Char *, int);
extern	int		  tellmewhat	(struct wordent *, Char **);
extern	void		  dowhere	(Char **, struct command *);
extern	int		  find_cmd	(Char *, int);
125 126 127 128

/*
 * sh.exp.c
 */
129 130 131
extern  Char		 *filetest      (Char *, Char ***, int);
extern	tcsh_number_t 	  expr		(Char ***);
extern	tcsh_number_t	  exp0		(Char ***, int);
132 133 134 135 136

/*
 * sh.file.c
 */
#if defined(FILEC) && defined(TIOCSTI)
137
extern	size_t		  tenex		(Char *, size_t);
138 139 140 141 142
#endif

/*
 * sh.func.c
 */
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
extern	void		  tsetenv	(const Char *, const Char *);
extern	void		  Unsetenv	(Char *);
extern	void		  doalias	(Char **, struct command *);
extern	void		  dobreak	(Char **, struct command *);
extern	void		  docontin	(Char **, struct command *);
extern	void		  doecho	(Char **, struct command *);
extern	void		  doelse	(Char **, struct command *);
extern	void		  doend		(Char **, struct command *);
extern	void		  doeval	(Char **, struct command *);
extern	void		  doexit	(Char **, struct command *);
extern	void		  doforeach	(Char **, struct command *);
extern	void		  doglob	(Char **, struct command *);
extern	void		  dogoto	(Char **, struct command *);
extern	void		  doif		(Char **, struct command *);
extern	void		  dolimit	(Char **, struct command *);
extern	void		  dologin	(Char **, struct command *);
extern	void		  dologout	(Char **, struct command *);
160
#ifdef NEWGRP
161
extern	void		  donewgrp	(Char **, struct command *);
162
#endif
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
extern	void		  donohup	(Char **, struct command *);
extern	void		  dohup		(Char **, struct command *);
extern	void		  doonintr	(Char **, struct command *);
extern	void		  doprintenv	(Char **, struct command *);
extern	void		  dorepeat	(Char **, struct command *);
extern	void		  dofiletest	(Char **, struct command *);
extern	void		  dosetenv	(Char **, struct command *);
extern	void		  dosuspend	(Char **, struct command *);
extern	void		  doswbrk	(Char **, struct command *);
extern	void		  doswitch	(Char **, struct command *);
extern	void		  doumask	(Char **, struct command *);
extern	void		  dounlimit	(Char **, struct command *);
extern	void		  dounsetenv	(Char **, struct command *);
extern	void		  dowhile	(Char **, struct command *);
extern	void		  dozip		(Char **, struct command *);
extern	void		  func		(struct command *,
					 const struct biltins *);
extern	void		  gotolab	(Char *);
extern const struct biltins *isbfunc	(struct command *);
extern	void		  prvars	(void);
extern	int		  srchx		(Char *);
extern	void		  unalias	(Char **, struct command *);
extern	void		  wfree		(void);
extern	void		  dobuiltins	(Char **, struct command *);
extern	void		  reexecute	(struct command *);
188
extern  int		  getYN		(const char *);
189 190 191 192

/*
 * sh.glob.c
 */
193 194 195 196 197 198 199 200 201 202 203
extern	Char	 	 *globequal	(Char *);
extern	Char		**dobackp	(Char *, int);
extern	Char		 *globone	(Char *, int);
extern	int		  Gmatch	(const Char *, const Char *);
extern	int		  Gnmatch	(const Char *, const Char *,
					 const Char **);
extern	Char		**globall	(Char **, int);
extern	Char		**glob_all_or_error(Char **);
extern	void		  rscan		(Char **, void (*)(Char));
extern	int		  tglob		(Char **);
extern	void		  trim		(Char **);
204

205 206 207 208
#if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS)
extern	char		 *xcatgets	(nl_catd, int, int, const char *);
#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
extern	char		 *iconv_catgets	(nl_catd, int, int, const char *);
209 210
#endif
#endif
211 212 213 214
extern	void		  nlsinit	(void);
extern	void	          nlsclose	(void);
extern  int	  	  t_pmatch	(const Char *, const Char *,
					 const Char **, int);
215 216 217 218

/*
 * sh.hist.c
 */
219
extern	void	 	  dohist	(Char **, struct command *);
220
extern  struct Hist 	 *enthist	(int, struct wordent *, int, int, int);
221 222 223 224
extern	void	 	  savehist	(struct wordent *, int);
extern	char		 *fmthist	(int, ptr_t);
extern	void		  rechist	(Char *, int);
extern	void		  loadhist	(Char *, int);
225
extern	void		  displayHistStats(const char *);
226
extern	void		  sethistory	(int);
227 228 229 230

/*
 * sh.init.c
 */
231
extern	void		  mesginit	(void);
232 233 234 235

/*
 * sh.lex.c
 */
236 237 238 239 240 241
extern	void		  addla		(Char *);
extern	void		  bseek		(struct Ain *);
extern	void		  btell		(struct Ain *);
extern	void		  btoeof	(void);
extern	void		  copylex	(struct wordent *, struct wordent *);
extern	Char		 *domod		(Char *, Char);
242
extern	void		  initlex	(struct wordent *);
243 244 245 246 247 248 249
extern	void		  freelex	(struct wordent *);
extern	int		  lex		(struct wordent *);
extern	void		  lex_cleanup	(void *);
extern	void		  prlex		(struct wordent *);
extern	eChar		  readc		(int);
extern	void		  settell	(void);
extern	void		  unreadc	(Char);
250
extern	ssize_t		  wide_read	(int, Char *, size_t, int);
251 252 253 254 255


/*
 * sh.misc.c
 */
256 257 258 259 260 261 262 263 264 265
extern	int		  any		(const char *, Char);
extern	Char		**blkcpy	(Char **, Char **);
extern	void		  blkfree	(Char **);
extern	void		  blk_cleanup	(void *);
extern	void		  blk_indirect_cleanup(void *);
extern	int		  blklen	(Char **);
extern	void		  blkpr		(Char *const *);
extern	Char		 *blkexpand	(Char *const *);
extern	Char		**blkspl	(Char **, Char **);
extern	void		  closem	(void);
266
#ifndef CLOSE_ON_EXEC
267
extern  void 		  closech	(void);
268
#endif /* !CLOSE_ON_EXEC */
269 270 271 272 273 274 275 276 277 278 279 280 281
extern	Char		**copyblk	(Char **);
extern	int		  dcopy		(int, int);
extern	int		  dmove		(int, int);
extern	void		  donefds	(void);
extern	Char		  lastchr	(Char *);
extern	void		  lshift	(Char **, int);
extern	int		  number	(Char *);
extern	int		  prefix	(const Char *, const Char *);
extern	Char		**saveblk	(Char **);
extern	void		  setzero	(void *, size_t);
extern	Char		 *strip		(Char *);
extern	Char		 *quote		(Char *);
extern	const Char	 *quote_meta	(struct Strbuf *, const Char *);
282
#ifndef SHORT_STRINGS
283
extern	char		 *strnsave	(const char *, size_t);
284
#endif
285
extern	char		 *strsave	(const char *);
286
extern	void		  udvar		(Char *) __attribute__((__noreturn__));
287
#ifndef POSIX
288
extern  char   	  	 *strstr	(const char *, const char *);
289
#endif /* !POSIX */
290 291 292 293 294 295 296 297 298 299 300 301 302
extern	char		 *strspl	(const char *, const char *);
extern	char		 *strend	(const char *);
extern	char		 *areadlink	(const char *);
extern	void		  xclose	(int);
extern	void		  xclosedir	(DIR *);
extern	int		  xcreat	(const char *, mode_t);
extern	struct group	 *xgetgrgid	(gid_t);
extern	struct passwd	 *xgetpwnam	(const char *);
extern	struct passwd	 *xgetpwuid	(uid_t);
extern	int		  xopen		(const char *, int, ...);
extern	ssize_t		  xread		(int, void *, size_t);
extern	int		  xtcsetattr	(int, int, const struct termios *);
extern	ssize_t		  xwrite	(int, const void *, size_t);
303 304 305 306

/*
 * sh.parse.c
 */
307 308 309 310 311
extern	void		  alias		(struct wordent *);
extern	void		  freesyn	(struct command *);
extern struct command 	 *syntax	(const struct wordent *,
					 const struct wordent *, int);
extern	void		  syntax_cleanup(void *);
312 313 314 315

/*
 * sh.print.c
 */
316 317
extern	void		  drainoline	(void);
extern	void		  flush		(void);
318
#ifdef BSDTIMES
319
extern	void		  pcsecs	(unsigned long);
320 321
#else /* !BSDTIMES */
# ifdef POSIX
322
extern	void		  pcsecs	(clock_t);
323
# else /* !POSIX */
324
extern	void		  pcsecs	(time_t);
325 326 327
# endif /* !POSIX */
#endif /* BSDTIMES */
#ifdef BSDLIMIT
328
extern	void		  psecs		(unsigned long);
329
#endif /* BSDLIMIT */
330 331 332
extern	int		  putpure	(int);
extern	int		  putraw	(int);
extern	void		  xputchar	(int);
333
#ifdef WIDE_STRINGS
334 335
extern	void		  putwraw	(Char);
extern	void		  xputwchar	(Char);
336 337 338 339
#else
# define putwraw(C) putraw(C)
# define xputwchar(C) xputchar(C)
#endif
340
extern	void		  output_raw_restore(void *);
341 342 343 344 345


/*
 * sh.proc.c
 */
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367
extern	void		  dobg		(Char **, struct command *);
extern	void		  dobg1		(Char **, struct command *);
extern	void		  dofg		(Char **, struct command *);
extern	void		  dofg1		(Char **, struct command *);
extern	void		  dojobs	(Char **, struct command *);
extern	void		  dokill	(Char **, struct command *);
extern	void		  donotify	(Char **, struct command *);
extern	void		  dostop	(Char **, struct command *);
extern	void		  dowait	(Char **, struct command *);
extern	void		  palloc	(pid_t, struct command *);
extern	void		  panystop	(int);
extern	void		  pchild	(void);
extern	void		  pendjob	(void);
extern	pid_t		  pfork		(struct command *, int);
extern	void		  pgetty	(int, pid_t);
extern	void		  pjwait	(struct process *);
extern	void		  pnote		(void);
extern	void		  psavejob	(void);
extern	void		  psavejob_cleanup(void *);
extern	int		  pstart	(struct process *, int);
extern	void		  pwait		(void);
extern  struct process   *pfind		(Char *);
368 369 370 371

/*
 * sh.sem.c
 */
372
extern	void		  execute	(struct command *, volatile int, int *,
373 374
					 int *, int);
extern	void		  mypipe	(int *);
375 376 377 378

/*
 * sh.set.c
 */
379 380 381
extern	struct varent 	 *adrof1	(const Char *, struct varent *);
extern	void		  doset		(Char **, struct command *);
extern	void		  dolet		(Char **, struct command *);
382 383
extern	Char		 *putn		(tcsh_number_t);
extern	tcsh_number_t	  getn		(const Char *);
384 385 386 387 388 389 390 391 392 393
extern	Char		 *value1	(Char *, struct varent *);
extern	void		  setcopy	(const Char *, const Char *, int);
extern	void		  setv		(const Char *, Char *, int);
extern	void		  set1		(const Char *, Char **,
					 struct varent *, int);
extern	void		  setq		(const Char *, Char **,
					 struct varent *, int);
extern	void		  unset		(Char **, struct command *);
extern	void		  unset1	(Char *[], struct varent *);
extern	void		  unsetv	(Char *);
394
extern	void		  setNS		(const Char *);
395 396 397
extern	void		  shift		(Char **, struct command *);
extern	void		  plist		(struct varent *, int);
extern	Char		 *unparse	(struct command *);
398
#if defined(DSPMBYTE)
399 400
extern	void 		  update_dspmbyte_vars	(void);
extern	void		  autoset_dspmbyte	(const Char *);
401
#endif
402 403 404
#if defined(AUTOSET_KANJI)
extern	void		  autoset_kanji	(void);
#endif
405
extern	void		  update_wordchars	(void);
406 407 408 409

/*
 * sh.time.c
 */
410 411
extern	void		  donice	(Char **, struct command *);
extern	void		  dotime	(Char **, struct command *);
412
#ifdef BSDTIMES
413 414 415 416 417
extern	void		  prusage	(struct sysrusage *,
					 struct sysrusage *, 
					 timeval_t *, timeval_t *);
extern	void		  ruadd		(struct sysrusage *,
					 struct sysrusage *);
418 419
#else /* BSDTIMES */
# ifdef _SEQUENT_
420 421 422 423 424
extern	void		  prusage	(struct process_stats *,
					 struct process_stats *, 
					 timeval_t *, timeval_t *);
extern	void		  ruadd		(struct process_stats *,
					 struct process_stats *);
425 426
# else /* !_SEQUENT_ */
#  ifdef POSIX
427 428
extern	void		  prusage	(struct tms *, struct tms *, 
					 clock_t, clock_t);
429
#  else	/* !POSIX */
430 431
extern	void		  prusage	(struct tms *, struct tms *, 
					 time_t, time_t);
432 433 434
#  endif /* !POSIX */
# endif	/* !_SEQUENT_ */
#endif /* BSDTIMES */
435
extern	void		  settimes	(void);
436
#if defined(BSDTIMES) || defined(_SEQUENT_)
437 438 439
extern	void		  tvsub		(struct timeval *, 
					 struct timeval *, 
					 struct timeval *);
440 441
#endif /* BSDTIMES || _SEQUENT_ */

442 443 444 445 446 447
/*
 * tw.parse.c
 */
extern	 void		  copyn			(Char *, const Char *, size_t);
extern	 void		  catn			(Char *, const Char *, int);

448
#endif /* _h_sh_decls */