xref: /csrg-svn/old/make/defs (revision 2802)
1*2802Swnjstatic	char *sccsid = "@(#)defs	4.1 (Berkeley) 81/02/28";
2*2802Swnj#include <stdio.h>
3*2802Swnj#include <ctype.h>
4*2802Swnj
5*2802Swnj#define SHELLCOM "/bin/sh"
6*2802Swnj
7*2802Swnjtypedef long int TIMETYPE;
8*2802Swnj
9*2802Swnj#ifdef unix
10*2802Swnj/*  to install metering, add a statement like */
11*2802Swnj#define METERFILE "/usr/sif/make/Meter"
12*2802Swnj/* to turn metering on, set external variable meteron to 1 */
13*2802Swnj#endif
14*2802Swnj
15*2802Swnj/* define FSTATIC to be static on systems with C compilers
16*2802Swnj   supporting file-static; otherwise define it to be null
17*2802Swnj*/
18*2802Swnj#define FSTATIC static
19*2802Swnj
20*2802Swnj#define NO 0
21*2802Swnj#define YES 1
22*2802Swnj
23*2802Swnj#define unequal strcmp
24*2802Swnj#define HASHSIZE 1021
25*2802Swnj#define NLEFTS 512
26*2802Swnj#define NCHARS 500
27*2802Swnj#define NINTS  250
28*2802Swnj#define INMAX 2500
29*2802Swnj#define OUTMAX 3500
30*2802Swnj#define QBUFMAX 2500
31*2802Swnj#define MAXDIR 10
32*2802Swnj
33*2802Swnj#define ALLDEPS  1
34*2802Swnj#define SOMEDEPS 2
35*2802Swnj
36*2802Swnj#define META 01
37*2802Swnj#define TERMINAL 02
38*2802Swnjextern char funny[128];
39*2802Swnj
40*2802Swnj
41*2802Swnj#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
42*2802Swnj
43*2802Swnjextern int sigivalue;
44*2802Swnjextern int sigqvalue;
45*2802Swnjextern int waitpid;
46*2802Swnjextern int dbgflag;
47*2802Swnjextern int prtrflag;
48*2802Swnjextern int silflag;
49*2802Swnjextern int noexflag;
50*2802Swnjextern int keepgoing;
51*2802Swnjextern int noruleflag;
52*2802Swnjextern int touchflag;
53*2802Swnjextern int questflag;
54*2802Swnjextern int ndocoms;
55*2802Swnjextern int ignerr;
56*2802Swnjextern int okdel;
57*2802Swnjextern int inarglist;
58*2802Swnjextern char *prompt;
59*2802Swnjextern int nopdir;
60*2802Swnjextern char junkname[ ];
61*2802Swnj
62*2802Swnj
63*2802Swnj
64*2802Swnjstruct nameblock
65*2802Swnj	{
66*2802Swnj	struct nameblock *nxtnameblock;
67*2802Swnj	char *namep;
68*2802Swnj	struct lineblock *linep;
69*2802Swnj	int done:3;
70*2802Swnj	int septype:3;
71*2802Swnj	TIMETYPE modtime;
72*2802Swnj	};
73*2802Swnj
74*2802Swnjextern struct nameblock *mainname ;
75*2802Swnjextern struct nameblock *firstname;
76*2802Swnj
77*2802Swnjstruct lineblock
78*2802Swnj	{
79*2802Swnj	struct lineblock *nxtlineblock;
80*2802Swnj	struct depblock *depp;
81*2802Swnj	struct shblock *shp;
82*2802Swnj	};
83*2802Swnjextern struct lineblock *sufflist;
84*2802Swnj
85*2802Swnjstruct depblock
86*2802Swnj	{
87*2802Swnj	struct depblock *nxtdepblock;
88*2802Swnj	struct nameblock *depname;
89*2802Swnj	};
90*2802Swnj
91*2802Swnjstruct shblock
92*2802Swnj	{
93*2802Swnj	struct shblock *nxtshblock;
94*2802Swnj	char *shbp;
95*2802Swnj	};
96*2802Swnj
97*2802Swnjstruct varblock
98*2802Swnj	{
99*2802Swnj	struct varblock *nxtvarblock;
100*2802Swnj	char *varname;
101*2802Swnj	char *varval;
102*2802Swnj	int noreset:1;
103*2802Swnj	int used:1;
104*2802Swnj	};
105*2802Swnjextern struct varblock *firstvar;
106*2802Swnj
107*2802Swnjstruct pattern
108*2802Swnj	{
109*2802Swnj	struct pattern *nxtpattern;
110*2802Swnj	char *patval;
111*2802Swnj	};
112*2802Swnjextern struct pattern *firstpat;
113*2802Swnj
114*2802Swnjstruct opendir
115*2802Swnj	{
116*2802Swnj	struct opendir *nxtopendir;
117*2802Swnj	FILE * dirfc;
118*2802Swnj	char *dirn;
119*2802Swnj	};
120*2802Swnjextern struct opendir *firstod;
121*2802Swnj
122*2802Swnj
123*2802Swnjstruct chain
124*2802Swnj	{
125*2802Swnj	struct chain *nextp;
126*2802Swnj	char *datap;
127*2802Swnj	};
128*2802Swnj
129*2802Swnjchar *copys(), *concat(), *subst();
130*2802Swnjint *ckalloc();
131*2802Swnjstruct nameblock *srchname(), *makename();
132*2802SwnjTIMETYPE exists();
133