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