return TRUE;
return true;
MakeStartJobs(){    GNode	*gn;    while (!Job_Full() && (gn = (GNode *)Lst_DeQueue(&toBeMade)) != NULL) {	if (DEBUG(MAKE)) {	    printf("Examining %s...", gn->name);	}	/*	 * Make sure any and all predecessors that are going to be made,	 * have been.	 */	if (!Lst_IsEmpty(&gn->preds)) {	    LstNode ln;	    for (ln = Lst_First(&gn->preds); ln != NULL; ln = Lst_Adv(ln)){		GNode	*pgn = (GNode *)Lst_Datum(ln);		if (pgn->make && pgn->made == UNMADE) {		    if (DEBUG(MAKE)) {			printf("predecessor %s not made yet.\n", pgn->name);		    }		    break;		}	    }	    /*	     * If ln isn't NULL, there's a predecessor as yet unmade, so we	     * just drop this node on the floor. When the node in question	     * has been made, it will notice this node as being ready to	     * make but as yet unmade and will place the node on the queue.	     */	    if (ln != NULL) {		continue;	    }	}	numNodes--;	if (Make_OODate(gn)) {	    if (DEBUG(MAKE)) {		printf("out-of-date\n");	    }	    if (queryFlag) {		return TRUE;	    }	    Make_DoAllVar(gn);	    Job_Make(gn);	} else {	    if (DEBUG(MAKE)) {		printf("up-to-date\n");	    }	    gn->made = UPTODATE;	    if (gn->type & OP_JOIN) {		/*		 * Even for an up-to-date .JOIN node, we need it to have its		 * context variables so references to it get the correct		 * value for .TARGET when building up the context variables		 * of its parent(s)...		 */		Make_DoAllVar(gn);	    }	    Make_Update(gn);	}    }    return FALSE;}