|
|
1.1 root 1: /* defs 4.2 85/10/28 */
2: #include <stdio.h>
3: #include <sys/param.h>
4: #include <ctype.h>
5: #ifdef VERSION8
6: # include <ndir.h>
7: #else
8: # include <sys/dir.h>
9: #endif
10:
11:
12: #define SHELLCOM "/bin/sh"
13:
14: typedef char flag; /* represent a few bit flag */
15: typedef long int TIMETYPE;
16:
17: #ifdef unix
18: /* to install metering, add a statement like */
19: #define METERFILE "/usr/sif/make/Meter"
20: /* to turn metering on, set external variable meteron to 1 */
21: #endif
22:
23: /* define FSTATIC to be static on systems with C compilers
24: supporting file-static; otherwise define it to be null
25: */
26: #define FSTATIC static
27:
28: #define NO 0
29: #define YES 1
30:
31: #define equal(a,b) (! strcmp(a,b))
32: #define HASHSIZE 1021
33: #define NLEFTS 512
34: #define NCHARS 500
35: #define NINTS 250
36: #define INMAX 5000
37: #define OUTMAX 5000
38: #define QBUFMAX 5000
39: #define MAXDIR 10
40: #define MAXPROC 100
41: #define MAXINCLUDE 17
42: #define PROCLIMIT 3
43:
44: #define ALLDEPS 1
45: #define SOMEDEPS 2
46:
47: #define META 01
48: #define TERMINAL 02
49: extern char funny[128];
50:
51:
52: #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
53: #define CHNULL (char *) NULL
54:
55: extern int sigivalue;
56: extern int sigqvalue;
57: extern int dbgflag;
58: extern int prtrflag;
59: extern int silflag;
60: extern int noexflag;
61: extern int keepgoing;
62: extern int noruleflag;
63: extern int touchflag;
64: extern int questflag;
65: extern int oldflag;
66: extern int ndocoms;
67: extern int ignerr;
68: extern int okdel;
69: extern int forceshell;
70: extern int inarglist;
71: extern char **envpp; /* points to slot in environment vector */
72: extern char *prompt;
73: extern int nopdir;
74:
75: typedef struct nameblock *nameblkp;
76: typedef struct depblock *depblkp;
77: typedef struct lineblock *lineblkp;
78: typedef struct chain *chainp;
79:
80: struct nameblock
81: {
82: nameblkp nxtnameblock;
83: char *namep;
84: lineblkp linep;
85: flag done;
86: flag septype;
87: flag isarch;
88: flag isdir;
89: TIMETYPE modtime;
90: };
91:
92: extern nameblkp mainname;
93: extern nameblkp firstname;
94: extern nameblkp *hashtab;
95: extern int nhashed;
96: extern int hashsize;
97: extern int hashthresh;
98:
99: struct lineblock
100: {
101: lineblkp nxtlineblock;
102: struct depblock *depp;
103: struct shblock *shp;
104: };
105: extern lineblkp sufflist;
106:
107: struct depblock
108: {
109: depblkp nxtdepblock;
110: nameblkp depname;
111: char nowait;
112: } ;
113:
114: struct shblock
115: {
116: struct shblock *nxtshblock;
117: char *shbp;
118: };
119:
120: struct varblock
121: {
122: struct varblock *nxtvarblock;
123: char *varname;
124: char *varval;
125: char **export;
126: flag noreset;
127: flag used;
128: };
129: extern struct varblock *firstvar;
130:
131: struct pattern
132: {
133: struct pattern *nxtpattern;
134: char *patval;
135: };
136: extern struct pattern *firstpat;
137:
138: struct dirhd
139: {
140: struct dirhd *nxtdirhd;
141: TIMETYPE dirtime;
142: int dirok;
143: DIR * dirfc;
144: char *dirn;
145: };
146: extern struct dirhd *firstod;
147:
148:
149: struct chain
150: {
151: chainp nextp;
152: char *datap;
153: };
154:
155: struct wild
156: {
157: struct wild *next;
158: lineblkp linep;
159: char *left;
160: char *right;
161: int llen;
162: int rlen;
163: int totlen;
164: };
165:
166: typedef struct wild *wildp;
167: extern wildp firstwild;
168: extern wildp lastwild;
169:
170:
171: /* date for processes */
172: extern int proclimit; /* maximum spawned processes allowed alive at one time */
173: extern int proclive; /* number of spawned processes awaited */
174: extern int nproc; /* next slot in process stack to use */
175: extern struct process
176: {
177: int pid;
178: flag nohalt;
179: flag nowait;
180: flag done;
181: } procstack[ ];
182:
183:
184: char *copys(), *concat(), *subst();
185: int *ckalloc();
186: nameblkp srchname(), makename();
187: TIMETYPE exists();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.