Module Name:    src
Committed By:   rillig
Date:           Sat Nov 21 09:16:44 UTC 2020

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

Log Message:
make(1): flatten Suff_EndTransform

This avoids the duplicate code for testing OP_TRANSFORM.


To generate a diff of this commit:
cvs rdiff -u -r1.252 -r1.253 src/usr.bin/make/suff.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/suff.c
diff -u src/usr.bin/make/suff.c:1.252 src/usr.bin/make/suff.c:1.253
--- src/usr.bin/make/suff.c:1.252	Sat Nov 21 08:23:36 2020
+++ src/usr.bin/make/suff.c	Sat Nov 21 09:16:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.252 2020/11/21 08:23:36 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.253 2020/11/21 09:16:44 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -114,7 +114,7 @@
 #include "dir.h"
 
 /*	"@(#)suff.c	8.4 (Berkeley) 3/21/94"	*/
-MAKE_RCSID("$NetBSD: suff.c,v 1.252 2020/11/21 08:23:36 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.253 2020/11/21 09:16:44 rillig Exp $");
 
 #define SUFF_DEBUG0(text) DEBUG0(SUFF, text)
 #define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1)
@@ -541,35 +541,35 @@ Suff_AddTransform(const char *name)
 void
 Suff_EndTransform(GNode *gn)
 {
+    Suff *srcSuff, *targSuff;
+    SuffList *srcSuffParents;
+
     if ((gn->type & OP_DOUBLEDEP) && !Lst_IsEmpty(gn->cohorts))
 	gn = gn->cohorts->last->datum;
 
-    if ((gn->type & OP_TRANSFORM) && Lst_IsEmpty(gn->commands) &&
-	Lst_IsEmpty(gn->children))
-    {
-	Suff *srcSuff, *targSuff;
+    if (!(gn->type & OP_TRANSFORM))
+	return;
 
-	/*
-	 * SuffParseTransform() may fail for special rules which are not
-	 * actual transformation rules. (e.g. .DEFAULT)
-	 */
-	if (SuffParseTransform(gn->name, &srcSuff, &targSuff)) {
+    if (!Lst_IsEmpty(gn->commands) || !Lst_IsEmpty(gn->children)) {
+	SUFF_DEBUG1("transformation %s complete\n", gn->name);
+	return;
+    }
 
-	    /*
-	     * Remember parents since srcSuff could be deleted in
-	     * SuffList_Remove
-	     */
-	    SuffList *srcSuffParents = srcSuff->parents;
+    /*
+     * SuffParseTransform() may fail for special rules which are not
+     * actual transformation rules. (e.g. .DEFAULT)
+     */
+    if (!SuffParseTransform(gn->name, &srcSuff, &targSuff))
+	return;
 
-	    SUFF_DEBUG2("deleting transformation from `%s' to `%s'\n",
-			srcSuff->name, targSuff->name);
+    /* Remember parents since srcSuff could be deleted in SuffList_Remove. */
+    srcSuffParents = srcSuff->parents;
 
-	    SuffList_Remove(targSuff->children, srcSuff);
-	    SuffList_Remove(srcSuffParents, targSuff);
-	}
-    } else if (gn->type & OP_TRANSFORM) {
-	SUFF_DEBUG1("transformation %s complete\n", gn->name);
-    }
+    SUFF_DEBUG2("deleting transformation from `%s' to `%s'\n",
+		srcSuff->name, targSuff->name);
+
+    SuffList_Remove(targSuff->children, srcSuff);
+    SuffList_Remove(srcSuffParents, targSuff);
 }
 
 /* Called from Suff_AddSuffix to search through the list of

Reply via email to