V9/cmd/sh/defs.h
/* @(#)defs.h 1.7 */
/*
* UNIX shell
*/
/* error exits from various parts of shell */
#define ERROR 1
#define SYNBAD 2
#define SIGFAIL 2000
#define SIGFLG 0200
/* command tree */
#define FPRS 0x0100
#define FINT 0x0200
#define FAMP 0x0400
#define FPIN 0x0800
#define FPOU 0x1000
#define FPCL 0x2000
#define FCMD 0x4000
#define COMMSK 0x00F0
#define CNTMSK 0x000F
#define TCOM 0x0000
#define TPAR 0x0010
#define TFIL 0x0020
#define TLST 0x0030
#define TIF 0x0040
#define TWH 0x0050
#define TUN 0x0060
#define TSW 0x0070
#define TAND 0x0080
#define TORF 0x0090
#define TFORK 0x00A0
#define TFOR 0x00B0
#define TFND 0x00C0
/* execute table */
#define SYSSET 1
#define SYSCD 2
#define SYSEXEC 3
#define SYSNEWGRP 4
#define SYSTRAP 5
#define SYSEXIT 6
#define SYSSHFT 7
#define SYSWAIT 8
#define SYSCONT 9
#define SYSBREAK 10
#define SYSEVAL 11
#define SYSDOT 12
#define SYSTIMES 14
#define SYSXPORT 15
#define SYSNULL 16
#define SYSREAD 17
#define SYSUMASK 20
#define SYSECHO 22
#define SYSPWD 24
#define SYSRETURN 25
#define SYSUNS 26
#define SYSMEM 27
#define SYSWHATIS 28
#define SYSBLTIN 29
/* used for input and output of shell */
#define INIO 19
/*io nodes*/
#define USERIO 10
#define IOUFD 15
#define IODOC 16
#define IOPUT 32
#define IOAPP 64
#define IOMOV 128
#define IORDW 256
#define INPIPE 0
#define OTPIPE 1
/* arg list terminator */
#define ENDARGS 0
#include "mac.h"
#include "mode.h"
#include "name.h"
#include <signal.h>
/* error catching */
extern int errno;
/* result type declarations */
#ifdef BSD4_2
#define shalloc malloc
#define shfree free
#endif
extern char *shalloc();
extern char *make();
extern char *movstr();
extern char *movstrn();
extern char *quotedstring();
extern char *strf();
extern struct trenod *cmd();
extern struct trenod *makefork();
extern struct namnod *lookup();
extern struct namnod *findnam();
extern struct dolnod *useargs();
extern float expr();
extern char *catpath();
extern char *getpath();
extern char *nextpath();
extern char **scan();
extern char *mactrim();
extern char *macro();
extern char *execs();
extern char *copyto();
extern int exname();
extern char *staknam();
extern int printnam();
extern int printro();
extern int printexp();
extern char **setenv();
extern long time();
extern void prs_2buff();
extern void prc_buff();
extern void prs_buff();
extern void prn_buff();
extern void prs_cntl();
extern void flushb();
extern long lseek();
#define attrib(n,f) (n->namflg |= f)
#ifdef CRAY
#define round(a,b) ((((a)+(b))-1)&~((b)-1))
#define sround(a,b) ((char *)((int)(a+(b-1))&077777777))
#else
#define round(a,b) (((int)(((char *)(a)+b)-1))&~((b)-1))
#define sround round
#endif
#define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE]))
#define eq(a,b) (cf(a,b)==0)
#define max(a,b) ((a)>(b)?(a):(b))
#define assert(x) ;
/* temp files and io */
extern int output;
extern int ioset;
extern struct ionod *iotemp; /* files to be deleted sometime */
extern struct ionod *fiotemp; /* function files to be deleted sometime */
extern struct ionod *iopend; /* documents waiting to be read at NL */
extern struct fdsave fdmap[];
/* substitution */
extern int dolc;
extern char **dolv;
extern struct dolnod *argfor;
extern struct argnod *gchain;
/* stak stuff */
#include "stak.h"
/* string constants */
extern char atline[];
extern char readmsg[];
extern char colon[];
extern char minus[];
extern char nullstr[];
extern char sptbnl[];
extern char unexpected[];
extern char endoffile[];
extern char synmsg[];
/* name tree and words */
extern struct sysnod reserved[];
extern int no_reserved;
extern struct sysnod commands[];
extern int no_commands;
extern int wdval;
extern int wdnum;
extern int fndef;
extern struct argnod *wdarg;
extern int wdset;
extern BOOL reserv;
/* prompting */
extern char stdprompt[];
extern char supprompt[];
extern char profile[];
/* built in names */
extern struct namnod fngnod;
extern struct namnod cdpnod;
extern struct namnod ifsnod;
extern struct namnod histnod;
extern struct namnod homenod;
extern struct namnod mailnod;
extern struct namnod pathnod;
extern struct namnod ps1nod;
extern struct namnod ps2nod;
extern struct namnod acctnod;
/* special names */
extern char flagadr[];
extern char *pcsadr;
extern char *pidadr;
extern char *cmdadr;
extern char defpath[];
/* names always present */
extern char mailname[];
extern char homename[];
extern char pathname[];
extern char cdpname[];
extern char ifsname[];
extern char histname[];
extern char ps1name[];
extern char ps2name[];
extern char acctname[];
/* transput */
extern char tmpout[];
extern char *tmpnam;
extern int serial;
#define TMPNAM 7
extern struct fileblk *standin;
#define input (standin->fdes)
#define eof (standin->feof)
extern int peekc;
extern int peekn;
extern int histfd;
extern char *comdiv;
extern char devnull[];
/* flags */
#define noexec 01
#define sysflg 01
#define intflg 02
#define prompt 04
#define setflg 010
#define errflg 020
#define ttyflg 040
#define forked 0100
#define oneflg 0200
#define protflg 0400
#define waiting 01000
#define stdflg 02000
#define STDFLG 's'
#define execpr 04000
#define readpr 010000
#define keyflg 020000
#define nofngflg 0200000
#define exportflg 0400000
extern long flags;
extern int rwait; /* flags read waiting */
/* error exits from various parts of shell */
#include <setjmp.h>
extern jmp_buf subshell;
extern jmp_buf errshell;
/* fault handling */
#include "brkincr.h"
extern unsigned brkincr;
#define MINTRAP 0
#define MAXTRAP 32
#define TRAPSET 2
#define SIGSET 4
#define SIGMOD 8
#define SIGCAUGHT 16
extern int fault();
extern BOOL trapnote;
extern char *trapcom[];
extern BOOL trapflg[];
/* name tree and words */
extern char **environ;
extern char numbuf[];
extern char export[];
extern char duperr[];
/* execflgs */
extern int exitval;
extern int retval;
extern BOOL execbrk;
extern int loopcnt;
extern int breakcnt;
extern int funcnt;
/* messages */
extern char mailmsg[];
extern char coredump[];
extern char badopt[];
extern char badparam[];
extern char unset[];
extern char badsub[];
extern char nospace[];
extern char nostack[];
extern char notfound[];
extern char notbltin[];
extern char badtrap[];
extern char baddir[];
extern char badshift[];
extern char execpmsg[];
extern char notid[];
extern char badcreate[];
extern char nofork[];
extern char noswap[];
extern char piperr[];
extern char badopen[];
extern char badnum[];
extern char arglist[];
extern char txtbsy[];
extern char toobig[];
extern char badexec[];
extern char badfile[];
extern char badreturn[];
extern char badexport[];
extern char badunset[];
extern char nohome[];
extern char badperm[];
extern char badfname[];
/* 'builtin' error messages */
extern char btest[];
extern char badop[];
/* fork constant */
#define FORKLIM 32
extern address end[];
#include "sctype.h"
extern int wasintr; /* used to tell if break or delete is hit
* while executing a wait
*/
extern int eflag;
/*
* Find out if it is time to go away.
* `trapnote' is set to SIGSET when fault is seen and
* no trap has been set.
*/
#define sigchk() if (trapnote & SIGSET) \
exitsh(exitval ? exitval : SIGFAIL)
#define exitset() retval = exitval