1/* defs 4.6 83/07/01 */ 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#ifdef unix 12/* to install metering, add a statement like */ 13#define METERFILE "/usr/sif/make/Meter" 14/* to turn metering on, set external variable meteron to 1 */ 15#endif 16 17/* define FSTATIC to be static on systems with C compilers 18 supporting file-static; otherwise define it to be null 19*/ 20#define FSTATIC static 21 22#define NO 0 23#define YES 1 24 25#define unequal strcmp 26#define HASHSIZE 1021 27#define NLEFTS 512 28#define NCHARS 500 29#define NINTS 250 30#define INMAX 3500 31#define OUTMAX 3500 32#define QBUFMAX 2500 33#define MAXDIR 10 34 35#define ALLDEPS 1 36#define SOMEDEPS 2 37 38#define META 01 39#define TERMINAL 02 40extern char funny[128]; 41 42 43#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x)) 44 45extern int sigivalue; 46extern int sigqvalue; 47extern int waitpid; 48extern int dbgflag; 49extern int prtrflag; 50extern int silflag; 51extern int noexflag; 52extern int keepgoing; 53extern int noruleflag; 54extern int touchflag; 55extern int questflag; 56extern int ndocoms; 57extern int ignerr; 58extern int okdel; 59extern int inarglist; 60extern char *prompt; 61extern int nopdir; 62extern char junkname[ ]; 63 64 65 66struct nameblock 67 { 68 struct nameblock *nxtnameblock; 69 char *namep; 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