1*13080Ssam/* defs 4.5 83/06/13 */ 22802Swnj#include <stdio.h> 32802Swnj#include <ctype.h> 46578Smckusick#include <sys/param.h> 56661Smckusick#include <dir.h> 62802Swnj 72802Swnj#define SHELLCOM "/bin/sh" 82802Swnj 92802Swnjtypedef long int TIMETYPE; 102802Swnj 112802Swnj#ifdef unix 122802Swnj/* to install metering, add a statement like */ 132802Swnj#define METERFILE "/usr/sif/make/Meter" 142802Swnj/* to turn metering on, set external variable meteron to 1 */ 152802Swnj#endif 162802Swnj 172802Swnj/* define FSTATIC to be static on systems with C compilers 182802Swnj supporting file-static; otherwise define it to be null 192802Swnj*/ 202802Swnj#define FSTATIC static 212802Swnj 222802Swnj#define NO 0 232802Swnj#define YES 1 242802Swnj 252802Swnj#define unequal strcmp 262802Swnj#define HASHSIZE 1021 272802Swnj#define NLEFTS 512 282802Swnj#define NCHARS 500 292802Swnj#define NINTS 250 30*13080Ssam#define INMAX 3500 312802Swnj#define OUTMAX 3500 322802Swnj#define QBUFMAX 2500 332802Swnj#define MAXDIR 10 342802Swnj 352802Swnj#define ALLDEPS 1 362802Swnj#define SOMEDEPS 2 372802Swnj 382802Swnj#define META 01 392802Swnj#define TERMINAL 02 402802Swnjextern char funny[128]; 412802Swnj 422802Swnj 432802Swnj#define ALLOC(x) (struct x *) ckalloc(sizeof(struct x)) 442802Swnj 452802Swnjextern int sigivalue; 462802Swnjextern int sigqvalue; 472802Swnjextern int waitpid; 482802Swnjextern int dbgflag; 492802Swnjextern int prtrflag; 502802Swnjextern int silflag; 512802Swnjextern int noexflag; 522802Swnjextern int keepgoing; 532802Swnjextern int noruleflag; 542802Swnjextern int touchflag; 552802Swnjextern int questflag; 562802Swnjextern int ndocoms; 572802Swnjextern int ignerr; 582802Swnjextern int okdel; 592802Swnjextern int inarglist; 602802Swnjextern char *prompt; 612802Swnjextern int nopdir; 622802Swnjextern char junkname[ ]; 632802Swnj 642802Swnj 652802Swnj 662802Swnjstruct nameblock 672802Swnj { 682802Swnj struct nameblock *nxtnameblock; 692802Swnj char *namep; 702802Swnj struct lineblock *linep; 712802Swnj int done:3; 722802Swnj int septype:3; 732802Swnj TIMETYPE modtime; 742802Swnj }; 752802Swnj 762802Swnjextern struct nameblock *mainname ; 772802Swnjextern struct nameblock *firstname; 782802Swnj 792802Swnjstruct lineblock 802802Swnj { 812802Swnj struct lineblock *nxtlineblock; 822802Swnj struct depblock *depp; 832802Swnj struct shblock *shp; 842802Swnj }; 852802Swnjextern struct lineblock *sufflist; 862802Swnj 872802Swnjstruct depblock 882802Swnj { 892802Swnj struct depblock *nxtdepblock; 902802Swnj struct nameblock *depname; 912802Swnj }; 922802Swnj 932802Swnjstruct shblock 942802Swnj { 952802Swnj struct shblock *nxtshblock; 962802Swnj char *shbp; 972802Swnj }; 982802Swnj 992802Swnjstruct varblock 1002802Swnj { 1012802Swnj struct varblock *nxtvarblock; 1022802Swnj char *varname; 1032802Swnj char *varval; 1042802Swnj int noreset:1; 1052802Swnj int used:1; 1062802Swnj }; 1072802Swnjextern struct varblock *firstvar; 1082802Swnj 1092802Swnjstruct pattern 1102802Swnj { 1112802Swnj struct pattern *nxtpattern; 1122802Swnj char *patval; 1132802Swnj }; 1142802Swnjextern struct pattern *firstpat; 1152802Swnj 1166578Smckusickstruct dirhdr 1172802Swnj { 1186578Smckusick struct dirhdr *nxtopendir; 1196578Smckusick DIR *dirfc; 1202802Swnj char *dirn; 1212802Swnj }; 1226578Smckusickextern struct dirhdr *firstod; 1232802Swnj 1242802Swnj 1252802Swnjstruct chain 1262802Swnj { 1272802Swnj struct chain *nextp; 1282802Swnj char *datap; 1292802Swnj }; 1302802Swnj 1312802Swnjchar *copys(), *concat(), *subst(); 1322802Swnjint *ckalloc(); 1332802Swnjstruct nameblock *srchname(), *makename(); 1342802SwnjTIMETYPE exists(); 135