sh.decls.h revision 231990
1231990Smp/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.62 2011/02/25 23:58:34 christos Exp $ */ 259243Sobrien/* 359243Sobrien * sh.decls.h External declarations from sh*.c 459243Sobrien */ 559243Sobrien/*- 659243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California. 759243Sobrien * All rights reserved. 859243Sobrien * 959243Sobrien * Redistribution and use in source and binary forms, with or without 1059243Sobrien * modification, are permitted provided that the following conditions 1159243Sobrien * are met: 1259243Sobrien * 1. Redistributions of source code must retain the above copyright 1359243Sobrien * notice, this list of conditions and the following disclaimer. 1459243Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1559243Sobrien * notice, this list of conditions and the following disclaimer in the 1659243Sobrien * documentation and/or other materials provided with the distribution. 17100616Smp * 3. Neither the name of the University nor the names of its contributors 1859243Sobrien * may be used to endorse or promote products derived from this software 1959243Sobrien * without specific prior written permission. 2059243Sobrien * 2159243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2259243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2359243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2459243Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2559243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2659243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2759243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2859243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2959243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3059243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3159243Sobrien * SUCH DAMAGE. 3259243Sobrien */ 3359243Sobrien#ifndef _h_sh_decls 3459243Sobrien#define _h_sh_decls 3559243Sobrien 3659243Sobrien/* 3759243Sobrien * sh.c 3859243Sobrien */ 39167465Smpextern Char *gethdir (const Char *); 40167465Smpextern void dosource (Char **, struct command *); 41167465Smpextern void exitstat (void); 42167465Smpextern void goodbye (Char **, struct command *); 43167465Smpextern void importpath (Char *); 44167465Smpextern void initdesc (void); 45167465Smpextern void pintr (void); 46167465Smpextern void pintr1 (int); 47167465Smpextern void phup (void); 48167465Smpextern void process (int); 49167465Smpextern void untty (void); 5059243Sobrien#ifdef PROF 51231990Smpextern void done (int) __attribute__((__noreturn__)); 5259243Sobrien#else 53231990Smpextern void xexit (int) __attribute__((__noreturn__)); 5459243Sobrien#endif 55195609Smpextern int grabpgrp (int, pid_t); 5659243Sobrien 5759243Sobrien/* 5859243Sobrien * sh.dir.c 5959243Sobrien */ 60167465Smpextern void dinit (Char *); 61167465Smpextern void dodirs (Char **, struct command *); 62167465Smpextern Char *dcanon (Char *, Char *); 63167465Smpextern void dtildepr (Char *); 64167465Smpextern void dtilde (void); 65167465Smpextern void dochngd (Char **, struct command *); 66167465Smpextern Char *dnormalize (const Char *, int); 67167465Smpextern void dopushd (Char **, struct command *); 68167465Smpextern void dopopd (Char **, struct command *); 69167465Smpextern void dfree (struct directory *); 70167465Smpextern void dsetstack (void); 71167465Smpextern const Char *getstakd (int); 72167465Smpextern void recdirs (Char *, int); 73167465Smpextern void loaddirs (Char *); 7459243Sobrien 7559243Sobrien/* 7659243Sobrien * sh.dol.c 7759243Sobrien */ 78167465Smpextern void Dfix (struct command *); 79167465Smpextern Char *Dfix1 (Char *); 80167465Smpextern void heredoc (Char *); 8159243Sobrien 8259243Sobrien/* 8359243Sobrien * sh.err.c 8459243Sobrien */ 85231990Smpextern void reset (void) __attribute__((__noreturn__)); 86167465Smpextern void cleanup_push_internal(void *, void (*fn) (void *) 87167465Smp#ifdef CLEANUP_DEBUG 88167465Smp , const char *, size_t 89167465Smp#define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__) 90167465Smp#else 91167465Smp#define cleanup_push(v, f) cleanup_push_internal(v, f) 92167465Smp#endif 93167465Smp); 94231990Smpextern int cleanup_reset(void); 95167465Smpextern void cleanup_ignore(void *); 96231990Smpextern void cleanup_until(void *); 97167465Smpextern void cleanup_until_mark(void); 98167465Smpextern size_t cleanup_push_mark(void); 99167465Smpextern void cleanup_pop_mark(size_t); 100167465Smpextern void open_cleanup(void *); 101167465Smpextern void opendir_cleanup(void *); 102167465Smpextern void sigint_cleanup(void *); 103167465Smpextern void sigprocmask_cleanup(void *); 104167465Smpextern void xfree_indirect(void *); 105167465Smpextern void errinit (void); 106167465Smpextern void seterror (unsigned int, ...); 107231990Smpextern void fixerror (void); 108231990Smpextern void stderror (unsigned int, ...) 109231990Smp __attribute__((__noreturn__)); 11059243Sobrien 11159243Sobrien/* 11259243Sobrien * sh.exec.c 11359243Sobrien */ 114167465Smpextern void doexec (struct command *, int); 115167465Smpextern void dohash (Char **, struct command *); 116167465Smpextern void dounhash (Char **, struct command *); 117167465Smpextern void execash (Char **, struct command *); 118167465Smpextern void hashstat (Char **, struct command *); 119167465Smpextern void xechoit (Char **); 120167465Smpextern int executable (const Char *, const Char *, int); 121167465Smpextern int tellmewhat (struct wordent *, Char **); 122167465Smpextern void dowhere (Char **, struct command *); 123167465Smpextern int find_cmd (Char *, int); 12459243Sobrien 12559243Sobrien/* 12659243Sobrien * sh.exp.c 12759243Sobrien */ 128231990Smpextern Char *filetest (Char *, Char ***, int); 129231990Smpextern tcsh_number_t expr (Char ***); 130231990Smpextern tcsh_number_t exp0 (Char ***, int); 13159243Sobrien 13259243Sobrien/* 13359243Sobrien * sh.file.c 13459243Sobrien */ 135100616Smp#if defined(FILEC) && defined(TIOCSTI) 136167465Smpextern size_t tenex (Char *, size_t); 13759243Sobrien#endif 13859243Sobrien 13959243Sobrien/* 14059243Sobrien * sh.func.c 14159243Sobrien */ 142167465Smpextern void tsetenv (const Char *, const Char *); 143167465Smpextern void Unsetenv (Char *); 144167465Smpextern void doalias (Char **, struct command *); 145167465Smpextern void dobreak (Char **, struct command *); 146167465Smpextern void docontin (Char **, struct command *); 147167465Smpextern void doecho (Char **, struct command *); 148167465Smpextern void doelse (Char **, struct command *); 149167465Smpextern void doend (Char **, struct command *); 150167465Smpextern void doeval (Char **, struct command *); 151167465Smpextern void doexit (Char **, struct command *); 152167465Smpextern void doforeach (Char **, struct command *); 153167465Smpextern void doglob (Char **, struct command *); 154167465Smpextern void dogoto (Char **, struct command *); 155167465Smpextern void doif (Char **, struct command *); 156167465Smpextern void dolimit (Char **, struct command *); 157167465Smpextern void dologin (Char **, struct command *); 158167465Smpextern void dologout (Char **, struct command *); 15959243Sobrien#ifdef NEWGRP 160167465Smpextern void donewgrp (Char **, struct command *); 16159243Sobrien#endif 162167465Smpextern void donohup (Char **, struct command *); 163167465Smpextern void dohup (Char **, struct command *); 164167465Smpextern void doonintr (Char **, struct command *); 165167465Smpextern void doprintenv (Char **, struct command *); 166167465Smpextern void dorepeat (Char **, struct command *); 167167465Smpextern void dofiletest (Char **, struct command *); 168167465Smpextern void dosetenv (Char **, struct command *); 169167465Smpextern void dosuspend (Char **, struct command *); 170167465Smpextern void doswbrk (Char **, struct command *); 171167465Smpextern void doswitch (Char **, struct command *); 172167465Smpextern void doumask (Char **, struct command *); 173167465Smpextern void dounlimit (Char **, struct command *); 174167465Smpextern void dounsetenv (Char **, struct command *); 175167465Smpextern void dowhile (Char **, struct command *); 176167465Smpextern void dozip (Char **, struct command *); 177167465Smpextern void func (struct command *, 178167465Smp const struct biltins *); 179167465Smpextern void gotolab (Char *); 180167465Smpextern const struct biltins *isbfunc (struct command *); 181167465Smpextern void prvars (void); 182167465Smpextern int srchx (Char *); 183167465Smpextern void unalias (Char **, struct command *); 184167465Smpextern void wfree (void); 185167465Smpextern void dobuiltins (Char **, struct command *); 186167465Smpextern void reexecute (struct command *); 18759243Sobrien 18859243Sobrien/* 18959243Sobrien * sh.glob.c 19059243Sobrien */ 191167465Smpextern Char *globequal (Char *); 192167465Smpextern Char **dobackp (Char *, int); 193167465Smpextern Char *globone (Char *, int); 194167465Smpextern int Gmatch (const Char *, const Char *); 195167465Smpextern int Gnmatch (const Char *, const Char *, 196167465Smp const Char **); 197167465Smpextern Char **globall (Char **, int); 198167465Smpextern Char **glob_all_or_error(Char **); 199167465Smpextern void rscan (Char **, void (*)(Char)); 200167465Smpextern int tglob (Char **); 201167465Smpextern void trim (Char **); 202145479Smp 203167465Smp#if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS) 204167465Smpextern char *xcatgets (nl_catd, int, int, const char *); 205167465Smp#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) 206167465Smpextern char *iconv_catgets (nl_catd, int, int, const char *); 207145479Smp#endif 208145479Smp#endif 209167465Smpextern void nlsinit (void); 210167465Smpextern void nlsclose (void); 211167465Smpextern int t_pmatch (const Char *, const Char *, 212167465Smp const Char **, int); 21359243Sobrien 21459243Sobrien/* 21559243Sobrien * sh.hist.c 21659243Sobrien */ 217167465Smpextern void dohist (Char **, struct command *); 218231990Smpextern struct Hist *enthist (int, struct wordent *, int, int, int); 219167465Smpextern void savehist (struct wordent *, int); 220167465Smpextern char *fmthist (int, ptr_t); 221167465Smpextern void rechist (Char *, int); 222167465Smpextern void loadhist (Char *, int); 223231990Smpextern void displayHistStats(const char *); 22459243Sobrien 22559243Sobrien/* 22659243Sobrien * sh.init.c 22759243Sobrien */ 228167465Smpextern void mesginit (void); 22959243Sobrien 23059243Sobrien/* 23159243Sobrien * sh.lex.c 23259243Sobrien */ 233167465Smpextern void addla (Char *); 234167465Smpextern void bseek (struct Ain *); 235167465Smpextern void btell (struct Ain *); 236167465Smpextern void btoeof (void); 237167465Smpextern void copylex (struct wordent *, struct wordent *); 238167465Smpextern Char *domod (Char *, Char); 239167465Smpextern void freelex (struct wordent *); 240167465Smpextern int lex (struct wordent *); 241167465Smpextern void lex_cleanup (void *); 242167465Smpextern void prlex (struct wordent *); 243167465Smpextern eChar readc (int); 244167465Smpextern void settell (void); 245167465Smpextern void unreadc (Char); 24659243Sobrien 24759243Sobrien 24859243Sobrien/* 24959243Sobrien * sh.misc.c 25059243Sobrien */ 251167465Smpextern int any (const char *, Char); 252167465Smpextern Char **blkcpy (Char **, Char **); 253167465Smpextern void blkfree (Char **); 254167465Smpextern void blk_cleanup (void *); 255167465Smpextern void blk_indirect_cleanup(void *); 256167465Smpextern int blklen (Char **); 257167465Smpextern void blkpr (Char *const *); 258167465Smpextern Char *blkexpand (Char *const *); 259167465Smpextern Char **blkspl (Char **, Char **); 260167465Smpextern void closem (void); 26159243Sobrien#ifndef CLOSE_ON_EXEC 262167465Smpextern void closech (void); 26359243Sobrien#endif /* !CLOSE_ON_EXEC */ 264167465Smpextern Char **copyblk (Char **); 265167465Smpextern int dcopy (int, int); 266167465Smpextern int dmove (int, int); 267167465Smpextern void donefds (void); 268167465Smpextern Char lastchr (Char *); 269167465Smpextern void lshift (Char **, int); 270167465Smpextern int number (Char *); 271167465Smpextern int prefix (const Char *, const Char *); 272167465Smpextern Char **saveblk (Char **); 273167465Smpextern void setzero (void *, size_t); 274167465Smpextern Char *strip (Char *); 275167465Smpextern Char *quote (Char *); 276167465Smpextern const Char *quote_meta (struct Strbuf *, const Char *); 277231990Smp#ifndef SHORT_STRINGS 278167465Smpextern char *strnsave (const char *, size_t); 279231990Smp#endif 280167465Smpextern char *strsave (const char *); 281231990Smpextern void udvar (Char *) __attribute__((__noreturn__)); 28259243Sobrien#ifndef POSIX 283167465Smpextern char *strstr (const char *, const char *); 28459243Sobrien#endif /* !POSIX */ 285167465Smpextern char *strspl (const char *, const char *); 286167465Smpextern char *strend (const char *); 287167465Smpextern char *areadlink (const char *); 288167465Smpextern void xclose (int); 289167465Smpextern void xclosedir (DIR *); 290167465Smpextern int xcreat (const char *, mode_t); 291167465Smpextern struct group *xgetgrgid (gid_t); 292167465Smpextern struct passwd *xgetpwnam (const char *); 293167465Smpextern struct passwd *xgetpwuid (uid_t); 294167465Smpextern int xopen (const char *, int, ...); 295167465Smpextern ssize_t xread (int, void *, size_t); 296167465Smpextern int xtcsetattr (int, int, const struct termios *); 297167465Smpextern ssize_t xwrite (int, const void *, size_t); 29859243Sobrien 29959243Sobrien/* 30059243Sobrien * sh.parse.c 30159243Sobrien */ 302167465Smpextern void alias (struct wordent *); 303167465Smpextern void freesyn (struct command *); 304167465Smpextern struct command *syntax (const struct wordent *, 305167465Smp const struct wordent *, int); 306167465Smpextern void syntax_cleanup(void *); 30759243Sobrien 30859243Sobrien/* 30959243Sobrien * sh.print.c 31059243Sobrien */ 311167465Smpextern void drainoline (void); 312167465Smpextern void flush (void); 31359243Sobrien#ifdef BSDTIMES 314167465Smpextern void pcsecs (unsigned long); 31559243Sobrien#else /* !BSDTIMES */ 31659243Sobrien# ifdef POSIX 317167465Smpextern void pcsecs (clock_t); 31859243Sobrien# else /* !POSIX */ 319167465Smpextern void pcsecs (time_t); 32059243Sobrien# endif /* !POSIX */ 32159243Sobrien#endif /* BSDTIMES */ 32259243Sobrien#ifdef BSDLIMIT 323167465Smpextern void psecs (unsigned long); 32459243Sobrien#endif /* BSDLIMIT */ 325167465Smpextern int putpure (int); 326167465Smpextern int putraw (int); 327167465Smpextern void xputchar (int); 328145479Smp#ifdef WIDE_STRINGS 329167465Smpextern void putwraw (Char); 330167465Smpextern void xputwchar (Char); 331145479Smp#else 332145479Smp# define putwraw(C) putraw(C) 333145479Smp# define xputwchar(C) xputchar(C) 334145479Smp#endif 335167465Smpextern void output_raw_restore(void *); 33659243Sobrien 33759243Sobrien 33859243Sobrien/* 33959243Sobrien * sh.proc.c 34059243Sobrien */ 341167465Smpextern void dobg (Char **, struct command *); 342167465Smpextern void dobg1 (Char **, struct command *); 343167465Smpextern void dofg (Char **, struct command *); 344167465Smpextern void dofg1 (Char **, struct command *); 345167465Smpextern void dojobs (Char **, struct command *); 346167465Smpextern void dokill (Char **, struct command *); 347167465Smpextern void donotify (Char **, struct command *); 348167465Smpextern void dostop (Char **, struct command *); 349167465Smpextern void dowait (Char **, struct command *); 350167465Smpextern void palloc (pid_t, struct command *); 351167465Smpextern void panystop (int); 352167465Smpextern void pchild (void); 353167465Smpextern void pendjob (void); 354167465Smpextern pid_t pfork (struct command *, int); 355167465Smpextern void pgetty (int, pid_t); 356167465Smpextern void pjwait (struct process *); 357167465Smpextern void pnote (void); 358167465Smpextern void psavejob (void); 359167465Smpextern void psavejob_cleanup(void *); 360167465Smpextern int pstart (struct process *, int); 361167465Smpextern void pwait (void); 362167465Smpextern struct process *pfind (Char *); 36359243Sobrien 36459243Sobrien/* 36559243Sobrien * sh.sem.c 36659243Sobrien */ 367195609Smpextern void execute (struct command *, volatile int, int *, 368167465Smp int *, int); 369167465Smpextern void mypipe (int *); 37059243Sobrien 37159243Sobrien/* 37259243Sobrien * sh.set.c 37359243Sobrien */ 374167465Smpextern struct varent *adrof1 (const Char *, struct varent *); 375167465Smpextern void doset (Char **, struct command *); 376167465Smpextern void dolet (Char **, struct command *); 377231990Smpextern Char *putn (tcsh_number_t); 378231990Smpextern tcsh_number_t getn (const Char *); 379167465Smpextern Char *value1 (Char *, struct varent *); 380167465Smpextern void setcopy (const Char *, const Char *, int); 381167465Smpextern void setv (const Char *, Char *, int); 382167465Smpextern void set1 (const Char *, Char **, 383167465Smp struct varent *, int); 384167465Smpextern void setq (const Char *, Char **, 385167465Smp struct varent *, int); 386167465Smpextern void unset (Char **, struct command *); 387167465Smpextern void unset1 (Char *[], struct varent *); 388167465Smpextern void unsetv (Char *); 389231990Smpextern void setNS (const Char *); 390167465Smpextern void shift (Char **, struct command *); 391167465Smpextern void plist (struct varent *, int); 392167465Smpextern Char *unparse (struct command *); 39359243Sobrien#if defined(DSPMBYTE) 394167465Smpextern void update_dspmbyte_vars (void); 395167465Smpextern void autoset_dspmbyte (const Char *); 39659243Sobrien#endif 397231990Smp#if defined(AUTOSET_KANJI) 398231990Smpextern void autoset_kanji (void); 399231990Smp#endif 40059243Sobrien 40159243Sobrien/* 40259243Sobrien * sh.time.c 40359243Sobrien */ 404167465Smpextern void donice (Char **, struct command *); 405167465Smpextern void dotime (Char **, struct command *); 40659243Sobrien#ifdef BSDTIMES 407167465Smpextern void prusage (struct sysrusage *, 408167465Smp struct sysrusage *, 409167465Smp timeval_t *, timeval_t *); 410167465Smpextern void ruadd (struct sysrusage *, 411167465Smp struct sysrusage *); 41259243Sobrien#else /* BSDTIMES */ 41359243Sobrien# ifdef _SEQUENT_ 414167465Smpextern void prusage (struct process_stats *, 415167465Smp struct process_stats *, 416167465Smp timeval_t *, timeval_t *); 417167465Smpextern void ruadd (struct process_stats *, 418167465Smp struct process_stats *); 41959243Sobrien# else /* !_SEQUENT_ */ 42059243Sobrien# ifdef POSIX 421167465Smpextern void prusage (struct tms *, struct tms *, 422167465Smp clock_t, clock_t); 42359243Sobrien# else /* !POSIX */ 424167465Smpextern void prusage (struct tms *, struct tms *, 425167465Smp time_t, time_t); 42659243Sobrien# endif /* !POSIX */ 42759243Sobrien# endif /* !_SEQUENT_ */ 42859243Sobrien#endif /* BSDTIMES */ 429167465Smpextern void settimes (void); 43059243Sobrien#if defined(BSDTIMES) || defined(_SEQUENT_) 431167465Smpextern void tvsub (struct timeval *, 432167465Smp struct timeval *, 433167465Smp struct timeval *); 43459243Sobrien#endif /* BSDTIMES || _SEQUENT_ */ 43559243Sobrien 436167465Smp/* 437167465Smp * tw.parse.c 438167465Smp */ 439167465Smpextern void copyn (Char *, const Char *, size_t); 440167465Smpextern void catn (Char *, const Char *, int); 441167465Smp 44259243Sobrien#endif /* _h_sh_decls */ 443