Module Name:    src
Committed By:   rillig
Date:           Tue Dec 15 20:17:08 UTC 2020

Modified Files:
        src/usr.bin/make: make.c

Log Message:
make(1): indent make.c with tabs instead of spaces


To generate a diff of this commit:
cvs rdiff -u -r1.228 -r1.229 src/usr.bin/make/make.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.228 src/usr.bin/make/make.c:1.229
--- src/usr.bin/make/make.c:1.228	Tue Dec 15 19:47:02 2020
+++ src/usr.bin/make/make.c	Tue Dec 15 20:17:08 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.c,v 1.228 2020/12/15 19:47:02 rillig Exp $	*/
+/*	$NetBSD: make.c,v 1.229 2020/12/15 20:17:08 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -102,7 +102,7 @@
 #include "job.h"
 
 /*	"@(#)make.c	8.1 (Berkeley) 6/6/93"	*/
-MAKE_RCSID("$NetBSD: make.c,v 1.228 2020/12/15 19:47:02 rillig Exp $");
+MAKE_RCSID("$NetBSD: make.c,v 1.229 2020/12/15 20:17:08 rillig Exp $");
 
 /* Sequence # to detect recursion. */
 static unsigned int checked_seqno = 1;
@@ -135,39 +135,39 @@ make_abort(GNode *gn, int line)
 }
 
 ENUM_VALUE_RTTI_8(GNodeMade,
-		  UNMADE, DEFERRED, REQUESTED, BEINGMADE,
-		  MADE, UPTODATE, ERROR, ABORTED);
+    UNMADE, DEFERRED, REQUESTED, BEINGMADE,
+    MADE, UPTODATE, ERROR, ABORTED);
 
 ENUM_FLAGS_RTTI_31(GNodeType,
-		   OP_DEPENDS, OP_FORCE, OP_DOUBLEDEP,
-		   /* OP_OPMASK is omitted since it combines other flags */
-		   OP_OPTIONAL, OP_USE, OP_EXEC, OP_IGNORE,
-		   OP_PRECIOUS, OP_SILENT, OP_MAKE, OP_JOIN,
-		   OP_MADE, OP_SPECIAL, OP_USEBEFORE, OP_INVISIBLE,
-		   OP_NOTMAIN, OP_PHONY, OP_NOPATH, OP_WAIT,
-		   OP_NOMETA, OP_META, OP_NOMETA_CMP, OP_SUBMAKE,
-		   OP_TRANSFORM, OP_MEMBER, OP_LIB, OP_ARCHV,
-		   OP_HAS_COMMANDS, OP_SAVE_CMDS, OP_DEPS_FOUND, OP_MARK);
+    OP_DEPENDS, OP_FORCE, OP_DOUBLEDEP,
+/* OP_OPMASK is omitted since it combines other flags */
+    OP_OPTIONAL, OP_USE, OP_EXEC, OP_IGNORE,
+    OP_PRECIOUS, OP_SILENT, OP_MAKE, OP_JOIN,
+    OP_MADE, OP_SPECIAL, OP_USEBEFORE, OP_INVISIBLE,
+    OP_NOTMAIN, OP_PHONY, OP_NOPATH, OP_WAIT,
+    OP_NOMETA, OP_META, OP_NOMETA_CMP, OP_SUBMAKE,
+    OP_TRANSFORM, OP_MEMBER, OP_LIB, OP_ARCHV,
+    OP_HAS_COMMANDS, OP_SAVE_CMDS, OP_DEPS_FOUND, OP_MARK);
 
 ENUM_FLAGS_RTTI_10(GNodeFlags,
-		   REMAKE, CHILDMADE, FORCE, DONE_WAIT,
-		   DONE_ORDER, FROM_DEPEND, DONE_ALLSRC, CYCLE,
-		   DONECYCLE, INTERNAL);
+    REMAKE, CHILDMADE, FORCE, DONE_WAIT,
+    DONE_ORDER, FROM_DEPEND, DONE_ALLSRC, CYCLE,
+    DONECYCLE, INTERNAL);
 
 void
 GNode_FprintDetails(FILE *f, const char *prefix, const GNode *gn,
 		    const char *suffix)
 {
-    char type_buf[GNodeType_ToStringSize];
-    char flags_buf[GNodeFlags_ToStringSize];
+	char type_buf[GNodeType_ToStringSize];
+	char flags_buf[GNodeFlags_ToStringSize];
 
-    fprintf(f, "%smade %s, type %s, flags %s%s",
+	fprintf(f, "%smade %s, type %s, flags %s%s",
 	    prefix,
 	    Enum_ValueToString(gn->made, GNodeMade_ToStringSpecs),
 	    Enum_FlagsToString(type_buf, sizeof type_buf,
-			       gn->type, GNodeType_ToStringSpecs),
+		gn->type, GNodeType_ToStringSpecs),
 	    Enum_FlagsToString(flags_buf, sizeof flags_buf,
-			       gn->flags, GNodeFlags_ToStringSpecs),
+		gn->flags, GNodeFlags_ToStringSpecs),
 	    suffix);
 }
 
@@ -228,112 +228,120 @@ IsOODateRegular(GNode *gn)
 Boolean
 GNode_IsOODate(GNode *gn)
 {
-    Boolean         oodate;
+	Boolean oodate;
 
-    /*
-     * Certain types of targets needn't even be sought as their datedness
-     * doesn't depend on their modification time...
-     */
-    if (!(gn->type & (OP_JOIN|OP_USE|OP_USEBEFORE|OP_EXEC))) {
-	Dir_UpdateMTime(gn, TRUE);
-	if (DEBUG(MAKE)) {
-	    if (gn->mtime != 0)
-		debug_printf("modified %s...", Targ_FmtTime(gn->mtime));
-	    else
-		debug_printf("non-existent...");
-	}
-    }
-
-    /*
-     * A target is remade in one of the following circumstances:
-     *	its modification time is smaller than that of its youngest child and
-     *	    it would actually be run (has commands or is not GNode_IsTarget)
-     *	it's the object of a force operator
-     *	it has no children, was on the lhs of an operator and doesn't exist
-     *	    already.
-     *
-     * Libraries are only considered out-of-date if the archive module says
-     * they are.
-     *
-     * These weird rules are brought to you by Backward-Compatibility and
-     * the strange people who wrote 'Make'.
-     */
-    if (gn->type & (OP_USE|OP_USEBEFORE)) {
 	/*
-	 * If the node is a USE node it is *never* out of date
-	 * no matter *what*.
+	 * Certain types of targets needn't even be sought as their datedness
+	 * doesn't depend on their modification time...
 	 */
-	DEBUG0(MAKE, ".USE node...");
-	oodate = FALSE;
-    } else if ((gn->type & OP_LIB) && (gn->mtime == 0 || Arch_IsLib(gn))) {
-	DEBUG0(MAKE, "library...");
+	if (!(gn->type & (OP_JOIN | OP_USE | OP_USEBEFORE | OP_EXEC))) {
+		Dir_UpdateMTime(gn, TRUE);
+		if (DEBUG(MAKE)) {
+			if (gn->mtime != 0)
+				debug_printf("modified %s...",
+				    Targ_FmtTime(gn->mtime));
+			else
+				debug_printf("non-existent...");
+		}
+	}
 
 	/*
-	 * always out of date if no children and :: target
-	 * or non-existent.
-	 */
-	oodate = (gn->mtime == 0 || Arch_LibOODate(gn) ||
-		  (gn->youngestChild == NULL && (gn->type & OP_DOUBLEDEP)));
-    } else if (gn->type & OP_JOIN) {
-	/*
-	 * A target with the .JOIN attribute is only considered
-	 * out-of-date if any of its children was out-of-date.
+	 * A target is remade in one of the following circumstances:
+	 *
+	 *	its modification time is smaller than that of its youngest
+	 *	child and it would actually be run (has commands or is not
+	 *	GNode_IsTarget)
+	 *
+	 *	it's the object of a force operator
+	 *
+	 *	it has no children, was on the lhs of an operator and doesn't
+	 *	exist already.
+	 *
+	 * Libraries are only considered out-of-date if the archive module
+	 * says they are.
+	 *
+	 * These weird rules are brought to you by Backward-Compatibility
+	 * and the strange people who wrote 'Make'.
 	 */
-	DEBUG0(MAKE, ".JOIN node...");
-	DEBUG1(MAKE, "source %smade...", gn->flags & CHILDMADE ? "" : "not ");
-	oodate = (gn->flags & CHILDMADE) != 0;
-    } else if (gn->type & (OP_FORCE|OP_EXEC|OP_PHONY)) {
-	/*
-	 * A node which is the object of the force (!) operator or which has
-	 * the .EXEC attribute is always considered out-of-date.
-	 */
-	if (DEBUG(MAKE)) {
-	    if (gn->type & OP_FORCE) {
-		debug_printf("! operator...");
-	    } else if (gn->type & OP_PHONY) {
-		debug_printf(".PHONY node...");
-	    } else {
-		debug_printf(".EXEC node...");
-	    }
-	}
-	oodate = TRUE;
-    } else if (IsOODateRegular(gn)) {
-	oodate = TRUE;
-    } else {
-	/*
-	 * When a non-existing child with no sources
-	 * (such as a typically used FORCE source) has been made and
-	 * the target of the child (usually a directory) has the same
-	 * timestamp as the timestamp just given to the non-existing child
-	 * after it was considered made.
-	 */
-	if (DEBUG(MAKE)) {
-	    if (gn->flags & FORCE)
-		debug_printf("non existing child...");
+	if (gn->type & (OP_USE | OP_USEBEFORE)) {
+		/*
+		 * If the node is a USE node it is *never* out of date
+		 * no matter *what*.
+		 */
+		DEBUG0(MAKE, ".USE node...");
+		oodate = FALSE;
+	} else if ((gn->type & OP_LIB) && (gn->mtime == 0 || Arch_IsLib(gn))) {
+		DEBUG0(MAKE, "library...");
+
+		/*
+		 * always out of date if no children and :: target
+		 * or non-existent.
+		 */
+		oodate = (gn->mtime == 0 || Arch_LibOODate(gn) ||
+			  (gn->youngestChild == NULL &&
+			   (gn->type & OP_DOUBLEDEP)));
+	} else if (gn->type & OP_JOIN) {
+		/*
+		 * A target with the .JOIN attribute is only considered
+		 * out-of-date if any of its children was out-of-date.
+		 */
+		DEBUG0(MAKE, ".JOIN node...");
+		DEBUG1(MAKE, "source %smade...",
+		    gn->flags & CHILDMADE ? "" : "not ");
+		oodate = (gn->flags & CHILDMADE) != 0;
+	} else if (gn->type & (OP_FORCE | OP_EXEC | OP_PHONY)) {
+		/*
+		 * A node which is the object of the force (!) operator or
+		 * which has the .EXEC attribute is always considered
+		 * out-of-date.
+		 */
+		if (DEBUG(MAKE)) {
+			if (gn->type & OP_FORCE) {
+				debug_printf("! operator...");
+			} else if (gn->type & OP_PHONY) {
+				debug_printf(".PHONY node...");
+			} else {
+				debug_printf(".EXEC node...");
+			}
+		}
+		oodate = TRUE;
+	} else if (IsOODateRegular(gn)) {
+		oodate = TRUE;
+	} else {
+		/*
+		 * When a non-existing child with no sources
+		 * (such as a typically used FORCE source) has been made and
+		 * the target of the child (usually a directory) has the same
+		 * timestamp as the timestamp just given to the non-existing
+		 * child after it was considered made.
+		 */
+		if (DEBUG(MAKE)) {
+			if (gn->flags & FORCE)
+				debug_printf("non existing child...");
+		}
+		oodate = (gn->flags & FORCE) != 0;
 	}
-	oodate = (gn->flags & FORCE) != 0;
-    }
 
 #ifdef USE_META
-    if (useMeta) {
-	oodate = meta_oodate(gn, oodate);
-    }
+	if (useMeta) {
+		oodate = meta_oodate(gn, oodate);
+	}
 #endif
 
-    /*
-     * If the target isn't out-of-date, the parents need to know its
-     * modification time. Note that targets that appear to be out-of-date
-     * but aren't, because they have no commands and are GNode_IsTarget,
-     * have their mtime stay below their children's mtime to keep parents from
-     * thinking they're out-of-date.
-     */
-    if (!oodate) {
-	GNodeListNode *ln;
-	for (ln = gn->parents.first; ln != NULL; ln = ln->next)
-	    GNode_UpdateYoungestChild(ln->datum, gn);
-    }
+	/*
+	 * If the target isn't out-of-date, the parents need to know its
+	 * modification time. Note that targets that appear to be out-of-date
+	 * but aren't, because they have no commands and are GNode_IsTarget,
+	 * have their mtime stay below their children's mtime to keep parents
+	 * from thinking they're out-of-date.
+	 */
+	if (!oodate) {
+		GNodeListNode *ln;
+		for (ln = gn->parents.first; ln != NULL; ln = ln->next)
+			GNode_UpdateYoungestChild(ln->datum, gn);
+	}
 
-    return oodate;
+	return oodate;
 }
 
 static void
@@ -367,54 +375,58 @@ PretendAllChildrenAreMade(GNode *pgn)
 void
 Make_HandleUse(GNode *cgn, GNode *pgn)
 {
-    GNodeListNode *ln;	/* An element in the children list */
+	GNodeListNode *ln;	/* An element in the children list */
 
 #ifdef DEBUG_SRC
-    if (!(cgn->type & (OP_USE|OP_USEBEFORE|OP_TRANSFORM))) {
-	debug_printf("Make_HandleUse: called for plain node %s\n", cgn->name);
-	return;		/* XXX: debug mode should not affect control flow */
-    }
+	if (!(cgn->type & (OP_USE | OP_USEBEFORE | OP_TRANSFORM))) {
+		debug_printf("Make_HandleUse: called for plain node %s\n",
+		    cgn->name);
+		/* XXX: debug mode should not affect control flow */
+		return;
+	}
 #endif
 
-    if ((cgn->type & (OP_USE | OP_USEBEFORE)) || Lst_IsEmpty(&pgn->commands)) {
-	if (cgn->type & OP_USEBEFORE) {
-	    /* .USEBEFORE */
-	    Lst_PrependAll(&pgn->commands, &cgn->commands);
-	} else {
-	    /* .USE, or target has no commands */
-	    Lst_AppendAll(&pgn->commands, &cgn->commands);
+	if ((cgn->type & (OP_USE | OP_USEBEFORE)) ||
+	    Lst_IsEmpty(&pgn->commands)) {
+		if (cgn->type & OP_USEBEFORE) {
+			/* .USEBEFORE */
+			Lst_PrependAll(&pgn->commands, &cgn->commands);
+		} else {
+			/* .USE, or target has no commands */
+			Lst_AppendAll(&pgn->commands, &cgn->commands);
+		}
 	}
-    }
 
-    for (ln = cgn->children.first; ln != NULL; ln = ln->next) {
-	GNode *gn = ln->datum;
+	for (ln = cgn->children.first; ln != NULL; ln = ln->next) {
+		GNode *gn = ln->datum;
+
+		/*
+		 * Expand variables in the .USE node's name
+		 * and save the unexpanded form.
+		 * We don't need to do this for commands.
+		 * They get expanded properly when we execute.
+		 */
+		if (gn->uname == NULL) {
+			gn->uname = gn->name;
+		} else {
+			free(gn->name);
+		}
+		(void)Var_Subst(gn->uname, pgn, VARE_WANTRES, &gn->name);
+		/* TODO: handle errors */
+		if (gn->uname && strcmp(gn->name, gn->uname) != 0) {
+			/* See if we have a target for this node. */
+			GNode *tgn = Targ_FindNode(gn->name);
+			if (tgn != NULL)
+				gn = tgn;
+		}
 
-	/*
-	 * Expand variables in the .USE node's name
-	 * and save the unexpanded form.
-	 * We don't need to do this for commands.
-	 * They get expanded properly when we execute.
-	 */
-	if (gn->uname == NULL) {
-	    gn->uname = gn->name;
-	} else {
-	    free(gn->name);
+		Lst_Append(&pgn->children, gn);
+		Lst_Append(&gn->parents, pgn);
+		pgn->unmade++;
 	}
-	(void)Var_Subst(gn->uname, pgn, VARE_WANTRES, &gn->name);
-	/* TODO: handle errors */
-	if (gn->uname && strcmp(gn->name, gn->uname) != 0) {
-	    /* See if we have a target for this node. */
-	    GNode *tgn = Targ_FindNode(gn->name);
-	    if (tgn != NULL)
-		gn = tgn;
-	}
-
-	Lst_Append(&pgn->children, gn);
-	Lst_Append(&gn->parents, pgn);
-	pgn->unmade++;
-    }
 
-    pgn->type |= cgn->type & ~(OP_OPMASK|OP_USE|OP_USEBEFORE|OP_TRANSFORM);
+	pgn->type |=
+	    cgn->type & ~(OP_OPMASK | OP_USE | OP_USEBEFORE | OP_TRANSFORM);
 }
 
 /* Used by Make_Run on the downward pass to handle .USE nodes. Should be
@@ -431,26 +443,26 @@ Make_HandleUse(GNode *cgn, GNode *pgn)
 static void
 MakeHandleUse(GNode *cgn, GNode *pgn, GNodeListNode *ln)
 {
-    Boolean unmarked;
+	Boolean unmarked;
+
+	unmarked = !(cgn->type & OP_MARK);
+	cgn->type |= OP_MARK;
 
-    unmarked = !(cgn->type & OP_MARK);
-    cgn->type |= OP_MARK;
+	if (!(cgn->type & (OP_USE | OP_USEBEFORE)))
+		return;
 
-    if (!(cgn->type & (OP_USE|OP_USEBEFORE)))
-	return;
+	if (unmarked)
+		Make_HandleUse(cgn, pgn);
 
-    if (unmarked)
-	Make_HandleUse(cgn, pgn);
-
-    /*
-     * This child node is now "made", so we decrement the count of
-     * unmade children in the parent... We also remove the child
-     * from the parent's list to accurately reflect the number of decent
-     * children the parent has. This is used by Make_Run to decide
-     * whether to queue the parent or examine its children...
-     */
-    Lst_Remove(&pgn->children, ln);
-    pgn->unmade--;
+	/*
+	 * This child node is now "made", so we decrement the count of
+	 * unmade children in the parent... We also remove the child
+	 * from the parent's list to accurately reflect the number of decent
+	 * children the parent has. This is used by Make_Run to decide
+	 * whether to queue the parent or examine its children...
+	 */
+	Lst_Remove(&pgn->children, ln);
+	pgn->unmade--;
 }
 
 static void
@@ -469,75 +481,75 @@ HandleUseNodes(GNode *gn)
 time_t
 Make_Recheck(GNode *gn)
 {
-    time_t mtime;
+	time_t mtime;
 
-    Dir_UpdateMTime(gn, TRUE);
-    mtime = gn->mtime;
+	Dir_UpdateMTime(gn, TRUE);
+	mtime = gn->mtime;
 
 #ifndef RECHECK
-    /*
-     * We can't re-stat the thing, but we can at least take care of rules
-     * where a target depends on a source that actually creates the
-     * target, but only if it has changed, e.g.
-     *
-     * parse.h : parse.o
-     *
-     * parse.o : parse.y
-     *		yacc -d parse.y
-     *		cc -c y.tab.c
-     *		mv y.tab.o parse.o
-     *		cmp -s y.tab.h parse.h || mv y.tab.h parse.h
-     *
-     * In this case, if the definitions produced by yacc haven't changed
-     * from before, parse.h won't have been updated and gn->mtime will
-     * reflect the current modification time for parse.h. This is
-     * something of a kludge, I admit, but it's a useful one.
-     *
-     * XXX: People like to use a rule like "FRC:" to force things that
-     * depend on FRC to be made, so we have to check for gn->children
-     * being empty as well.
-     */
-    if (!Lst_IsEmpty(gn->commands) || Lst_IsEmpty(gn->children)) {
-	gn->mtime = now;
-    }
+	/*
+	 * We can't re-stat the thing, but we can at least take care of rules
+	 * where a target depends on a source that actually creates the
+	 * target, but only if it has changed, e.g.
+	 *
+	 * parse.h : parse.o
+	 *
+	 * parse.o : parse.y
+	 *		yacc -d parse.y
+	 *		cc -c y.tab.c
+	 *		mv y.tab.o parse.o
+	 *		cmp -s y.tab.h parse.h || mv y.tab.h parse.h
+	 *
+	 * In this case, if the definitions produced by yacc haven't changed
+	 * from before, parse.h won't have been updated and gn->mtime will
+	 * reflect the current modification time for parse.h. This is
+	 * something of a kludge, I admit, but it's a useful one.
+	 *
+	 * XXX: People like to use a rule like "FRC:" to force things that
+	 * depend on FRC to be made, so we have to check for gn->children
+	 * being empty as well.
+	 */
+	if (!Lst_IsEmpty(gn->commands) || Lst_IsEmpty(gn->children)) {
+		gn->mtime = now;
+	}
 #else
-    /*
-     * This is what Make does and it's actually a good thing, as it
-     * allows rules like
-     *
-     *	cmp -s y.tab.h parse.h || cp y.tab.h parse.h
-     *
-     * to function as intended. Unfortunately, thanks to the stateless
-     * nature of NFS (by which I mean the loose coupling of two clients
-     * using the same file from a common server), there are times
-     * when the modification time of a file created on a remote
-     * machine will not be modified before the local stat() implied by
-     * the Dir_UpdateMTime occurs, thus leading us to believe that the file
-     * is unchanged, wreaking havoc with files that depend on this one.
-     *
-     * I have decided it is better to make too much than to make too
-     * little, so this stuff is commented out unless you're sure it's ok.
-     * -- ardeb 1/12/88
-     */
-    /*
-     * Christos, 4/9/92: If we are saving commands, pretend that
-     * the target is made now. Otherwise archives with '...' rules
-     * don't work!
-     */
-    if (!GNode_ShouldExecute(gn) || (gn->type & OP_SAVE_CMDS) ||
+	/*
+	 * This is what Make does and it's actually a good thing, as it
+	 * allows rules like
+	 *
+	 *	cmp -s y.tab.h parse.h || cp y.tab.h parse.h
+	 *
+	 * to function as intended. Unfortunately, thanks to the stateless
+	 * nature of NFS (by which I mean the loose coupling of two clients
+	 * using the same file from a common server), there are times when
+	 * the modification time of a file created on a remote machine
+	 * will not be modified before the local stat() implied by the
+	 * Dir_UpdateMTime occurs, thus leading us to believe that the file
+	 * is unchanged, wreaking havoc with files that depend on this one.
+	 *
+	 * I have decided it is better to make too much than to make too
+	 * little, so this stuff is commented out unless you're sure it's ok.
+	 * -- ardeb 1/12/88
+	 */
+	/*
+	 * Christos, 4/9/92: If we are saving commands, pretend that
+	 * the target is made now. Otherwise archives with '...' rules
+	 * don't work!
+	 */
+	if (!GNode_ShouldExecute(gn) || (gn->type & OP_SAVE_CMDS) ||
 	    (mtime == 0 && !(gn->type & OP_WAIT))) {
-	DEBUG2(MAKE, " recheck(%s): update time from %s to now\n",
-	       gn->name, Targ_FmtTime(gn->mtime));
-	gn->mtime = now;
-    } else {
-	DEBUG2(MAKE, " recheck(%s): current update time: %s\n",
-	       gn->name, Targ_FmtTime(gn->mtime));
-    }
+		DEBUG2(MAKE, " recheck(%s): update time from %s to now\n",
+		    gn->name, Targ_FmtTime(gn->mtime));
+		gn->mtime = now;
+	} else {
+		DEBUG2(MAKE, " recheck(%s): current update time: %s\n",
+		    gn->name, Targ_FmtTime(gn->mtime));
+	}
 #endif
 
-    /* XXX: The returned mtime may differ from gn->mtime.
-     * Intentionally? */
-    return mtime;
+	/* XXX: The returned mtime may differ from gn->mtime.
+	 * Intentionally? */
+	return mtime;
 }
 
 /*
@@ -615,135 +627,144 @@ ScheduleOrderSuccessors(GNode *gn)
 void
 Make_Update(GNode *cgn)
 {
-    const char *cname;		/* the child's name */
-    time_t	mtime = -1;
-    GNodeList *parents;
-    GNodeListNode *ln;
-    GNode	*centurion;
-
-    /* It is save to re-examine any nodes again */
-    checked_seqno++;
-
-    cname = GNode_VarTarget(cgn);
-
-    DEBUG2(MAKE, "Make_Update: %s%s\n", cgn->name, cgn->cohort_num);
-
-    /*
-     * If the child was actually made, see what its modification time is
-     * now -- some rules won't actually update the file. If the file still
-     * doesn't exist, make its mtime now.
-     */
-    if (cgn->made != UPTODATE) {
-	mtime = Make_Recheck(cgn);
-    }
-
-    /*
-     * If this is a `::' node, we must consult its first instance
-     * which is where all parents are linked.
-     */
-    if ((centurion = cgn->centurion) != NULL) {
-	if (!Lst_IsEmpty(&cgn->parents))
-		Punt("%s%s: cohort has parents", cgn->name, cgn->cohort_num);
-	centurion->unmade_cohorts--;
-	if (centurion->unmade_cohorts < 0)
-	    Error("Graph cycles through centurion %s", centurion->name);
-    } else {
-	centurion = cgn;
-    }
-    parents = &centurion->parents;
-
-    /* If this was a .ORDER node, schedule the RHS */
-    ScheduleOrderSuccessors(centurion);
-
-    /* Now mark all the parents as having one less unmade child */
-    for (ln = parents->first; ln != NULL; ln = ln->next) {
-	GNode *pgn = ln->datum;
+	const char *cname;	/* the child's name */
+	time_t mtime = -1;
+	GNodeList *parents;
+	GNodeListNode *ln;
+	GNode *centurion;
 
-	if (DEBUG(MAKE)) {
-	    debug_printf("inspect parent %s%s: ", pgn->name, pgn->cohort_num);
-	    GNode_FprintDetails(opts.debug_file, "", pgn, "");
-	    debug_printf(", unmade %d ", pgn->unmade - 1);
-	}
+	/* It is save to re-examine any nodes again */
+	checked_seqno++;
 
-	if (!(pgn->flags & REMAKE)) {
-	    /* This parent isn't needed */
-	    DEBUG0(MAKE, "- not needed\n");
-	    continue;
-	}
-	if (mtime == 0 && !(cgn->type & OP_WAIT))
-	    pgn->flags |= FORCE;
+	cname = GNode_VarTarget(cgn);
+
+	DEBUG2(MAKE, "Make_Update: %s%s\n", cgn->name, cgn->cohort_num);
 
 	/*
-	 * If the parent has the .MADE attribute, its timestamp got
-	 * updated to that of its newest child, and its unmade
-	 * child count got set to zero in Make_ExpandUse().
-	 * However other things might cause us to build one of its
-	 * children - and so we mustn't do any processing here when
-	 * the child build finishes.
+	 * If the child was actually made, see what its modification time is
+	 * now -- some rules won't actually update the file. If the file
+	 * still doesn't exist, make its mtime now.
 	 */
-	if (pgn->type & OP_MADE) {
-	    DEBUG0(MAKE, "- .MADE\n");
-	    continue;
-	}
-
-	if (!(cgn->type & (OP_EXEC | OP_USE | OP_USEBEFORE))) {
-	    if (cgn->made == MADE)
-		pgn->flags |= CHILDMADE;
-	    GNode_UpdateYoungestChild(pgn, cgn);
+	if (cgn->made != UPTODATE) {
+		mtime = Make_Recheck(cgn);
 	}
 
 	/*
-	 * A parent must wait for the completion of all instances
-	 * of a `::' dependency.
+	 * If this is a `::' node, we must consult its first instance
+	 * which is where all parents are linked.
 	 */
-	if (centurion->unmade_cohorts != 0 || !GNode_IsDone(centurion)) {
-	    DEBUG2(MAKE, "- centurion made %d, %d unmade cohorts\n",
-		   centurion->made, centurion->unmade_cohorts);
-	    continue;
+	if ((centurion = cgn->centurion) != NULL) {
+		if (!Lst_IsEmpty(&cgn->parents))
+			Punt("%s%s: cohort has parents", cgn->name,
+			    cgn->cohort_num);
+		centurion->unmade_cohorts--;
+		if (centurion->unmade_cohorts < 0)
+			Error("Graph cycles through centurion %s",
+			    centurion->name);
+	} else {
+		centurion = cgn;
 	}
+	parents = &centurion->parents;
 
-	/* One more child of this parent is now made */
-	pgn->unmade--;
-	if (pgn->unmade < 0) {
-	    if (DEBUG(MAKE)) {
-		debug_printf("Graph cycles through %s%s\n",
-			     pgn->name, pgn->cohort_num);
-		Targ_PrintGraph(2);
-	    }
-	    Error("Graph cycles through %s%s", pgn->name, pgn->cohort_num);
-	}
-
-	/* We must always rescan the parents of .WAIT and .ORDER nodes. */
-	if (pgn->unmade != 0 && !(centurion->type & OP_WAIT)
-		&& !(centurion->flags & DONE_ORDER)) {
-	    DEBUG0(MAKE, "- unmade children\n");
-	    continue;
-	}
-	if (pgn->made != DEFERRED) {
-	    /*
-	     * Either this parent is on a different branch of the tree,
-	     * or it on the RHS of a .WAIT directive
-	     * or it is already on the toBeMade list.
-	     */
-	    DEBUG0(MAKE, "- not deferred\n");
-	    continue;
-	}
+	/* If this was a .ORDER node, schedule the RHS */
+	ScheduleOrderSuccessors(centurion);
 
-	if (IsWaitingForOrder(pgn))
-	    continue;
+	/* Now mark all the parents as having one less unmade child */
+	for (ln = parents->first; ln != NULL; ln = ln->next) {
+		GNode *pgn = ln->datum;
 
-	if (DEBUG(MAKE)) {
-	    debug_printf("- %s%s made, schedule %s%s (made %d)\n",
-			 cgn->name, cgn->cohort_num,
-			 pgn->name, pgn->cohort_num, pgn->made);
-	    Targ_PrintNode(pgn, 2);
-	}
-	/* Ok, we can schedule the parent again */
-	pgn->made = REQUESTED;
-	Lst_Enqueue(&toBeMade, pgn);
-    }
+		if (DEBUG(MAKE)) {
+			debug_printf("inspect parent %s%s: ", pgn->name,
+			    pgn->cohort_num);
+			GNode_FprintDetails(opts.debug_file, "", pgn, "");
+			debug_printf(", unmade %d ", pgn->unmade - 1);
+		}
+
+		if (!(pgn->flags & REMAKE)) {
+			/* This parent isn't needed */
+			DEBUG0(MAKE, "- not needed\n");
+			continue;
+		}
+		if (mtime == 0 && !(cgn->type & OP_WAIT))
+			pgn->flags |= FORCE;
+
+		/*
+		 * If the parent has the .MADE attribute, its timestamp got
+		 * updated to that of its newest child, and its unmade
+		 * child count got set to zero in Make_ExpandUse().
+		 * However other things might cause us to build one of its
+		 * children - and so we mustn't do any processing here when
+		 * the child build finishes.
+		 */
+		if (pgn->type & OP_MADE) {
+			DEBUG0(MAKE, "- .MADE\n");
+			continue;
+		}
+
+		if (!(cgn->type & (OP_EXEC | OP_USE | OP_USEBEFORE))) {
+			if (cgn->made == MADE)
+				pgn->flags |= CHILDMADE;
+			GNode_UpdateYoungestChild(pgn, cgn);
+		}
+
+		/*
+		 * A parent must wait for the completion of all instances
+		 * of a `::' dependency.
+		 */
+		if (centurion->unmade_cohorts != 0 ||
+		    !GNode_IsDone(centurion)) {
+			DEBUG2(MAKE,
+			    "- centurion made %d, %d unmade cohorts\n",
+			    centurion->made, centurion->unmade_cohorts);
+			continue;
+		}
+
+		/* One more child of this parent is now made */
+		pgn->unmade--;
+		if (pgn->unmade < 0) {
+			if (DEBUG(MAKE)) {
+				debug_printf("Graph cycles through %s%s\n",
+				    pgn->name, pgn->cohort_num);
+				Targ_PrintGraph(2);
+			}
+			Error("Graph cycles through %s%s", pgn->name,
+			    pgn->cohort_num);
+		}
+
+		/*
+		 * We must always rescan the parents of .WAIT and .ORDER
+		 * nodes.
+		 */
+		if (pgn->unmade != 0 && !(centurion->type & OP_WAIT)
+		    && !(centurion->flags & DONE_ORDER)) {
+			DEBUG0(MAKE, "- unmade children\n");
+			continue;
+		}
+		if (pgn->made != DEFERRED) {
+			/*
+			 * Either this parent is on a different branch of
+			 * the tree, or it on the RHS of a .WAIT directive
+			 * or it is already on the toBeMade list.
+			 */
+			DEBUG0(MAKE, "- not deferred\n");
+			continue;
+		}
+
+		if (IsWaitingForOrder(pgn))
+			continue;
+
+		if (DEBUG(MAKE)) {
+			debug_printf("- %s%s made, schedule %s%s (made %d)\n",
+			    cgn->name, cgn->cohort_num,
+			    pgn->name, pgn->cohort_num, pgn->made);
+			Targ_PrintNode(pgn, 2);
+		}
+		/* Ok, we can schedule the parent again */
+		pgn->made = REQUESTED;
+		Lst_Enqueue(&toBeMade, pgn);
+	}
 
-    UpdateImplicitParentsVars(cgn, cname);
+	UpdateImplicitParentsVars(cgn, cname);
 }
 
 static void
@@ -778,50 +799,51 @@ UnmarkChildren(GNode *gn)
 static void
 MakeAddAllSrc(GNode *cgn, GNode *pgn)
 {
-    if (cgn->type & OP_MARK)
-	return;
-    cgn->type |= OP_MARK;
+	if (cgn->type & OP_MARK)
+		return;
+	cgn->type |= OP_MARK;
 
-    if (!(cgn->type & (OP_EXEC|OP_USE|OP_USEBEFORE|OP_INVISIBLE))) {
-	const char *child, *allsrc;
+	if (!(cgn->type & (OP_EXEC | OP_USE | OP_USEBEFORE | OP_INVISIBLE))) {
+		const char *child, *allsrc;
 
-	if (cgn->type & OP_ARCHV)
-	    child = GNode_VarMember(cgn);
-	else
-	    child = GNode_Path(cgn);
-	if (cgn->type & OP_JOIN) {
-	    allsrc = GNode_VarAllsrc(cgn);
-	} else {
-	    allsrc = child;
-	}
-	if (allsrc != NULL)
-		Var_Append(ALLSRC, allsrc, pgn);
-	if (pgn->type & OP_JOIN) {
-	    if (cgn->made == MADE) {
-		Var_Append(OODATE, child, pgn);
-	    }
-	} else if ((pgn->mtime < cgn->mtime) ||
-		   (cgn->mtime >= now && cgn->made == MADE))
-	{
-	    /*
-	     * It goes in the OODATE variable if the parent is younger than the
-	     * child or if the child has been modified more recently than
-	     * the start of the make. This is to keep pmake from getting
-	     * confused if something else updates the parent after the
-	     * make starts (shouldn't happen, I know, but sometimes it
-	     * does). In such a case, if we've updated the child, the parent
-	     * is likely to have a modification time later than that of
-	     * the child and anything that relies on the OODATE variable will
-	     * be hosed.
-	     *
-	     * XXX: This will cause all made children to go in the OODATE
-	     * variable, even if they're not touched, if RECHECK isn't defined,
-	     * since cgn->mtime is set to now in Make_Update. According to
-	     * some people, this is good...
-	     */
-	    Var_Append(OODATE, child, pgn);
+		if (cgn->type & OP_ARCHV)
+			child = GNode_VarMember(cgn);
+		else
+			child = GNode_Path(cgn);
+		if (cgn->type & OP_JOIN) {
+			allsrc = GNode_VarAllsrc(cgn);
+		} else {
+			allsrc = child;
+		}
+		if (allsrc != NULL)
+			Var_Append(ALLSRC, allsrc, pgn);
+		if (pgn->type & OP_JOIN) {
+			if (cgn->made == MADE) {
+				Var_Append(OODATE, child, pgn);
+			}
+		} else if ((pgn->mtime < cgn->mtime) ||
+			   (cgn->mtime >= now && cgn->made == MADE)) {
+			/*
+			 * It goes in the OODATE variable if the parent is
+			 * younger than the child or if the child has been
+			 * modified more recently than the start of the make.
+			 * This is to keep pmake from getting confused if
+			 * something else updates the parent after the make
+			 * starts (shouldn't happen, I know, but sometimes it
+			 * does). In such a case, if we've updated the child,
+			 * the parent is likely to have a modification time
+			 * later than that of the child and anything that
+			 * relies on the OODATE variable will be hosed.
+			 *
+			 * XXX: This will cause all made children to go in
+			 * the OODATE variable, even if they're not touched,
+			 * if RECHECK isn't defined, since cgn->mtime is set
+			 * to now in Make_Update. According to some people,
+			 * this is good...
+			 */
+			Var_Append(OODATE, child, pgn);
+		}
 	}
-    }
 }
 
 /* Set up the ALLSRC and OODATE variables. Sad to say, it must be
@@ -879,7 +901,7 @@ MakeBuildChild(GNode *cn, GNodeListNode 
 	}
 
 	DEBUG2(MAKE, "MakeBuildChild: schedule %s%s\n",
-	       cn->name, cn->cohort_num);
+	    cn->name, cn->cohort_num);
 
 	cn->made = REQUESTED;
 	if (toBeMadeNext == NULL)
@@ -937,75 +959,87 @@ MakeChildren(GNode *gn)
 static Boolean
 MakeStartJobs(void)
 {
-    GNode *gn;
-    Boolean have_token = FALSE;
-
-    while (!Lst_IsEmpty(&toBeMade)) {
-	/* Get token now to avoid cycling job-list when we only have 1 token */
-	if (!have_token && !Job_TokenWithdraw())
-	    break;
-	have_token = TRUE;
+	GNode *gn;
+	Boolean have_token = FALSE;
 
-	gn = Lst_Dequeue(&toBeMade);
-	DEBUG2(MAKE, "Examining %s%s...\n", gn->name, gn->cohort_num);
-
-	if (gn->made != REQUESTED) {
-	    /* XXX: Replace %d with string representation; see made_name. */
-	    DEBUG1(MAKE, "state %d\n", gn->made);
+	while (!Lst_IsEmpty(&toBeMade)) {
+		/*
+		 * Get token now to avoid cycling job-list when we only
+		 * have 1 token
+		 */
+		if (!have_token && !Job_TokenWithdraw())
+			break;
+		have_token = TRUE;
 
-	    make_abort(gn, __LINE__);
-	}
+		gn = Lst_Dequeue(&toBeMade);
+		DEBUG2(MAKE, "Examining %s%s...\n", gn->name, gn->cohort_num);
 
-	if (gn->checked_seqno == checked_seqno) {
-	    /* We've already looked at this node since a job finished... */
-	    DEBUG2(MAKE, "already checked %s%s\n", gn->name, gn->cohort_num);
-	    gn->made = DEFERRED;
-	    continue;
-	}
-	gn->checked_seqno = checked_seqno;
+		if (gn->made != REQUESTED) {
+			/*
+			 * XXX: Replace %d with string representation;
+			 * see made_name.
+			 */
+			DEBUG1(MAKE, "state %d\n", gn->made);
 
-	if (gn->unmade != 0) {
-	    /*
-	     * We can't build this yet, add all unmade children to toBeMade,
-	     * just before the current first element.
-	     */
-	    gn->made = DEFERRED;
+			make_abort(gn, __LINE__);
+		}
 
-	    MakeChildren(gn);
+		if (gn->checked_seqno == checked_seqno) {
+			/*
+			 * We've already looked at this node since a job
+			 * finished...
+			 */
+			DEBUG2(MAKE, "already checked %s%s\n", gn->name,
+			    gn->cohort_num);
+			gn->made = DEFERRED;
+			continue;
+		}
+		gn->checked_seqno = checked_seqno;
 
-	    /* and drop this node on the floor */
-	    DEBUG2(MAKE, "dropped %s%s\n", gn->name, gn->cohort_num);
-	    continue;
-	}
+		if (gn->unmade != 0) {
+			/*
+			 * We can't build this yet, add all unmade children
+			 * to toBeMade, just before the current first element.
+			 */
+			gn->made = DEFERRED;
+
+			MakeChildren(gn);
+
+			/* and drop this node on the floor */
+			DEBUG2(MAKE, "dropped %s%s\n", gn->name,
+			    gn->cohort_num);
+			continue;
+		}
 
-	gn->made = BEINGMADE;
-	if (GNode_IsOODate(gn)) {
-	    DEBUG0(MAKE, "out-of-date\n");
-	    if (opts.queryFlag)
-		return TRUE;
-	    Make_DoAllVar(gn);
-	    Job_Make(gn);
-	    have_token = FALSE;
-	} else {
-	    DEBUG0(MAKE, "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);
+		gn->made = BEINGMADE;
+		if (GNode_IsOODate(gn)) {
+			DEBUG0(MAKE, "out-of-date\n");
+			if (opts.queryFlag)
+				return TRUE;
+			Make_DoAllVar(gn);
+			Job_Make(gn);
+			have_token = FALSE;
+		} else {
+			DEBUG0(MAKE, "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);
+		}
 	}
-    }
 
-    if (have_token)
-	Job_TokenReturn();
+	if (have_token)
+		Job_TokenReturn();
 
-    return FALSE;
+	return FALSE;
 }
 
 /* Print the status of a .ORDER node. */
@@ -1043,69 +1077,78 @@ static void MakePrintStatusList(GNodeLis
 static Boolean
 MakePrintStatus(GNode *gn, int *errors)
 {
-    if (gn->flags & DONECYCLE)
-	/* We've completely processed this node before, don't do it again. */
-	return FALSE;
+	if (gn->flags & DONECYCLE) {
+		/*
+		 * We've completely processed this node before, don't do
+		 * it again.
+		 */
+		return FALSE;
+	}
 
-    if (gn->unmade == 0) {
-	gn->flags |= DONECYCLE;
-	switch (gn->made) {
-	case UPTODATE:
-	    printf("`%s%s' is up to date.\n", gn->name, gn->cohort_num);
-	    break;
-	case MADE:
-	    break;
-	case UNMADE:
-	case DEFERRED:
-	case REQUESTED:
-	case BEINGMADE:
-	    (*errors)++;
-	    printf("`%s%s' was not built", gn->name, gn->cohort_num);
-	    GNode_FprintDetails(stdout, " (", gn, ")!\n");
-	    if (DEBUG(MAKE) && opts.debug_file != stdout) {
-		debug_printf("`%s%s' was not built", gn->name, gn->cohort_num);
-		GNode_FprintDetails(opts.debug_file, " (", gn, ")!\n");
-	    }
-	    /* Most likely problem is actually caused by .ORDER */
-	    MakePrintStatusOrder(gn);
-	    break;
-	default:
-	    /* Errors - already counted */
-	    printf("`%s%s' not remade because of errors.\n",
-		    gn->name, gn->cohort_num);
-	    if (DEBUG(MAKE) && opts.debug_file != stdout)
-		debug_printf("`%s%s' not remade because of errors.\n",
-			     gn->name, gn->cohort_num);
-	    break;
+	if (gn->unmade == 0) {
+		gn->flags |= DONECYCLE;
+		switch (gn->made) {
+		case UPTODATE:
+			printf("`%s%s' is up to date.\n", gn->name,
+			    gn->cohort_num);
+			break;
+		case MADE:
+			break;
+		case UNMADE:
+		case DEFERRED:
+		case REQUESTED:
+		case BEINGMADE:
+			(*errors)++;
+			printf("`%s%s' was not built", gn->name,
+			    gn->cohort_num);
+			GNode_FprintDetails(stdout, " (", gn, ")!\n");
+			if (DEBUG(MAKE) && opts.debug_file != stdout) {
+				debug_printf("`%s%s' was not built", gn->name,
+				    gn->cohort_num);
+				GNode_FprintDetails(opts.debug_file, " (", gn,
+				    ")!\n");
+			}
+			/* Most likely problem is actually caused by .ORDER */
+			MakePrintStatusOrder(gn);
+			break;
+		default:
+			/* Errors - already counted */
+			printf("`%s%s' not remade because of errors.\n",
+			    gn->name, gn->cohort_num);
+			if (DEBUG(MAKE) && opts.debug_file != stdout)
+				debug_printf(
+				    "`%s%s' not remade because of errors.\n",
+				    gn->name, gn->cohort_num);
+			break;
+		}
+		return FALSE;
 	}
-	return FALSE;
-    }
 
-    DEBUG3(MAKE, "MakePrintStatus: %s%s has %d unmade children\n",
-	   gn->name, gn->cohort_num, gn->unmade);
-    /*
-     * If printing cycles and came to one that has unmade children,
-     * print out the cycle by recursing on its children.
-     */
-    if (!(gn->flags & CYCLE)) {
-	/* First time we've seen this node, check all children */
-	gn->flags |= CYCLE;
-	MakePrintStatusList(&gn->children, errors);
-	/* Mark that this node needn't be processed again */
+	DEBUG3(MAKE, "MakePrintStatus: %s%s has %d unmade children\n",
+	    gn->name, gn->cohort_num, gn->unmade);
+	/*
+	 * If printing cycles and came to one that has unmade children,
+	 * print out the cycle by recursing on its children.
+	 */
+	if (!(gn->flags & CYCLE)) {
+		/* First time we've seen this node, check all children */
+		gn->flags |= CYCLE;
+		MakePrintStatusList(&gn->children, errors);
+		/* Mark that this node needn't be processed again */
+		gn->flags |= DONECYCLE;
+		return FALSE;
+	}
+
+	/* Only output the error once per node */
 	gn->flags |= DONECYCLE;
-	return FALSE;
-    }
+	Error("Graph cycles through `%s%s'", gn->name, gn->cohort_num);
+	if ((*errors)++ > 100)
+		/* Abandon the whole error report */
+		return TRUE;
 
-    /* Only output the error once per node */
-    gn->flags |= DONECYCLE;
-    Error("Graph cycles through `%s%s'", gn->name, gn->cohort_num);
-    if ((*errors)++ > 100)
-	/* Abandon the whole error report */
-	return TRUE;
-
-    /* Reporting for our children will give the rest of the loop */
-    MakePrintStatusList(&gn->children, errors);
-    return FALSE;
+	/* Reporting for our children will give the rest of the loop */
+	MakePrintStatusList(&gn->children, errors);
+	return FALSE;
 }
 
 static void
@@ -1145,68 +1188,75 @@ ExamineLater(GNodeList *examine, GNodeLi
 void
 Make_ExpandUse(GNodeList *targs)
 {
-    GNodeList examine = LST_INIT;	/* Queue of targets to examine */
-    Lst_AppendAll(&examine, targs);
-
-    /*
-     * Make an initial downward pass over the graph, marking nodes to be made
-     * as we go down. We call Suff_FindDeps to find where a node is and
-     * to get some children for it if it has none and also has no commands.
-     * If the node is a leaf, we stick it on the toBeMade queue to
-     * be looked at in a minute, otherwise we add its children to our queue
-     * and go on about our business.
-     */
-    while (!Lst_IsEmpty(&examine)) {
-	GNode *gn = Lst_Dequeue(&examine);
-
-	if (gn->flags & REMAKE)
-	    /* We've looked at this one already */
-	    continue;
-	gn->flags |= REMAKE;
-	DEBUG2(MAKE, "Make_ExpandUse: examine %s%s\n",
-	       gn->name, gn->cohort_num);
-
-	if (gn->type & OP_DOUBLEDEP)
-	    Lst_PrependAll(&examine, &gn->cohorts);
+	GNodeList examine = LST_INIT;	/* Queue of targets to examine */
+	Lst_AppendAll(&examine, targs);
 
 	/*
-	 * Apply any .USE rules before looking for implicit dependencies
-	 * to make sure everything has commands that should...
-	 * Make sure that the TARGET is set, so that we can make
-	 * expansions.
+	 * Make an initial downward pass over the graph, marking nodes to
+	 * be made as we go down.
+	 *
+	 * We call Suff_FindDeps to find where a node is and to get some
+	 * children for it if it has none and also has no commands. If the
+	 * node is a leaf, we stick it on the toBeMade queue to be looked
+	 * at in a minute, otherwise we add its children to our queue and
+	 * go on about our business.
 	 */
-	if (gn->type & OP_ARCHV) {
-	    char *eoa = strchr(gn->name, '(');
-	    char *eon = strchr(gn->name, ')');
-	    if (eoa == NULL || eon == NULL)
-		continue;
-	    *eoa = '\0';
-	    *eon = '\0';
-	    Var_Set(MEMBER, eoa + 1, gn);
-	    Var_Set(ARCHIVE, gn->name, gn);
-	    *eoa = '(';
-	    *eon = ')';
-	}
+	while (!Lst_IsEmpty(&examine)) {
+		GNode *gn = Lst_Dequeue(&examine);
 
-	Dir_UpdateMTime(gn, FALSE);
-	Var_Set(TARGET, GNode_Path(gn), gn);
-	UnmarkChildren(gn);
-	HandleUseNodes(gn);
+		if (gn->flags & REMAKE)
+			/* We've looked at this one already */
+			continue;
+		gn->flags |= REMAKE;
+		DEBUG2(MAKE, "Make_ExpandUse: examine %s%s\n",
+		    gn->name, gn->cohort_num);
+
+		if (gn->type & OP_DOUBLEDEP)
+			Lst_PrependAll(&examine, &gn->cohorts);
+
+		/*
+		 * Apply any .USE rules before looking for implicit
+		 * dependencies to make sure everything has commands that
+		 * should.
+		 *
+		 * Make sure that the TARGET is set, so that we can make
+		 * expansions.
+		 */
+		if (gn->type & OP_ARCHV) {
+			char *eoa = strchr(gn->name, '(');
+			char *eon = strchr(gn->name, ')');
+			if (eoa == NULL || eon == NULL)
+				continue;
+			*eoa = '\0';
+			*eon = '\0';
+			Var_Set(MEMBER, eoa + 1, gn);
+			Var_Set(ARCHIVE, gn->name, gn);
+			*eoa = '(';
+			*eon = ')';
+		}
 
-	if (!(gn->type & OP_MADE))
-	    Suff_FindDeps(gn);
-	else {
-	    PretendAllChildrenAreMade(gn);
-	    if (gn->unmade != 0)
-		printf("Warning: %s%s still has %d unmade children\n",
-		       gn->name, gn->cohort_num, gn->unmade);
-	}
-
-	if (gn->unmade != 0)
-	    ExamineLater(&examine, &gn->children);
-    }
+		Dir_UpdateMTime(gn, FALSE);
+		Var_Set(TARGET, GNode_Path(gn), gn);
+		UnmarkChildren(gn);
+		HandleUseNodes(gn);
+
+		if (!(gn->type & OP_MADE))
+			Suff_FindDeps(gn);
+		else {
+			PretendAllChildrenAreMade(gn);
+			if (gn->unmade != 0) {
+				printf(
+				    "Warning: "
+				    "%s%s still has %d unmade children\n",
+				    gn->name, gn->cohort_num, gn->unmade);
+			}
+		}
+
+		if (gn->unmade != 0)
+			ExamineLater(&examine, &gn->children);
+	}
 
-    Lst_Done(&examine);
+	Lst_Done(&examine);
 }
 
 /* Make the .WAIT node depend on the previous children */
@@ -1231,66 +1281,66 @@ add_wait_dependency(GNodeListNode *owln,
 static void
 Make_ProcessWait(GNodeList *targs)
 {
-    GNode  *pgn;		/* 'parent' node we are examining */
-    GNodeListNode *owln;	/* Previous .WAIT node */
-    GNodeList examine;		/* List of targets to examine */
-
-    /*
-     * We need all the nodes to have a common parent in order for the
-     * .WAIT and .ORDER scheduling to work.
-     * Perhaps this should be done earlier...
-     */
-
-    pgn = GNode_New(".MAIN");
-    pgn->flags = REMAKE;
-    pgn->type = OP_PHONY | OP_DEPENDS;
-    /* Get it displayed in the diag dumps */
-    Lst_Prepend(Targ_List(), pgn);
+	GNode *pgn;		/* 'parent' node we are examining */
+	GNodeListNode *owln;	/* Previous .WAIT node */
+	GNodeList examine;	/* List of targets to examine */
 
-    {
-	GNodeListNode *ln;
-	for (ln = targs->first; ln != NULL; ln = ln->next) {
-	    GNode *cgn = ln->datum;
+	/*
+	 * We need all the nodes to have a common parent in order for the
+	 * .WAIT and .ORDER scheduling to work.
+	 * Perhaps this should be done earlier...
+	 */
 
-	    Lst_Append(&pgn->children, cgn);
-	    Lst_Append(&cgn->parents, pgn);
-	    pgn->unmade++;
+	pgn = GNode_New(".MAIN");
+	pgn->flags = REMAKE;
+	pgn->type = OP_PHONY | OP_DEPENDS;
+	/* Get it displayed in the diag dumps */
+	Lst_Prepend(Targ_List(), pgn);
+
+	{
+		GNodeListNode *ln;
+		for (ln = targs->first; ln != NULL; ln = ln->next) {
+			GNode *cgn = ln->datum;
+
+			Lst_Append(&pgn->children, cgn);
+			Lst_Append(&cgn->parents, pgn);
+			pgn->unmade++;
+		}
 	}
-    }
 
-    /* Start building with the 'dummy' .MAIN' node */
-    MakeBuildChild(pgn, NULL);
+	/* Start building with the 'dummy' .MAIN' node */
+	MakeBuildChild(pgn, NULL);
 
-    Lst_Init(&examine);
-    Lst_Append(&examine, pgn);
+	Lst_Init(&examine);
+	Lst_Append(&examine, pgn);
 
-    while (!Lst_IsEmpty(&examine)) {
-	GNodeListNode *ln;
+	while (!Lst_IsEmpty(&examine)) {
+		GNodeListNode *ln;
 
-	pgn = Lst_Dequeue(&examine);
+		pgn = Lst_Dequeue(&examine);
 
-	/* We only want to process each child-list once */
-	if (pgn->flags & DONE_WAIT)
-	    continue;
-	pgn->flags |= DONE_WAIT;
-	DEBUG1(MAKE, "Make_ProcessWait: examine %s\n", pgn->name);
+		/* We only want to process each child-list once */
+		if (pgn->flags & DONE_WAIT)
+			continue;
+		pgn->flags |= DONE_WAIT;
+		DEBUG1(MAKE, "Make_ProcessWait: examine %s\n", pgn->name);
 
-	if (pgn->type & OP_DOUBLEDEP)
-	    Lst_PrependAll(&examine, &pgn->cohorts);
+		if (pgn->type & OP_DOUBLEDEP)
+			Lst_PrependAll(&examine, &pgn->cohorts);
 
-	owln = pgn->children.first;
-	for (ln = pgn->children.first; ln != NULL; ln = ln->next) {
-	    GNode *cgn = ln->datum;
-	    if (cgn->type & OP_WAIT) {
-		add_wait_dependency(owln, cgn);
-		owln = ln;
-	    } else {
-		Lst_Append(&examine, cgn);
-	    }
+		owln = pgn->children.first;
+		for (ln = pgn->children.first; ln != NULL; ln = ln->next) {
+			GNode *cgn = ln->datum;
+			if (cgn->type & OP_WAIT) {
+				add_wait_dependency(owln, cgn);
+				owln = ln;
+			} else {
+				Lst_Append(&examine, cgn);
+			}
+		}
 	}
-    }
 
-    Lst_Done(&examine);
+	Lst_Done(&examine);
 }
 
 /*
@@ -1316,65 +1366,66 @@ Make_ProcessWait(GNodeList *targs)
 Boolean
 Make_Run(GNodeList *targs)
 {
-    int errors;			/* Number of errors the Job module reports */
+	int errors;		/* Number of errors the Job module reports */
 
-    /* Start trying to make the current targets... */
-    Lst_Init(&toBeMade);
+	/* Start trying to make the current targets... */
+	Lst_Init(&toBeMade);
 
-    Make_ExpandUse(targs);
-    Make_ProcessWait(targs);
+	Make_ExpandUse(targs);
+	Make_ProcessWait(targs);
 
-    if (DEBUG(MAKE)) {
-	 debug_printf("#***# full graph\n");
-	 Targ_PrintGraph(1);
-    }
+	if (DEBUG(MAKE)) {
+		debug_printf("#***# full graph\n");
+		Targ_PrintGraph(1);
+	}
 
-    if (opts.queryFlag) {
+	if (opts.queryFlag) {
+		/*
+		 * We wouldn't do any work unless we could start some jobs
+		 * in the next loop... (we won't actually start any, of
+		 * course, this is just to see if any of the targets was out
+		 * of date)
+		 */
+		return MakeStartJobs();
+	}
 	/*
-	 * We wouldn't do any work unless we could start some jobs in the
-	 * next loop... (we won't actually start any, of course, this is just
-	 * to see if any of the targets was out of date)
+	 * Initialization. At the moment, no jobs are running and until some
+	 * get started, nothing will happen since the remaining upward
+	 * traversal of the graph is performed by the routines in job.c upon
+	 * the finishing of a job. So we fill the Job table as much as we can
+	 * before going into our loop.
 	 */
-	return MakeStartJobs();
-    }
-    /*
-     * Initialization. At the moment, no jobs are running and until some
-     * get started, nothing will happen since the remaining upward
-     * traversal of the graph is performed by the routines in job.c upon
-     * the finishing of a job. So we fill the Job table as much as we can
-     * before going into our loop.
-     */
-    (void)MakeStartJobs();
-
-    /*
-     * Main Loop: The idea here is that the ending of jobs will take
-     * care of the maintenance of data structures and the waiting for output
-     * will cause us to be idle most of the time while our children run as
-     * much as possible. Because the job table is kept as full as possible,
-     * the only time when it will be empty is when all the jobs which need
-     * running have been run, so that is the end condition of this loop.
-     * Note that the Job module will exit if there were any errors unless the
-     * keepgoing flag was given.
-     */
-    while (!Lst_IsEmpty(&toBeMade) || jobTokensRunning > 0) {
-	Job_CatchOutput();
 	(void)MakeStartJobs();
-    }
 
-    errors = Job_Finish();
+	/*
+	 * Main Loop: The idea here is that the ending of jobs will take
+	 * care of the maintenance of data structures and the waiting for
+	 * output will cause us to be idle most of the time while our
+	 * children run as much as possible. Because the job table is kept
+	 * as full as possible, the only time when it will be empty is when
+	 * all the jobs which need running have been run, so that is the end
+	 * condition of this loop. Note that the Job module will exit if
+	 * there were any errors unless the keepgoing flag was given.
+	 */
+	while (!Lst_IsEmpty(&toBeMade) || jobTokensRunning > 0) {
+		Job_CatchOutput();
+		(void)MakeStartJobs();
+	}
 
-    /*
-     * Print the final status of each target. E.g. if it wasn't made
-     * because some inferior reported an error.
-     */
-    DEBUG1(MAKE, "done: errors %d\n", errors);
-    if (errors == 0) {
-	MakePrintStatusList(targs, &errors);
-	if (DEBUG(MAKE)) {
-	    debug_printf("done: errors %d\n", errors);
-	    if (errors > 0)
-		Targ_PrintGraph(4);
+	errors = Job_Finish();
+
+	/*
+	 * Print the final status of each target. E.g. if it wasn't made
+	 * because some inferior reported an error.
+	 */
+	DEBUG1(MAKE, "done: errors %d\n", errors);
+	if (errors == 0) {
+		MakePrintStatusList(targs, &errors);
+		if (DEBUG(MAKE)) {
+			debug_printf("done: errors %d\n", errors);
+			if (errors > 0)
+				Targ_PrintGraph(4);
+		}
 	}
-    }
-    return errors > 0;
+	return errors > 0;
 }

Reply via email to