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