1*37678Sbostic /* defs.h 4.5 89/05/08 */ 26688Smckusick 36688Smckusick # 46688Smckusick /* 56688Smckusick * UNIX shell 66688Smckusick */ 76688Smckusick 86688Smckusick /* error exits from various parts of shell */ 96688Smckusick #define ERROR 1 106688Smckusick #define SYNBAD 2 116688Smckusick #define SIGFAIL 3 126688Smckusick #define SIGFLG 0200 136688Smckusick 146688Smckusick /* command tree */ 156688Smckusick #define FPRS 020 166688Smckusick #define FINT 040 176688Smckusick #define FAMP 0100 186688Smckusick #define FPIN 0400 196688Smckusick #define FPOU 01000 206688Smckusick #define FPCL 02000 216688Smckusick #define FCMD 04000 226688Smckusick #define COMMSK 017 236688Smckusick 246688Smckusick #define TCOM 0 256688Smckusick #define TPAR 1 266688Smckusick #define TFIL 2 276688Smckusick #define TLST 3 286688Smckusick #define TIF 4 296688Smckusick #define TWH 5 306688Smckusick #define TUN 6 316688Smckusick #define TSW 7 326688Smckusick #define TAND 8 336688Smckusick #define TORF 9 346688Smckusick #define TFORK 10 356688Smckusick #define TFOR 11 366688Smckusick 376688Smckusick /* execute table */ 386688Smckusick #define SYSSET 1 396688Smckusick #define SYSCD 2 406688Smckusick #define SYSEXEC 3 416688Smckusick #define SYSLOGIN 4 426688Smckusick #define SYSTRAP 5 436688Smckusick #define SYSEXIT 6 446688Smckusick #define SYSSHFT 7 456688Smckusick #define SYSWAIT 8 466688Smckusick #define SYSCONT 9 476688Smckusick #define SYSBREAK 10 486688Smckusick #define SYSEVAL 11 496688Smckusick #define SYSDOT 12 506688Smckusick #define SYSRDONLY 13 516688Smckusick #define SYSTIMES 14 526688Smckusick #define SYSXPORT 15 536688Smckusick #define SYSNULL 16 546688Smckusick #define SYSREAD 17 556688Smckusick #define SYSTST 18 566688Smckusick #define SYSUMASK 19 576688Smckusick 586688Smckusick /* used for input and output of shell */ 596688Smckusick #define INIO 10 606688Smckusick #define OTIO 11 616688Smckusick 626688Smckusick /*io nodes*/ 636688Smckusick #define USERIO 10 646688Smckusick #define IOUFD 15 656688Smckusick #define IODOC 16 666688Smckusick #define IOPUT 32 676688Smckusick #define IOAPP 64 686688Smckusick #define IOMOV 128 696688Smckusick #define IORDW 256 706688Smckusick #define INPIPE 0 716688Smckusick #define OTPIPE 1 726688Smckusick 736688Smckusick /* arg list terminator */ 746688Smckusick #define ENDARGS 0 756688Smckusick 766688Smckusick #include "mac.h" 776688Smckusick #include "mode.h" 786688Smckusick #include "name.h" 796688Smckusick 806688Smckusick 816688Smckusick /* result type declarations */ 826688Smckusick #define alloc malloc 836688Smckusick ADDRESS alloc(); 846688Smckusick VOID addblok(); 856688Smckusick STRING make(); 866688Smckusick STRING movstr(); 876688Smckusick TREPTR cmd(); 886688Smckusick TREPTR makefork(); 896688Smckusick NAMPTR lookup(); 906688Smckusick VOID setname(); 916688Smckusick VOID setargs(); 926688Smckusick DOLPTR useargs(); 936688Smckusick REAL expr(); 946688Smckusick STRING catpath(); 956688Smckusick STRING getpath(); 966688Smckusick STRING *scan(); 976688Smckusick STRING mactrim(); 986688Smckusick STRING macro(); 996688Smckusick STRING execs(); 1006688Smckusick VOID await(); 1016688Smckusick VOID post(); 1026688Smckusick STRING copyto(); 1036688Smckusick VOID exname(); 1046688Smckusick STRING staknam(); 1056688Smckusick VOID printnam(); 1066688Smckusick VOID printflg(); 1076688Smckusick VOID prs(); 1086688Smckusick VOID prc(); 10918429Smckusick VOID setupenv(); 1106688Smckusick STRING *setenv(); 1116688Smckusick 1126688Smckusick #define attrib(n,f) (n->namflg |= f) 1136688Smckusick #define round(a,b) (((int)((ADR(a)+b)-1))&~((b)-1)) 1146688Smckusick #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE])) 1156688Smckusick #define eq(a,b) (cf(a,b)==0) 1166688Smckusick #define max(a,b) ((a)>(b)?(a):(b)) 1176688Smckusick #define assert(x) ; 1186688Smckusick 1196688Smckusick /* temp files and io */ 1206688Smckusick UFD output; 1216688Smckusick INT ioset; 1226688Smckusick IOPTR iotemp; /* files to be deleted sometime */ 1236688Smckusick IOPTR iopend; /* documents waiting to be read at NL */ 1246688Smckusick 1256688Smckusick /* substitution */ 1266688Smckusick INT dolc; 1276688Smckusick STRING *dolv; 1286688Smckusick DOLPTR argfor; 1296688Smckusick ARGPTR gchain; 1306688Smckusick 1316688Smckusick /* stack */ 1326688Smckusick #define BLK(x) ((BLKPTR)(x)) 1336688Smckusick #define BYT(x) ((BYTPTR)(x)) 1346688Smckusick #define STK(x) ((STKPTR)(x)) 1356688Smckusick #define ADR(x) ((char*)(x)) 1366688Smckusick 1376688Smckusick /* stak stuff */ 1386688Smckusick #include "stak.h" 1396688Smckusick 1406688Smckusick /* string constants */ 1416688Smckusick MSG atline; 1426688Smckusick MSG readmsg; 1436688Smckusick MSG colon; 1446688Smckusick MSG minus; 1456688Smckusick MSG nullstr; 1466688Smckusick MSG sptbnl; 1476688Smckusick MSG unexpected; 1486688Smckusick MSG endoffile; 1496688Smckusick MSG synmsg; 1506688Smckusick 1516688Smckusick /* name tree and words */ 1526688Smckusick SYSTAB reserved; 1536688Smckusick INT wdval; 1546688Smckusick INT wdnum; 1556688Smckusick ARGPTR wdarg; 1566688Smckusick INT wdset; 1576688Smckusick BOOL reserv; 1586688Smckusick 1596688Smckusick /* prompting */ 1606688Smckusick MSG stdprompt; 1616688Smckusick MSG supprompt; 1626688Smckusick MSG profile; 1636688Smckusick 1646688Smckusick /* built in names */ 1656688Smckusick NAMNOD fngnod; 1666688Smckusick NAMNOD ifsnod; 1676688Smckusick NAMNOD homenod; 1686688Smckusick NAMNOD mailnod; 1696688Smckusick NAMNOD pathnod; 1706688Smckusick NAMNOD ps1nod; 1716688Smckusick NAMNOD ps2nod; 1726688Smckusick 1736688Smckusick /* special names */ 1746688Smckusick MSG flagadr; 1756688Smckusick STRING cmdadr; 1766688Smckusick STRING exitadr; 1776688Smckusick STRING dolladr; 1786688Smckusick STRING pcsadr; 1796688Smckusick STRING pidadr; 1806688Smckusick 1816688Smckusick /* names always present */ 1826688Smckusick MSG mailname; 1836688Smckusick MSG homename; 1846688Smckusick MSG pathname; 1856688Smckusick MSG fngname; 1866688Smckusick MSG ifsname; 1876688Smckusick MSG ps1name; 1886688Smckusick MSG ps2name; 1896688Smckusick 1906688Smckusick /* transput */ 1916688Smckusick CHAR tmpout[]; 1926688Smckusick STRING tmpnam; 1936688Smckusick INT serial; 1946688Smckusick #define TMPNAM 7 1956688Smckusick FILE standin; 1966688Smckusick #define input (standin->fdes) 1976688Smckusick #define eof (standin->feof) 1986688Smckusick INT peekc; 1996688Smckusick STRING comdiv; 2006688Smckusick MSG devnull; 2016688Smckusick 2026688Smckusick /* flags */ 2036688Smckusick #define noexec 01 2046688Smckusick #define intflg 02 2056688Smckusick #define prompt 04 2066688Smckusick #define setflg 010 2076688Smckusick #define errflg 020 2086688Smckusick #define ttyflg 040 2096688Smckusick #define forked 0100 2106688Smckusick #define oneflg 0200 2116688Smckusick #define rshflg 0400 2126688Smckusick #define waiting 01000 2136688Smckusick #define stdflg 02000 2146688Smckusick #define execpr 04000 2156688Smckusick #define readpr 010000 2166688Smckusick #define keyflg 020000 21717956Sserge #define batchflg 040000 2186688Smckusick INT flags; 2196688Smckusick 2206688Smckusick /* error exits from various parts of shell */ 2216688Smckusick #include <setjmp.h> 2226688Smckusick jmp_buf subshell; 2236688Smckusick jmp_buf errshell; 22412992Ssam jmp_buf INTbuf; 2256688Smckusick 2266688Smckusick /* fault handling */ 2276688Smckusick #include "brkincr.h" 2286688Smckusick POS brkincr; 2296688Smckusick 2306688Smckusick #define MINTRAP 0 23118429Smckusick #define MAXTRAP 32 2326688Smckusick 2336688Smckusick #define INTR 2 2346688Smckusick #define QUIT 3 2356688Smckusick #define MEMF 11 2366688Smckusick #define ALARM 14 2376688Smckusick #define KILL 15 2386688Smckusick #define TRAPSET 2 2396688Smckusick #define SIGSET 4 2406688Smckusick #define SIGMOD 8 2416688Smckusick 2426688Smckusick VOID fault(); 2436688Smckusick BOOL trapnote; 2446688Smckusick STRING trapcom[]; 2456688Smckusick BOOL trapflg[]; 24612992Ssam BOOL trapjmp[]; 2476688Smckusick 2486688Smckusick /* name tree and words */ 2496688Smckusick STRING *environ; 2506688Smckusick CHAR numbuf[]; 2516688Smckusick MSG export; 2526688Smckusick MSG readonly; 2536688Smckusick 2546688Smckusick /* execflgs */ 2556688Smckusick INT exitval; 2566688Smckusick BOOL execbrk; 2576688Smckusick INT loopcnt; 2586688Smckusick INT breakcnt; 2596688Smckusick 2606688Smckusick /* messages */ 2616688Smckusick MSG mailmsg; 2626688Smckusick MSG coredump; 2636688Smckusick MSG badopt; 2646688Smckusick MSG badparam; 2656688Smckusick MSG badsub; 2666688Smckusick MSG nospace; 2676688Smckusick MSG notfound; 2686688Smckusick MSG badtrap; 2696688Smckusick MSG baddir; 2706688Smckusick MSG badshift; 2716688Smckusick MSG illegal; 2726688Smckusick MSG restricted; 2736688Smckusick MSG execpmsg; 2746688Smckusick MSG notid; 2756688Smckusick MSG wtfailed; 2766688Smckusick MSG badcreate; 2776688Smckusick MSG piperr; 2786688Smckusick MSG badopen; 2796688Smckusick MSG badnum; 2806688Smckusick MSG arglist; 2816688Smckusick MSG txtbsy; 2826688Smckusick MSG toobig; 2836688Smckusick MSG badexec; 2846688Smckusick MSG notfound; 2856688Smckusick MSG badfile; 2866688Smckusick 2876688Smckusick address end[]; 2886688Smckusick 2896688Smckusick #include "ctype.h" 2906688Smckusick 291