inDependency = TRUE;
inDependency = true;
Parse_File(name, stream)    char	  *name;	/* the name of the file being read */    FILE	  *stream;	/* Stream open to makefile to parse */{    char	  *cp,		/* pointer into the line */		  *line;	/* the line we're working on */    Boolean	  inDependency; /* true if currently in a dependency				 * line or its commands */    BUFFER	  buf;    BUFFER	  copy;    Buf_Init(&buf, MAKE_BSIZE);    Buf_Init(&copy, MAKE_BSIZE);    inDependency = FALSE;    Parse_FromFile(name, stream);    do {	while ((line = ParseReadLine(&buf)) != NULL) {	    if (*line == '\t') {		if (inDependency)		    ParseDoCommands(line+1);		else		    Parse_Error(PARSE_FATAL,			"Unassociated shell command \"%s\"",			 line);	    } else {		char *stripped;		stripped = strip_comments(&copy, line);		if (*stripped == '.' && ParseIsCond(&buf, &copy, stripped+1))		    ;		else if (FEATURES(FEATURE_SYSVINCLUDE) && 		    strncmp(stripped, "include", 7) == 0 &&		    isspace(stripped[7]) &&		    strchr(stripped, ':') == NULL) {		    /* It's an S3/S5-style "include".  */			ParseTraditionalInclude(stripped + 7);		} else if (FEATURES(FEATURE_CONDINCLUDE) &&		    (*stripped == '-' || *stripped == 's') &&		    strncmp(stripped+1, "include", 7) == 0 && 		    isspace(stripped[8]) &&		    strchr(stripped, ':') == NULL) {		    	ParseConditionalInclude(stripped+8);		} else {		    char *dep;		    if (inDependency)			ParseFinishDependency();		    if (Parse_IsVar(stripped)) {			inDependency = FALSE;			Parse_DoVar(stripped, VAR_GLOBAL);		    } else {			size_t pos;			char *end;			/* Need a new list for the target nodes.  */			Lst_Init(&targets);			inDependency = TRUE;			dep = NULL;			/* First we need to find eventual dependencies */			pos = strcspn(stripped, ":!");			/* go over :!, and find ;  */			if (stripped[pos] != '\0' &&			    (end = strchr(stripped+pos+1, ';')) != NULL) {				if (line != stripped)				    /* find matching ; in original... The				     * original might be slightly longer.  */				    dep = strchr(line+(end-stripped), ';');				else				    dep = end;				/* kill end of line. */				*end = '\0';			}			/* We now know it's a dependency line so it needs to			 * have all variables expanded before being parsed.			 * Tell the variable module to complain if some			 * variable is undefined... */			cp = Var_Subst(stripped, NULL, TRUE);			ParseDoDependency(cp);			free(cp);			/* Parse dependency if it's not empty. */			if (dep != NULL) {			    do {				dep++;			    } while (isspace(*dep));			    if (*dep != '\0')				ParseDoCommands(dep);			}		    }		}	    }	}    } while (Parse_NextFile());    if (inDependency)	ParseFinishDependency();    /* Make sure conditionals are clean.  */    Cond_End();    Finish_Errors();    Buf_Destroy(&buf);    Buf_Destroy(&copy);}