1*39958Sbostic/* defs 4.11 90/01/30 */ 2*39958Sbostic#include <sys/param.h> 32802Swnj#include <stdio.h> 42802Swnj#include <ctype.h> 5*39958Sbostic#include <dirent.h> 62802Swnj 72802Swnj#define SHELLCOM "/bin/sh" 82802Swnj 92802Swnjtypedef long int TIMETYPE; 102802Swnj 1117419Sralph/* to install metering, add a statement like 1217419Sralph * #define METERFILE "/usr/sif/make/Meter" 1317419Sralph * to turn metering on, set external variable meteron to 1. 1417419Sralph */ 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 2926928Slepreau#define INMAX 7000 3026928Slepreau#define OUTMAX 7000 3125298Smckusick#define QBUFMAX 5000 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; 6918644Smckusick char *alias; 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