home *** CD-ROM | disk | FTP | other *** search
- #
- /*
- * UNIX shell
- */
-
- /* error exits from various parts of shell */
- #define ERROR 1
- #define SYNBAD 2
- #define SIGFAIL 3
- #define SIGFLG 0200
-
- /* command tree */
- #define FPRS 020
- #define FINT 040
- #define FAMP 0100
- #define FPIN 0400
- #define FPOU 01000
- #define FPCL 02000
- #define FCMD 04000
- #define COMMSK 017
-
- #define TCOM 0
- #define TPAR 1
- #define TFIL 2
- #define TLST 3
- #define TIF 4
- #define TWH 5
- #define TUN 6
- #define TSW 7
- #define TAND 8
- #define TORF 9
- #define TFORK 10
- #define TFOR 11
-
- /* execute table */
- #define SYSSET 1
- #define SYSCD 2
- #define SYSEXEC 3
- #define SYSLOGIN 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 SYSRDONLY 13
- #define SYSTIMES 14
- #define SYSXPORT 15
- #define SYSNULL 16
- #define SYSREAD 17
- #define SYSTST 18
- #define SYSUMASK 19
-
- /* used for input and output of shell */
- #define INIO 10
- #define OTIO 11
-
- /*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"
-
-
- /* result type declarations */
- #define alloc malloc
- ADDRESS alloc();
- VOID addblok();
- STRING make();
- STRING movstr();
- TREPTR cmd();
- TREPTR makefork();
- NAMPTR lookup();
- VOID setname();
- VOID setargs();
- DOLPTR useargs();
- REAL expr();
- STRING catpath();
- STRING getpath();
- STRING *scan();
- STRING mactrim();
- STRING macro();
- STRING execs();
- VOID await();
- VOID post();
- STRING copyto();
- VOID exname();
- STRING staknam();
- VOID printnam();
- VOID printflg();
- VOID prs();
- VOID prc();
- VOID getenv();
- STRING *setenv();
-
- #define attrib(n,f) (n->namflg |= f)
- #define round(a,b) (((int)((ADR(a)+b)-1))&~((b)-1))
- #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 */
- UFD output;
- INT ioset;
- IOPTR iotemp; /* files to be deleted sometime */
- IOPTR iopend; /* documents waiting to be read at NL */
-
- /* substitution */
- INT dolc;
- STRING *dolv;
- DOLPTR argfor;
- ARGPTR gchain;
-
- /* stack */
- #define BLK(x) ((BLKPTR)(x))
- #define BYT(x) ((BYTPTR)(x))
- #define STK(x) ((STKPTR)(x))
- #define ADR(x) ((char*)(x))
-
- /* stak stuff */
- #include "stak.h"
-
- /* string constants */
- MSG atline;
- MSG readmsg;
- MSG colon;
- MSG minus;
- MSG nullstr;
- MSG sptbnl;
- MSG unexpected;
- MSG endoffile;
- MSG synmsg;
-
- /* name tree and words */
- SYSTAB reserved;
- INT wdval;
- INT wdnum;
- ARGPTR wdarg;
- INT wdset;
- BOOL reserv;
-
- /* prompting */
- MSG stdprompt;
- MSG supprompt;
- MSG profile;
-
- /* built in names */
- NAMNOD fngnod;
- NAMNOD ifsnod;
- NAMNOD homenod;
- NAMNOD mailnod;
- NAMNOD pathnod;
- NAMNOD ps1nod;
- NAMNOD ps2nod;
-
- /* special names */
- MSG flagadr;
- STRING cmdadr;
- STRING exitadr;
- STRING dolladr;
- STRING pcsadr;
- STRING pidadr;
-
- MSG defpath;
-
- /* names always present */
- MSG mailname;
- MSG homename;
- MSG pathname;
- MSG fngname;
- MSG ifsname;
- MSG ps1name;
- MSG ps2name;
-
- /* transput */
- CHAR tmpout[];
- STRING tmpnam;
- INT serial;
- #define TMPNAM 7
- FILE standin;
- #define input (standin->fdes)
- #define eof (standin->feof)
- INT peekc;
- STRING comdiv;
- MSG devnull;
-
- /* flags */
- #define noexec 01
- #define intflg 02
- #define prompt 04
- #define setflg 010
- #define errflg 020
- #define ttyflg 040
- #define forked 0100
- #define oneflg 0200
- #define rshflg 0400
- #define waiting 01000
- #define stdflg 02000
- #define execpr 04000
- #define readpr 010000
- #define keyflg 020000
- INT flags;
-
- /* error exits from various parts of shell */
- #include <setjmp.h>
- jmp_buf subshell;
- jmp_buf errshell;
-
- /* fault handling */
- #include "brkincr.h"
- POS brkincr;
-
- #define MINTRAP 0
- #define MAXTRAP 17
-
- #define INTR 2
- #define QUIT 3
- #define MEMF 11
- #define ALARM 14
- #define KILL 15
- #define TRAPSET 2
- #define SIGSET 4
- #define SIGMOD 8
-
- VOID fault();
- BOOL trapnote;
- STRING trapcom[];
- BOOL trapflg[];
-
- /* name tree and words */
- STRING *environ;
- CHAR numbuf[];
- MSG export;
- MSG readonly;
-
- /* execflgs */
- INT exitval;
- BOOL execbrk;
- INT loopcnt;
- INT breakcnt;
-
- /* messages */
- MSG mailmsg;
- MSG coredump;
- MSG badopt;
- MSG badparam;
- MSG badsub;
- MSG nospace;
- MSG notfound;
- MSG badtrap;
- MSG baddir;
- MSG badshift;
- MSG illegal;
- MSG restricted;
- MSG execpmsg;
- MSG notid;
- MSG wtfailed;
- MSG badcreate;
- MSG piperr;
- MSG badopen;
- MSG badnum;
- MSG arglist;
- MSG txtbsy;
- MSG toobig;
- MSG badexec;
- MSG notfound;
- MSG badfile;
-
- address end[];
-
- #include "ctype.h"
-
-