1 /* defs.h 4.1 82/05/07 */ 2 3 # 4 /* 5 * UNIX shell 6 */ 7 8 /* error exits from various parts of shell */ 9 #define ERROR 1 10 #define SYNBAD 2 11 #define SIGFAIL 3 12 #define SIGFLG 0200 13 14 /* command tree */ 15 #define FPRS 020 16 #define FINT 040 17 #define FAMP 0100 18 #define FPIN 0400 19 #define FPOU 01000 20 #define FPCL 02000 21 #define FCMD 04000 22 #define COMMSK 017 23 24 #define TCOM 0 25 #define TPAR 1 26 #define TFIL 2 27 #define TLST 3 28 #define TIF 4 29 #define TWH 5 30 #define TUN 6 31 #define TSW 7 32 #define TAND 8 33 #define TORF 9 34 #define TFORK 10 35 #define TFOR 11 36 37 /* execute table */ 38 #define SYSSET 1 39 #define SYSCD 2 40 #define SYSEXEC 3 41 #define SYSLOGIN 4 42 #define SYSTRAP 5 43 #define SYSEXIT 6 44 #define SYSSHFT 7 45 #define SYSWAIT 8 46 #define SYSCONT 9 47 #define SYSBREAK 10 48 #define SYSEVAL 11 49 #define SYSDOT 12 50 #define SYSRDONLY 13 51 #define SYSTIMES 14 52 #define SYSXPORT 15 53 #define SYSNULL 16 54 #define SYSREAD 17 55 #define SYSTST 18 56 #define SYSUMASK 19 57 58 /* used for input and output of shell */ 59 #define INIO 10 60 #define OTIO 11 61 62 /*io nodes*/ 63 #define USERIO 10 64 #define IOUFD 15 65 #define IODOC 16 66 #define IOPUT 32 67 #define IOAPP 64 68 #define IOMOV 128 69 #define IORDW 256 70 #define INPIPE 0 71 #define OTPIPE 1 72 73 /* arg list terminator */ 74 #define ENDARGS 0 75 76 #include "mac.h" 77 #include "mode.h" 78 #include "name.h" 79 80 81 /* result type declarations */ 82 #define alloc malloc 83 ADDRESS alloc(); 84 VOID addblok(); 85 STRING make(); 86 STRING movstr(); 87 TREPTR cmd(); 88 TREPTR makefork(); 89 NAMPTR lookup(); 90 VOID setname(); 91 VOID setargs(); 92 DOLPTR useargs(); 93 REAL expr(); 94 STRING catpath(); 95 STRING getpath(); 96 STRING *scan(); 97 STRING mactrim(); 98 STRING macro(); 99 STRING execs(); 100 VOID await(); 101 VOID post(); 102 STRING copyto(); 103 VOID exname(); 104 STRING staknam(); 105 VOID printnam(); 106 VOID printflg(); 107 VOID prs(); 108 VOID prc(); 109 VOID getenv(); 110 STRING *setenv(); 111 112 #define attrib(n,f) (n->namflg |= f) 113 #define round(a,b) (((int)((ADR(a)+b)-1))&~((b)-1)) 114 #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE])) 115 #define eq(a,b) (cf(a,b)==0) 116 #define max(a,b) ((a)>(b)?(a):(b)) 117 #define assert(x) ; 118 119 /* temp files and io */ 120 UFD output; 121 INT ioset; 122 IOPTR iotemp; /* files to be deleted sometime */ 123 IOPTR iopend; /* documents waiting to be read at NL */ 124 125 /* substitution */ 126 INT dolc; 127 STRING *dolv; 128 DOLPTR argfor; 129 ARGPTR gchain; 130 131 /* stack */ 132 #define BLK(x) ((BLKPTR)(x)) 133 #define BYT(x) ((BYTPTR)(x)) 134 #define STK(x) ((STKPTR)(x)) 135 #define ADR(x) ((char*)(x)) 136 137 /* stak stuff */ 138 #include "stak.h" 139 140 /* string constants */ 141 MSG atline; 142 MSG readmsg; 143 MSG colon; 144 MSG minus; 145 MSG nullstr; 146 MSG sptbnl; 147 MSG unexpected; 148 MSG endoffile; 149 MSG synmsg; 150 151 /* name tree and words */ 152 SYSTAB reserved; 153 INT wdval; 154 INT wdnum; 155 ARGPTR wdarg; 156 INT wdset; 157 BOOL reserv; 158 159 /* prompting */ 160 MSG stdprompt; 161 MSG supprompt; 162 MSG profile; 163 164 /* built in names */ 165 NAMNOD fngnod; 166 NAMNOD ifsnod; 167 NAMNOD homenod; 168 NAMNOD mailnod; 169 NAMNOD pathnod; 170 NAMNOD ps1nod; 171 NAMNOD ps2nod; 172 173 /* special names */ 174 MSG flagadr; 175 STRING cmdadr; 176 STRING exitadr; 177 STRING dolladr; 178 STRING pcsadr; 179 STRING pidadr; 180 181 MSG defpath; 182 183 /* names always present */ 184 MSG mailname; 185 MSG homename; 186 MSG pathname; 187 MSG fngname; 188 MSG ifsname; 189 MSG ps1name; 190 MSG ps2name; 191 192 /* transput */ 193 CHAR tmpout[]; 194 STRING tmpnam; 195 INT serial; 196 #define TMPNAM 7 197 FILE standin; 198 #define input (standin->fdes) 199 #define eof (standin->feof) 200 INT peekc; 201 STRING comdiv; 202 MSG devnull; 203 204 /* flags */ 205 #define noexec 01 206 #define intflg 02 207 #define prompt 04 208 #define setflg 010 209 #define errflg 020 210 #define ttyflg 040 211 #define forked 0100 212 #define oneflg 0200 213 #define rshflg 0400 214 #define waiting 01000 215 #define stdflg 02000 216 #define execpr 04000 217 #define readpr 010000 218 #define keyflg 020000 219 INT flags; 220 221 /* error exits from various parts of shell */ 222 #include <setjmp.h> 223 jmp_buf subshell; 224 jmp_buf errshell; 225 226 /* fault handling */ 227 #include "brkincr.h" 228 POS brkincr; 229 230 #define MINTRAP 0 231 #define MAXTRAP 17 232 233 #define INTR 2 234 #define QUIT 3 235 #define MEMF 11 236 #define ALARM 14 237 #define KILL 15 238 #define TRAPSET 2 239 #define SIGSET 4 240 #define SIGMOD 8 241 242 VOID fault(); 243 BOOL trapnote; 244 STRING trapcom[]; 245 BOOL trapflg[]; 246 247 /* name tree and words */ 248 STRING *environ; 249 CHAR numbuf[]; 250 MSG export; 251 MSG readonly; 252 253 /* execflgs */ 254 INT exitval; 255 BOOL execbrk; 256 INT loopcnt; 257 INT breakcnt; 258 259 /* messages */ 260 MSG mailmsg; 261 MSG coredump; 262 MSG badopt; 263 MSG badparam; 264 MSG badsub; 265 MSG nospace; 266 MSG notfound; 267 MSG badtrap; 268 MSG baddir; 269 MSG badshift; 270 MSG illegal; 271 MSG restricted; 272 MSG execpmsg; 273 MSG notid; 274 MSG wtfailed; 275 MSG badcreate; 276 MSG piperr; 277 MSG badopen; 278 MSG badnum; 279 MSG arglist; 280 MSG txtbsy; 281 MSG toobig; 282 MSG badexec; 283 MSG notfound; 284 MSG badfile; 285 286 address end[]; 287 288 #include "ctype.h" 289 290