|
|
1.1 ! root 1: /* @(#)/usr/src/cmd/make/defs 3.2 */ ! 2: ! 3: /* @(#)defs 3.1 */ ! 4: ! 5: #include <stdio.h> ! 6: ! 7: #define NEWLINE '\n' ! 8: #define CNULL '\0' ! 9: #define BLANK ' ' ! 10: #define TAB '\t' ! 11: #define DOT '.' ! 12: #define WIGGLE '~' ! 13: #define AT '@' ! 14: #define MINUS '-' ! 15: #define EQUALS '=' ! 16: #define SLASH '/' ! 17: #define STAR '*' ! 18: #define LCURLY '{' ! 19: #define RCURLY '}' ! 20: #define LPAREN '(' ! 21: #define RPAREN ')' ! 22: #define LSQUAR '[' ! 23: #define RSQUAR ']' ! 24: #define QUESTN '?' ! 25: #define KOLON ':' ! 26: #define SKOLON ';' ! 27: #define DOLLAR '$' ! 28: #define GREATR '>' ! 29: #define POUND '#' ! 30: #define BACKSLASH '\\' ! 31: ! 32: ! 33: /* ! 34: * Flags ! 35: */ ! 36: ! 37: #define ALLOC(x) (struct x *) intalloc(sizeof(struct x)) ! 38: ! 39: ! 40: #define TURNON(a) (Mflags |= (a)) ! 41: #define TURNOFF(a) (Mflags &= (~(a))) ! 42: #define IS_ON(a) (Mflags&(a)) ! 43: #define IS_OFF(a) (!(IS_ON(a))) ! 44: ! 45: #define DBUG 0000001 /* debug flag */ ! 46: #define ENVOVER 0000002 /* environ overides file defines */ ! 47: #define EXPORT 0000004 /* put current variable in environ */ ! 48: #define PRTR 0000010 /* set `-p' flag */ ! 49: #define SIL 0000020 /* set `-s' flag */ ! 50: #define NOEX 0000040 /* set `-n' flag */ ! 51: #define INTRULE 0000100 /* use internal rules */ ! 52: #define TOUCH 0000200 /* set `-t' flag */ ! 53: #define GET 0000400 /* do a $(GET) if file not found */ ! 54: #define QUEST 0001000 /* set `-q' flag */ ! 55: #define INARGS 0002000 /* currently reading cmd args */ ! 56: #define IGNERR 0004000 /* set `-i' flag */ ! 57: #define KEEPGO 0010000 /* set `-k' flag */ ! 58: #define GF_KEEP 0020000 /* keep auto get files */ ! 59: #define MH_DEP 0040000 /* use old question about whether cmd exists */ ! 60: #define MEMMAP 0100000 /* print memory map */ ! 61: ! 62: typedef char *CHARSTAR; ! 63: typedef int *INTSTAR; ! 64: typedef long int TIMETYPE; ! 65: typedef struct gothead *GOTHEAD; ! 66: typedef struct gotf *GOTF; ! 67: typedef struct chain *CHAIN; ! 68: typedef struct opendir *OPENDIR; ! 69: typedef struct pattern *PATTERN; ! 70: typedef struct varblock *VARBLOCK; ! 71: typedef struct shblock *SHBLOCK; ! 72: typedef struct depblock *DEPBLOCK; ! 73: typedef struct lineblock *LINEBLOCK; ! 74: typedef struct nameblock *NAMEBLOCK; ! 75: ! 76: extern CHARSTAR *environ; ! 77: extern int Mflags; ! 78: extern FILE *fin; ! 79: extern CHARSTAR *linesptr; ! 80: /* ! 81: * flags for get() ! 82: */ ! 83: #define CD 0 ! 84: #define NOCD 1 ! 85: ! 86: ! 87: #define max(a,b) ((a)>(b)?(a):(b)) ! 88: #define SHELLCOM "/bin/sh" ! 89: ! 90: #ifdef unix ! 91: /* to install metering, add a statement like */ ! 92: /******* ! 93: #define METERFILE "/usr/sif/make/Meter" ! 94: ******/ ! 95: /* to turn metering on, set external variable meteron to 1 */ ! 96: #endif ! 97: ! 98: /* define FSTATIC to be static on systems with C compilers ! 99: supporting file-static; otherwise define it to be null ! 100: */ ! 101: #define FSTATIC static ! 102: ! 103: #define NO 0 ! 104: #define YES 1 ! 105: ! 106: #define equal(a,b) (a[0] == b[0] ? !strcmp((a),(b)) : NO ) ! 107: #define HASHSIZE 1021 ! 108: #define NLEFTS 512 ! 109: #define NCHARS 500 ! 110: #define NINTS 250 ! 111: #define INMAX 5000 ! 112: #define OUTMAX 5000 ! 113: #define MAXODIR 10 ! 114: ! 115: #define ALLDEPS 1 ! 116: #define SOMEDEPS 2 ! 117: ! 118: #define META 01 ! 119: #define TERMINAL 02 ! 120: extern char funny[128]; ! 121: ! 122: ! 123: ! 124: extern int sigivalue; ! 125: extern int sigqvalue; ! 126: extern int waitpid; ! 127: extern int ndocoms; ! 128: extern int okdel; ! 129: extern CHARSTAR prompt; ! 130: extern char junkname[ ]; ! 131: extern char RELEASE[]; ! 132: ! 133: ! 134: ! 135: struct nameblock ! 136: { ! 137: NAMEBLOCK nextname; /* pointer to next nameblock */ ! 138: NAMEBLOCK backname; /* pointer to predecessor */ ! 139: CHARSTAR namep; /* ASCII name string */ ! 140: CHARSTAR alias; /* ASCII alias (when namep translates to another ! 141: * pathstring. ! 142: */ ! 143: LINEBLOCK linep; /* pointer to dependents */ ! 144: int done:3; /* flag used to tell when finished */ ! 145: int septype:3; /* distinguishes between single and double : */ ! 146: int rundep:1; /* flag indicating runtime translation done */ ! 147: TIMETYPE modtime; /* set by exists() */ ! 148: }; ! 149: ! 150: ! 151: extern NAMEBLOCK mainname ; ! 152: extern NAMEBLOCK firstname; ! 153: ! 154: struct lineblock ! 155: { ! 156: LINEBLOCK nextline; ! 157: DEPBLOCK depp; ! 158: SHBLOCK shp; ! 159: }; ! 160: ! 161: extern LINEBLOCK sufflist; ! 162: ! 163: struct depblock ! 164: { ! 165: DEPBLOCK nextdep; ! 166: NAMEBLOCK depname; ! 167: }; ! 168: ! 169: struct shblock ! 170: { ! 171: SHBLOCK nextsh; ! 172: CHARSTAR shbp; ! 173: }; ! 174: ! 175: struct varblock ! 176: { ! 177: VARBLOCK nextvar; ! 178: CHARSTAR varname; ! 179: CHARSTAR varval; ! 180: int noreset:1; ! 181: int used:1; ! 182: int envflg:1; ! 183: int v_aflg:1; ! 184: }; ! 185: ! 186: extern VARBLOCK firstvar; ! 187: ! 188: struct pattern ! 189: { ! 190: PATTERN nextpattern; ! 191: CHARSTAR patval; ! 192: }; ! 193: ! 194: extern PATTERN firstpat; ! 195: ! 196: struct opendir ! 197: { ! 198: OPENDIR nextopendir; ! 199: FILE * dirfc; ! 200: CHARSTAR dirn; ! 201: }; ! 202: extern OPENDIR firstod; ! 203: ! 204: ! 205: struct chain ! 206: { ! 207: CHAIN nextchain; ! 208: CHARSTAR datap; ! 209: }; ! 210: ! 211: /* ! 212: * The following two structures are used to cleanup after ! 213: * `make' does an automatic get of a file. See get() and ! 214: * cleanup(). ! 215: */ ! 216: struct gotf /* list of files */ ! 217: { ! 218: GOTF gnextp; ! 219: CHARSTAR gnamep; ! 220: }; ! 221: ! 222: struct gothead /* first member of list of files */ ! 223: { ! 224: GOTF gnextp; ! 225: CHARSTAR gnamep; ! 226: GOTF endp; ! 227: }; ! 228: ! 229: extern char Nullstr[]; ! 230: extern CHARSTAR badptr; ! 231: CHARSTAR copys(); ! 232: CHARSTAR copstr(); ! 233: CHARSTAR concat(); ! 234: CHARSTAR colontrans(); ! 235: CHARSTAR dftrans(); ! 236: CHARSTAR straightrans(); ! 237: CHARSTAR mkqlist(); ! 238: CHARSTAR findfl(); ! 239: CHARSTAR addstars(); ! 240: CHARSTAR strshift(); ! 241: INTSTAR intalloc(); ! 242: VARBLOCK varptr(); ! 243: VARBLOCK srchvar(); ! 244: TIMETYPE prestime(), exists(); ! 245: DEPBLOCK srchdir(); ! 246: NAMEBLOCK srchname(), makename(); ! 247: LINEBLOCK runtime();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.