1/* defs 4.11 90/01/30 */ 2#include <sys/param.h> 3#include <stdio.h> 4#include <ctype.h> 5#include <dirent.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 7000 30#define OUTMAX 7000 31#define QBUFMAX 5000 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 char *alias; 70 struct lineblock *linep; 71 int done:3; 72 int septype:3; 73 TIMETYPE modtime; 74 }; 75 76extern struct nameblock *mainname ; 77extern struct nameblock *firstname; 78 79struct lineblock 80 { 81 struct lineblock *nxtlineblock; 82 struct depblock *depp; 83 struct shblock *shp; 84 }; 85extern struct lineblock *sufflist; 86 87struct depblock 88 { 89 struct depblock *nxtdepblock; 90 struct nameblock *depname; 91 }; 92 93struct shblock 94 { 95 struct shblock *nxtshblock; 96 char *shbp; 97 }; 98 99struct varblock 100 { 101 struct varblock *nxtvarblock; 102 char *varname; 103 char *varval; 104 int noreset:1; 105 int used:1; 106 }; 107extern struct varblock *firstvar; 108 109struct pattern 110 { 111 struct pattern *nxtpattern; 112 char *patval; 113 }; 114extern struct pattern *firstpat; 115 116struct dirhdr 117 { 118 struct dirhdr *nxtopendir; 119 DIR *dirfc; 120 char *dirn; 121 }; 122extern struct dirhdr *firstod; 123 124 125struct chain 126 { 127 struct chain *nextp; 128 char *datap; 129 }; 130 131char *copys(), *concat(), *subst(); 132int *ckalloc(); 133struct nameblock *srchname(), *makename(); 134TIMETYPE exists(); 135