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