sh.decls.h revision 231990
1331722Seadler/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.62 2011/02/25 23:58:34 christos Exp $ */ 21590Srgrimes/* 31590Srgrimes * sh.decls.h External declarations from sh*.c 41590Srgrimes */ 51590Srgrimes/*- 61590Srgrimes * Copyright (c) 1980, 1991 The Regents of the University of California. 71590Srgrimes * All rights reserved. 81590Srgrimes * 91590Srgrimes * Redistribution and use in source and binary forms, with or without 101590Srgrimes * modification, are permitted provided that the following conditions 111590Srgrimes * are met: 121590Srgrimes * 1. Redistributions of source code must retain the above copyright 131590Srgrimes * notice, this list of conditions and the following disclaimer. 141590Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 151590Srgrimes * notice, this list of conditions and the following disclaimer in the 161590Srgrimes * documentation and/or other materials provided with the distribution. 171590Srgrimes * 3. Neither the name of the University nor the names of its contributors 181590Srgrimes * may be used to endorse or promote products derived from this software 191590Srgrimes * without specific prior written permission. 201590Srgrimes * 211590Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 221590Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 231590Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 241590Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 251590Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 261590Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 271590Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 281590Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 291590Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 301590Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3174769Smikeh * SUCH DAMAGE. 3288150Smikeh */ 3374769Smikeh#ifndef _h_sh_decls 341590Srgrimes#define _h_sh_decls 3599112Sobrien 3699112Sobrien/* 371590Srgrimes * sh.c 381590Srgrimes */ 391590Srgrimesextern Char *gethdir (const Char *); 401590Srgrimesextern void dosource (Char **, struct command *); 411590Srgrimesextern void exitstat (void); 421590Srgrimesextern void goodbye (Char **, struct command *); 431590Srgrimesextern void importpath (Char *); 441590Srgrimesextern void initdesc (void); 451590Srgrimesextern void pintr (void); 461590Srgrimesextern void pintr1 (int); 471590Srgrimesextern void phup (void); 481590Srgrimesextern void process (int); 491590Srgrimesextern void untty (void); 501590Srgrimes#ifdef PROF 511590Srgrimesextern void done (int) __attribute__((__noreturn__)); 52216564Scharnier#else 531590Srgrimesextern void xexit (int) __attribute__((__noreturn__)); 541590Srgrimes#endif 5577274Smikehextern int grabpgrp (int, pid_t); 561590Srgrimes 571590Srgrimes/* 5874769Smikeh * sh.dir.c 5977274Smikeh */ 6074769Smikehextern void dinit (Char *); 6177274Smikehextern void dodirs (Char **, struct command *); 6277274Smikehextern Char *dcanon (Char *, Char *); 6377274Smikehextern void dtildepr (Char *); 6477274Smikehextern void dtilde (void); 6577274Smikehextern void dochngd (Char **, struct command *); 661590Srgrimesextern Char *dnormalize (const Char *, int); 6777274Smikehextern void dopushd (Char **, struct command *); 681590Srgrimesextern void dopopd (Char **, struct command *); 691590Srgrimesextern void dfree (struct directory *); 701590Srgrimesextern void dsetstack (void); 711590Srgrimesextern const Char *getstakd (int); 721590Srgrimesextern void recdirs (Char *, int); 731590Srgrimesextern void loaddirs (Char *); 741590Srgrimes 75216564Scharnier/* 761590Srgrimes * sh.dol.c 771590Srgrimes */ 7877274Smikehextern void Dfix (struct command *); 791590Srgrimesextern Char *Dfix1 (Char *); 8077274Smikehextern void heredoc (Char *); 8177274Smikeh 8277274Smikeh/* 8377274Smikeh * sh.err.c 8477274Smikeh */ 8577274Smikehextern void reset (void) __attribute__((__noreturn__)); 861590Srgrimesextern void cleanup_push_internal(void *, void (*fn) (void *) 871590Srgrimes#ifdef CLEANUP_DEBUG 881590Srgrimes , const char *, size_t 891590Srgrimes#define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__) 901590Srgrimes#else 911590Srgrimes#define cleanup_push(v, f) cleanup_push_internal(v, f) 921590Srgrimes#endif 93216564Scharnier); 941590Srgrimesextern int cleanup_reset(void); 951590Srgrimesextern void cleanup_ignore(void *); 9674769Smikehextern void cleanup_until(void *); 9777274Smikehextern void cleanup_until_mark(void); 9877274Smikehextern size_t cleanup_push_mark(void); 991590Srgrimesextern void cleanup_pop_mark(size_t); 1001590Srgrimesextern void open_cleanup(void *); 1011590Srgrimesextern void opendir_cleanup(void *); 10274769Smikehextern void sigint_cleanup(void *); 10377274Smikehextern void sigprocmask_cleanup(void *); 1041590Srgrimesextern void xfree_indirect(void *); 1051590Srgrimesextern void errinit (void); 1061590Srgrimesextern void seterror (unsigned int, ...); 1071590Srgrimesextern void fixerror (void); 10877274Smikehextern void stderror (unsigned int, ...) 1091590Srgrimes __attribute__((__noreturn__)); 1101590Srgrimes 11174769Smikeh/* 11274769Smikeh * sh.exec.c 11374769Smikeh */ 1141590Srgrimesextern void doexec (struct command *, int); 1151590Srgrimesextern void dohash (Char **, struct command *); 1161590Srgrimesextern void dounhash (Char **, struct command *); 1171590Srgrimesextern void execash (Char **, struct command *); 1181590Srgrimesextern void hashstat (Char **, struct command *); 1191590Srgrimesextern void xechoit (Char **); 1201590Srgrimesextern int executable (const Char *, const Char *, int); 1211590Srgrimesextern int tellmewhat (struct wordent *, Char **); 1221590Srgrimesextern void dowhere (Char **, struct command *); 1231590Srgrimesextern int find_cmd (Char *, int); 1241590Srgrimes 1251590Srgrimes/* 1261590Srgrimes * sh.exp.c 1271590Srgrimes */ 1281590Srgrimesextern Char *filetest (Char *, Char ***, int); 1291590Srgrimesextern tcsh_number_t expr (Char ***); 1301590Srgrimesextern tcsh_number_t exp0 (Char ***, int); 1311590Srgrimes 1321590Srgrimes/* 13377274Smikeh * sh.file.c 1341590Srgrimes */ 13574769Smikeh#if defined(FILEC) && defined(TIOCSTI) 13674769Smikehextern size_t tenex (Char *, size_t); 13774769Smikeh#endif 13874769Smikeh 13977274Smikeh/* 1401590Srgrimes * sh.func.c 1411590Srgrimes */ 1421590Srgrimesextern void tsetenv (const Char *, const Char *); 1431590Srgrimesextern void Unsetenv (Char *); 1441590Srgrimesextern void doalias (Char **, struct command *); 1451590Srgrimesextern void dobreak (Char **, struct command *); 1461590Srgrimesextern void docontin (Char **, struct command *); 147216564Scharnierextern void doecho (Char **, struct command *); 1481590Srgrimesextern void doelse (Char **, struct command *); 14977274Smikehextern void doend (Char **, struct command *); 15077274Smikehextern void doeval (Char **, struct command *); 1511590Srgrimesextern void doexit (Char **, struct command *); 1521590Srgrimesextern void doforeach (Char **, struct command *); 15374769Smikehextern void doglob (Char **, struct command *); 15477274Smikehextern void dogoto (Char **, struct command *); 1551590Srgrimesextern void doif (Char **, struct command *); 1561590Srgrimesextern void dolimit (Char **, struct command *); 1571590Srgrimesextern void dologin (Char **, struct command *); 15877274Smikehextern void dologout (Char **, struct command *); 15977274Smikeh#ifdef NEWGRP 1601590Srgrimesextern void donewgrp (Char **, struct command *); 1611590Srgrimes#endif 1621590Srgrimesextern void donohup (Char **, struct command *); 1631590Srgrimesextern void dohup (Char **, struct command *); 1641590Srgrimesextern void doonintr (Char **, struct command *); 1651590Srgrimesextern void doprintenv (Char **, struct command *); 166216564Scharnierextern void dorepeat (Char **, struct command *); 1671590Srgrimesextern void dofiletest (Char **, struct command *); 1681590Srgrimesextern void dosetenv (Char **, struct command *); 1691590Srgrimesextern void dosuspend (Char **, struct command *); 17077274Smikehextern void doswbrk (Char **, struct command *); 17177274Smikehextern void doswitch (Char **, struct command *); 17277274Smikehextern void doumask (Char **, struct command *); 1731590Srgrimesextern void dounlimit (Char **, struct command *); 17474769Smikehextern void dounsetenv (Char **, struct command *); 17577274Smikehextern void dowhile (Char **, struct command *); 17677274Smikehextern void dozip (Char **, struct command *); 1771590Srgrimesextern void func (struct command *, 17874769Smikeh const struct biltins *); 17977274Smikehextern void gotolab (Char *); 1801590Srgrimesextern const struct biltins *isbfunc (struct command *); 18177274Smikehextern void prvars (void); 1821590Srgrimesextern int srchx (Char *); 1831590Srgrimesextern void unalias (Char **, struct command *); 1841590Srgrimesextern void wfree (void); 185216564Scharnierextern void dobuiltins (Char **, struct command *); 1861590Srgrimesextern void reexecute (struct command *); 18798805Smikeh 18832189Sjoerg/* 1891590Srgrimes * sh.glob.c 19032189Sjoerg */ 1911590Srgrimesextern Char *globequal (Char *); 1921590Srgrimesextern Char **dobackp (Char *, int); 1931590Srgrimesextern Char *globone (Char *, int); 1941590Srgrimesextern int Gmatch (const Char *, const Char *); 1951590Srgrimesextern int Gnmatch (const Char *, const Char *, 1961590Srgrimes const Char **); 1971590Srgrimesextern Char **globall (Char **, int); 198216564Scharnierextern Char **glob_all_or_error(Char **); 1991590Srgrimesextern void rscan (Char **, void (*)(Char)); 2001590Srgrimesextern int tglob (Char **); 2011590Srgrimesextern void trim (Char **); 2021590Srgrimes 2031590Srgrimes#if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS) 2041590Srgrimesextern char *xcatgets (nl_catd, int, int, const char *); 2051590Srgrimes#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) 2061590Srgrimesextern char *iconv_catgets (nl_catd, int, int, const char *); 2071590Srgrimes#endif 20877274Smikeh#endif 2091590Srgrimesextern void nlsinit (void); 2101590Srgrimesextern void nlsclose (void); 2111590Srgrimesextern int t_pmatch (const Char *, const Char *, 2121590Srgrimes const Char **, int); 21377274Smikeh 2141590Srgrimes/* 21577274Smikeh * sh.hist.c 2161590Srgrimes */ 21777274Smikehextern void dohist (Char **, struct command *); 2181590Srgrimesextern struct Hist *enthist (int, struct wordent *, int, int, int); 2191590Srgrimesextern void savehist (struct wordent *, int); 22077274Smikehextern char *fmthist (int, ptr_t); 2211590Srgrimesextern void rechist (Char *, int); 2221590Srgrimesextern void loadhist (Char *, int); 2231590Srgrimesextern void displayHistStats(const char *); 2241590Srgrimes 2251590Srgrimes/* 2261590Srgrimes * sh.init.c 2271590Srgrimes */ 22877274Smikehextern void mesginit (void); 2291590Srgrimes 23077274Smikeh/* 2311590Srgrimes * sh.lex.c 23277274Smikeh */ 23377274Smikehextern void addla (Char *); 2341590Srgrimesextern void bseek (struct Ain *); 2351590Srgrimesextern void btell (struct Ain *); 2361590Srgrimesextern void btoeof (void); 2371590Srgrimesextern void copylex (struct wordent *, struct wordent *); 23877274Smikehextern Char *domod (Char *, Char); 2391590Srgrimesextern void freelex (struct wordent *); 2401590Srgrimesextern int lex (struct wordent *); 24177274Smikehextern void lex_cleanup (void *); 2421590Srgrimesextern void prlex (struct wordent *); 2431590Srgrimesextern eChar readc (int); 2441590Srgrimesextern void settell (void); 24577274Smikehextern void unreadc (Char); 2461590Srgrimes 2471590Srgrimes 2481590Srgrimes/* 24977274Smikeh * sh.misc.c 25077274Smikeh */ 25177274Smikehextern int any (const char *, Char); 25278193Smikehextern Char **blkcpy (Char **, Char **); 25332189Sjoergextern void blkfree (Char **); 2541590Srgrimesextern void blk_cleanup (void *); 25577274Smikehextern void blk_indirect_cleanup(void *); 2561590Srgrimesextern int blklen (Char **); 2571590Srgrimesextern void blkpr (Char *const *); 2581590Srgrimesextern Char *blkexpand (Char *const *); 2591590Srgrimesextern Char **blkspl (Char **, Char **); 2601590Srgrimesextern void closem (void); 2611590Srgrimes#ifndef CLOSE_ON_EXEC 2621590Srgrimesextern void closech (void); 263216564Scharnier#endif /* !CLOSE_ON_EXEC */ 2641590Srgrimesextern Char **copyblk (Char **); 2651590Srgrimesextern int dcopy (int, int); 2661590Srgrimesextern int dmove (int, int); 26777274Smikehextern void donefds (void); 26877274Smikehextern Char lastchr (Char *); 2691590Srgrimesextern void lshift (Char **, int); 2701590Srgrimesextern int number (Char *); 2711590Srgrimesextern int prefix (const Char *, const Char *); 27277274Smikehextern Char **saveblk (Char **); 2731590Srgrimesextern void setzero (void *, size_t); 27474769Smikehextern Char *strip (Char *); 27577274Smikehextern Char *quote (Char *); 2761590Srgrimesextern const Char *quote_meta (struct Strbuf *, const Char *); 2771590Srgrimes#ifndef SHORT_STRINGS 2781590Srgrimesextern char *strnsave (const char *, size_t); 2791590Srgrimes#endif 2801590Srgrimesextern char *strsave (const char *); 2811590Srgrimesextern void udvar (Char *) __attribute__((__noreturn__)); 2821590Srgrimes#ifndef POSIX 283216564Scharnierextern char *strstr (const char *, const char *); 2841590Srgrimes#endif /* !POSIX */ 28577274Smikehextern char *strspl (const char *, const char *); 28677274Smikehextern char *strend (const char *); 2871590Srgrimesextern char *areadlink (const char *); 2881590Srgrimesextern void xclose (int); 2891590Srgrimesextern void xclosedir (DIR *); 29077274Smikehextern int xcreat (const char *, mode_t); 2911590Srgrimesextern struct group *xgetgrgid (gid_t); 29229574Sphkextern struct passwd *xgetpwnam (const char *); 2931590Srgrimesextern struct passwd *xgetpwuid (uid_t); 2941590Srgrimesextern int xopen (const char *, int, ...); 2951590Srgrimesextern ssize_t xread (int, void *, size_t); 2961590Srgrimesextern int xtcsetattr (int, int, const struct termios *); 2971590Srgrimesextern ssize_t xwrite (int, const void *, size_t); 2981590Srgrimes 29977274Smikeh/* 3001590Srgrimes * sh.parse.c 3011590Srgrimes */ 3021590Srgrimesextern void alias (struct wordent *); 3031590Srgrimesextern void freesyn (struct command *); 3041590Srgrimesextern struct command *syntax (const struct wordent *, 3051590Srgrimes const struct wordent *, int); 306216564Scharnierextern void syntax_cleanup(void *); 3071590Srgrimes 30877274Smikeh/* 3091590Srgrimes * sh.print.c 31029574Sphk */ 3111590Srgrimesextern void drainoline (void); 3121590Srgrimesextern void flush (void); 3131590Srgrimes#ifdef BSDTIMES 3141590Srgrimesextern void pcsecs (unsigned long); 31577274Smikeh#else /* !BSDTIMES */ 3161590Srgrimes# ifdef POSIX 3171590Srgrimesextern void pcsecs (clock_t); 3181590Srgrimes# else /* !POSIX */ 3191590Srgrimesextern void pcsecs (time_t); 3201590Srgrimes# endif /* !POSIX */ 3211590Srgrimes#endif /* BSDTIMES */ 322216564Scharnier#ifdef BSDLIMIT 3231590Srgrimesextern void psecs (unsigned long); 32477274Smikeh#endif /* BSDLIMIT */ 32577274Smikehextern int putpure (int); 3261590Srgrimesextern int putraw (int); 32729574Sphkextern void xputchar (int); 3281590Srgrimes#ifdef WIDE_STRINGS 3291590Srgrimesextern void putwraw (Char); 33037453Sbdeextern void xputwchar (Char); 3311590Srgrimes#else 33277274Smikeh# define putwraw(C) putraw(C) 3331590Srgrimes# define xputwchar(C) xputchar(C) 3341590Srgrimes#endif 3351590Srgrimesextern void output_raw_restore(void *); 3361590Srgrimes 3371590Srgrimes 3381590Srgrimes/* 3391590Srgrimes * sh.proc.c 340216564Scharnier */ 3411590Srgrimesextern void dobg (Char **, struct command *); 3421590Srgrimesextern void dobg1 (Char **, struct command *); 34377274Smikehextern void dofg (Char **, struct command *); 34488150Smikehextern void dofg1 (Char **, struct command *); 3451590Srgrimesextern void dojobs (Char **, struct command *); 3461590Srgrimesextern void dokill (Char **, struct command *); 3471590Srgrimesextern void donotify (Char **, struct command *); 3481590Srgrimesextern void dostop (Char **, struct command *); 3491590Srgrimesextern void dowait (Char **, struct command *); 3501590Srgrimesextern void palloc (pid_t, struct command *); 3511590Srgrimesextern void panystop (int); 3521590Srgrimesextern void pchild (void); 353216564Scharnierextern void pendjob (void); 3541590Srgrimesextern pid_t pfork (struct command *, int); 35577274Smikehextern void pgetty (int, pid_t); 35677274Smikehextern void pjwait (struct process *); 3571590Srgrimesextern void pnote (void); 3581590Srgrimesextern void psavejob (void); 3591590Srgrimesextern void psavejob_cleanup(void *); 36077274Smikehextern int pstart (struct process *, int); 3611590Srgrimesextern void pwait (void); 36277274Smikehextern struct process *pfind (Char *); 3631590Srgrimes 36477274Smikeh/* 3651590Srgrimes * sh.sem.c 36677274Smikeh */ 3671590Srgrimesextern void execute (struct command *, volatile int, int *, 36877274Smikeh int *, int); 3691590Srgrimesextern void mypipe (int *); 37077274Smikeh 3711590Srgrimes/* 37277274Smikeh * sh.set.c 3731590Srgrimes */ 3741590Srgrimesextern struct varent *adrof1 (const Char *, struct varent *); 37577274Smikehextern void doset (Char **, struct command *); 3761590Srgrimesextern void dolet (Char **, struct command *); 3771590Srgrimesextern Char *putn (tcsh_number_t); 37874769Smikehextern tcsh_number_t getn (const Char *); 3791590Srgrimesextern Char *value1 (Char *, struct varent *); 3801590Srgrimesextern void setcopy (const Char *, const Char *, int); 3811590Srgrimesextern void setv (const Char *, Char *, int); 3821590Srgrimesextern void set1 (const Char *, Char **, 3831590Srgrimes struct varent *, int); 3841590Srgrimesextern void setq (const Char *, Char **, 3851590Srgrimes struct varent *, int); 3861590Srgrimesextern void unset (Char **, struct command *); 3871590Srgrimesextern void unset1 (Char *[], struct varent *); 3881590Srgrimesextern void unsetv (Char *); 3891590Srgrimesextern void setNS (const Char *); 3901590Srgrimesextern void shift (Char **, struct command *); 3911590Srgrimesextern void plist (struct varent *, int); 39277274Smikehextern Char *unparse (struct command *); 3931590Srgrimes#if defined(DSPMBYTE) 3941590Srgrimesextern void update_dspmbyte_vars (void); 3951590Srgrimesextern void autoset_dspmbyte (const Char *); 3961590Srgrimes#endif 3971590Srgrimes#if defined(AUTOSET_KANJI) 3981590Srgrimesextern void autoset_kanji (void); 399216564Scharnier#endif 4001590Srgrimes 40177274Smikeh/* 4021590Srgrimes * sh.time.c 4031590Srgrimes */ 4041590Srgrimesextern void donice (Char **, struct command *); 4051590Srgrimesextern void dotime (Char **, struct command *); 40677274Smikeh#ifdef BSDTIMES 40777274Smikehextern void prusage (struct sysrusage *, 40888150Smikeh struct sysrusage *, 40988150Smikeh timeval_t *, timeval_t *); 41088150Smikehextern void ruadd (struct sysrusage *, 4111590Srgrimes struct sysrusage *); 4121590Srgrimes#else /* BSDTIMES */ 4131590Srgrimes# ifdef _SEQUENT_ 4141590Srgrimesextern void prusage (struct process_stats *, 4151590Srgrimes struct process_stats *, 4161590Srgrimes timeval_t *, timeval_t *); 4171590Srgrimesextern void ruadd (struct process_stats *, 4181590Srgrimes struct process_stats *); 4191590Srgrimes# else /* !_SEQUENT_ */ 4201590Srgrimes# ifdef POSIX 42177274Smikehextern void prusage (struct tms *, struct tms *, 4221590Srgrimes clock_t, clock_t); 4231590Srgrimes# else /* !POSIX */ 4241590Srgrimesextern void prusage (struct tms *, struct tms *, 4251590Srgrimes time_t, time_t); 4261590Srgrimes# endif /* !POSIX */ 4271590Srgrimes# endif /* !_SEQUENT_ */ 4281590Srgrimes#endif /* BSDTIMES */ 42977274Smikehextern void settimes (void); 4301590Srgrimes#if defined(BSDTIMES) || defined(_SEQUENT_) 43177274Smikehextern void tvsub (struct timeval *, 4321590Srgrimes struct timeval *, 4331590Srgrimes struct timeval *); 4341590Srgrimes#endif /* BSDTIMES || _SEQUENT_ */ 4351590Srgrimes 4361590Srgrimes/* 4371590Srgrimes * tw.parse.c 438216564Scharnier */ 4391590Srgrimesextern void copyn (Char *, const Char *, size_t); 44077274Smikehextern void catn (Char *, const Char *, int); 44177274Smikeh 4421590Srgrimes#endif /* _h_sh_decls */ 44377274Smikeh