1 /* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.68 2016/08/01 16:21:09 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) __attribute__((__noreturn__)); 52 #else 53 extern void xexit (int) __attribute__((__noreturn__)); 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 extern Char *randsuf (void); 82 83 /* 84 * sh.err.c 85 */ 86 extern void reset (void) __attribute__((__noreturn__)); 87 extern void cleanup_push_internal(void *, void (*fn) (void *) 88 #ifdef CLEANUP_DEBUG 89 , const char *, size_t 90 #define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__) 91 #else 92 #define cleanup_push(v, f) cleanup_push_internal(v, f) 93 #endif 94 ); 95 extern int cleanup_reset(void); 96 extern void cleanup_ignore(void *); 97 extern void cleanup_until(void *); 98 extern void cleanup_until_mark(void); 99 extern size_t cleanup_push_mark(void); 100 extern void cleanup_pop_mark(size_t); 101 extern void open_cleanup(void *); 102 extern void opendir_cleanup(void *); 103 extern void sigint_cleanup(void *); 104 extern void sigprocmask_cleanup(void *); 105 extern void xfree_indirect(void *); 106 extern void errinit (void); 107 extern void seterror (unsigned int, ...); 108 extern void fixerror (void); 109 extern void stderror (unsigned int, ...) 110 __attribute__((__noreturn__)); 111 112 /* 113 * sh.exec.c 114 */ 115 extern void doexec (struct command *, int); 116 extern void dohash (Char **, struct command *); 117 extern void dounhash (Char **, struct command *); 118 extern void execash (Char **, struct command *); 119 extern void hashstat (Char **, struct command *); 120 extern void xechoit (Char **); 121 extern int executable (const Char *, const Char *, int); 122 extern int tellmewhat (struct wordent *, Char **); 123 extern void dowhere (Char **, struct command *); 124 extern int find_cmd (Char *, int); 125 126 /* 127 * sh.exp.c 128 */ 129 extern Char *filetest (Char *, Char ***, int); 130 extern tcsh_number_t expr (Char ***); 131 extern tcsh_number_t exp0 (Char ***, int); 132 133 /* 134 * sh.file.c 135 */ 136 #if defined(FILEC) && defined(TIOCSTI) 137 extern size_t tenex (Char *, size_t); 138 #endif 139 140 /* 141 * sh.func.c 142 */ 143 extern void tsetenv (const Char *, const Char *); 144 extern void Unsetenv (Char *); 145 extern void doalias (Char **, struct command *); 146 extern void dobreak (Char **, struct command *); 147 extern void docontin (Char **, struct command *); 148 extern void doecho (Char **, struct command *); 149 extern void doelse (Char **, struct command *); 150 extern void doend (Char **, struct command *); 151 extern void doeval (Char **, struct command *); 152 extern void doexit (Char **, struct command *); 153 extern void doforeach (Char **, struct command *); 154 extern void doglob (Char **, struct command *); 155 extern void dogoto (Char **, struct command *); 156 extern void doif (Char **, struct command *); 157 extern void dolimit (Char **, struct command *); 158 extern void dologin (Char **, struct command *); 159 extern void dologout (Char **, struct command *); 160 #ifdef NEWGRP 161 extern void donewgrp (Char **, struct command *); 162 #endif 163 extern void donohup (Char **, struct command *); 164 extern void dohup (Char **, struct command *); 165 extern void doonintr (Char **, struct command *); 166 extern void doprintenv (Char **, struct command *); 167 extern void dorepeat (Char **, struct command *); 168 extern void dofiletest (Char **, struct command *); 169 extern void dosetenv (Char **, struct command *); 170 extern void dosuspend (Char **, struct command *); 171 extern void doswbrk (Char **, struct command *); 172 extern void doswitch (Char **, struct command *); 173 extern void doumask (Char **, struct command *); 174 extern void dounlimit (Char **, struct command *); 175 extern void dounsetenv (Char **, struct command *); 176 extern void dowhile (Char **, struct command *); 177 extern void dozip (Char **, struct command *); 178 extern void func (struct command *, 179 const struct biltins *); 180 extern void gotolab (Char *); 181 extern const struct biltins *isbfunc (struct command *); 182 extern void prvars (void); 183 extern int srchx (Char *); 184 extern void unalias (Char **, struct command *); 185 extern void wfree (void); 186 extern void dobuiltins (Char **, struct command *); 187 extern void reexecute (struct command *); 188 extern int getYN (const char *); 189 190 /* 191 * sh.glob.c 192 */ 193 extern Char *globequal (Char *); 194 extern Char **dobackp (Char *, int); 195 extern Char *globone (Char *, int); 196 extern int Gmatch (const Char *, const Char *); 197 extern int Gnmatch (const Char *, const Char *, 198 const Char **); 199 extern Char **globall (Char **, int); 200 extern Char **glob_all_or_error(Char **); 201 extern void rscan (Char **, void (*)(Char)); 202 extern int tglob (Char **); 203 extern void trim (Char **); 204 205 #if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS) 206 extern char *xcatgets (nl_catd, int, int, const char *); 207 #if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO) 208 extern char *iconv_catgets (nl_catd, int, int, const char *); 209 #endif 210 #endif 211 extern void nlsinit (void); 212 extern void nlsclose (void); 213 extern int t_pmatch (const Char *, const Char *, 214 const Char **, int); 215 216 /* 217 * sh.hist.c 218 */ 219 extern void dohist (Char **, struct command *); 220 extern struct Hist *enthist (int, struct wordent *, int, int, int); 221 extern void savehist (struct wordent *, int); 222 extern char *fmthist (int, ptr_t); 223 extern void rechist (Char *, int); 224 extern void loadhist (Char *, int); 225 extern void displayHistStats(const char *); 226 extern void sethistory (int); 227 228 /* 229 * sh.init.c 230 */ 231 extern void mesginit (void); 232 233 /* 234 * sh.lex.c 235 */ 236 extern void addla (Char *); 237 extern void bseek (struct Ain *); 238 extern void btell (struct Ain *); 239 extern void btoeof (void); 240 extern void copylex (struct wordent *, struct wordent *); 241 extern Char *domod (Char *, Char); 242 extern void initlex (struct wordent *); 243 extern void freelex (struct wordent *); 244 extern int lex (struct wordent *); 245 extern void lex_cleanup (void *); 246 extern void prlex (struct wordent *); 247 extern eChar readc (int); 248 extern void settell (void); 249 extern void unreadc (Char); 250 extern ssize_t wide_read (int, Char *, size_t, int); 251 252 253 /* 254 * sh.misc.c 255 */ 256 extern int any (const char *, Char); 257 extern Char **blkcpy (Char **, Char **); 258 extern void blkfree (Char **); 259 extern void blk_cleanup (void *); 260 extern void blk_indirect_cleanup(void *); 261 extern int blklen (Char **); 262 extern void blkpr (Char *const *); 263 extern Char *blkexpand (Char *const *); 264 extern Char **blkspl (Char **, Char **); 265 extern void closem (void); 266 #ifndef CLOSE_ON_EXEC 267 extern void closech (void); 268 #endif /* !CLOSE_ON_EXEC */ 269 extern Char **copyblk (Char **); 270 extern int dcopy (int, int); 271 extern int dmove (int, int); 272 extern void donefds (void); 273 extern Char lastchr (Char *); 274 extern void lshift (Char **, int); 275 extern int number (Char *); 276 extern int prefix (const Char *, const Char *); 277 extern Char **saveblk (Char **); 278 extern void setzero (void *, size_t); 279 extern Char *strip (Char *); 280 extern Char *quote (Char *); 281 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 extern char *strspl (const char *, const char *); 291 extern char *strend (const char *); 292 extern char *areadlink (const char *); 293 extern void xclose (int); 294 extern void xclosedir (DIR *); 295 extern int xcreat (const char *, mode_t); 296 extern struct group *xgetgrgid (gid_t); 297 extern struct passwd *xgetpwnam (const char *); 298 extern struct passwd *xgetpwuid (uid_t); 299 extern int xopen (const char *, int, ...); 300 extern ssize_t xread (int, void *, size_t); 301 extern int xtcsetattr (int, int, const struct termios *); 302 extern ssize_t xwrite (int, const void *, size_t); 303 304 /* 305 * sh.parse.c 306 */ 307 extern void alias (struct wordent *); 308 extern void freesyn (struct command *); 309 extern struct command *syntax (const struct wordent *, 310 const struct wordent *, int); 311 extern void syntax_cleanup(void *); 312 313 /* 314 * sh.print.c 315 */ 316 extern void drainoline (void); 317 extern void flush (void); 318 #ifdef BSDTIMES 319 extern void pcsecs (unsigned long); 320 #else /* !BSDTIMES */ 321 # ifdef POSIX 322 extern void pcsecs (clock_t); 323 # else /* !POSIX */ 324 extern void pcsecs (time_t); 325 # endif /* !POSIX */ 326 #endif /* BSDTIMES */ 327 #ifdef BSDLIMIT 328 extern void psecs (unsigned long); 329 #endif /* BSDLIMIT */ 330 extern int putpure (int); 331 extern int putraw (int); 332 extern void xputchar (int); 333 #ifdef WIDE_STRINGS 334 extern void putwraw (Char); 335 extern void xputwchar (Char); 336 #else 337 # define putwraw(C) putraw(C) 338 # define xputwchar(C) xputchar(C) 339 #endif 340 extern void output_raw_restore(void *); 341 342 343 /* 344 * sh.proc.c 345 */ 346 extern void dobg (Char **, struct command *); 347 extern void dobg1 (Char **, struct command *); 348 extern void dofg (Char **, struct command *); 349 extern void dofg1 (Char **, struct command *); 350 extern void dojobs (Char **, struct command *); 351 extern void dokill (Char **, struct command *); 352 extern void donotify (Char **, struct command *); 353 extern void dostop (Char **, struct command *); 354 extern void dowait (Char **, struct command *); 355 extern void palloc (pid_t, struct command *); 356 extern void panystop (int); 357 extern void pchild (void); 358 extern void pendjob (void); 359 extern pid_t pfork (struct command *, int); 360 extern void pgetty (int, pid_t); 361 extern void pjwait (struct process *); 362 extern void pnote (void); 363 extern void psavejob (void); 364 extern void psavejob_cleanup(void *); 365 extern int pstart (struct process *, int); 366 extern void pwait (void); 367 extern struct process *pfind (Char *); 368 369 /* 370 * sh.sem.c 371 */ 372 extern void execute (struct command *, volatile int, int *, 373 int *, int); 374 extern void mypipe (int *); 375 376 /* 377 * sh.set.c 378 */ 379 extern struct varent *adrof1 (const Char *, struct varent *); 380 extern void doset (Char **, struct command *); 381 extern void dolet (Char **, struct command *); 382 extern Char *putn (tcsh_number_t); 383 extern tcsh_number_t getn (const Char *); 384 extern Char *value1 (Char *, struct varent *); 385 extern void setcopy (const Char *, const Char *, int); 386 extern void setv (const Char *, Char *, int); 387 extern void set1 (const Char *, Char **, 388 struct varent *, int); 389 extern void setq (const Char *, Char **, 390 struct varent *, int); 391 extern void unset (Char **, struct command *); 392 extern void unset1 (Char *[], struct varent *); 393 extern void unsetv (Char *); 394 extern void setNS (const Char *); 395 extern void shift (Char **, struct command *); 396 extern void plist (struct varent *, int); 397 extern Char *unparse (struct command *); 398 #if defined(DSPMBYTE) 399 extern void update_dspmbyte_vars (void); 400 extern void autoset_dspmbyte (const Char *); 401 #endif 402 #if defined(AUTOSET_KANJI) 403 extern void autoset_kanji (void); 404 #endif 405 extern void update_wordchars (void); 406 407 /* 408 * sh.time.c 409 */ 410 extern void donice (Char **, struct command *); 411 extern void dotime (Char **, struct command *); 412 #ifdef BSDTIMES 413 extern void prusage (struct sysrusage *, 414 struct sysrusage *, 415 timeval_t *, timeval_t *); 416 extern void ruadd (struct sysrusage *, 417 struct sysrusage *); 418 #else /* BSDTIMES */ 419 # ifdef _SEQUENT_ 420 extern void prusage (struct process_stats *, 421 struct process_stats *, 422 timeval_t *, timeval_t *); 423 extern void ruadd (struct process_stats *, 424 struct process_stats *); 425 # else /* !_SEQUENT_ */ 426 # ifdef POSIX 427 extern void prusage (struct tms *, struct tms *, 428 clock_t, clock_t); 429 # else /* !POSIX */ 430 extern void prusage (struct tms *, struct tms *, 431 time_t, time_t); 432 # endif /* !POSIX */ 433 # endif /* !_SEQUENT_ */ 434 #endif /* BSDTIMES */ 435 extern void settimes (void); 436 #if defined(BSDTIMES) || defined(_SEQUENT_) 437 extern void tvsub (struct timeval *, 438 struct timeval *, 439 struct timeval *); 440 #endif /* BSDTIMES || _SEQUENT_ */ 441 442 /* 443 * tw.parse.c 444 */ 445 extern void copyn (Char *, const Char *, size_t); 446 extern void catn (Char *, const Char *, int); 447 448 #endif /* _h_sh_decls */ 449