|
|
1.1 root 1: /* defs.h 4.2 83/06/10 */
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: jmp_buf INTbuf;
226:
227: /* fault handling */
228: #include "brkincr.h"
229: POS brkincr;
230:
231: #define MINTRAP 0
232: #define MAXTRAP 17
233:
234: #define INTR 2
235: #define QUIT 3
236: #define MEMF 11
237: #define ALARM 14
238: #define KILL 15
239: #define TRAPSET 2
240: #define SIGSET 4
241: #define SIGMOD 8
242:
243: VOID fault();
244: BOOL trapnote;
245: STRING trapcom[];
246: BOOL trapflg[];
247: BOOL trapjmp[];
248:
249: /* name tree and words */
250: STRING *environ;
251: CHAR numbuf[];
252: MSG export;
253: MSG readonly;
254:
255: /* execflgs */
256: INT exitval;
257: BOOL execbrk;
258: INT loopcnt;
259: INT breakcnt;
260:
261: /* messages */
262: MSG mailmsg;
263: MSG coredump;
264: MSG badopt;
265: MSG badparam;
266: MSG badsub;
267: MSG nospace;
268: MSG notfound;
269: MSG badtrap;
270: MSG baddir;
271: MSG badshift;
272: MSG illegal;
273: MSG restricted;
274: MSG execpmsg;
275: MSG notid;
276: MSG wtfailed;
277: MSG badcreate;
278: MSG piperr;
279: MSG badopen;
280: MSG badnum;
281: MSG arglist;
282: MSG txtbsy;
283: MSG toobig;
284: MSG badexec;
285: MSG notfound;
286: MSG badfile;
287:
288: address end[];
289:
290: #include "ctype.h"
291:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.