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