Module Name:    src
Committed By:   rillig
Date:           Fri Sep 25 18:58:12 UTC 2020

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

Log Message:
make(1): in FindSuffByName, return the suffix instead of a list node

None of the callers was interested in the list node.


To generate a diff of this commit:
cvs rdiff -u -r1.165 -r1.166 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.165 src/usr.bin/make/suff.c:1.166
--- src/usr.bin/make/suff.c:1.165	Fri Sep 25 17:55:19 2020
+++ src/usr.bin/make/suff.c	Fri Sep 25 18:58:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.165 2020/09/25 17:55:19 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.166 2020/09/25 18:58:12 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -126,7 +126,7 @@
 #include	  "dir.h"
 
 /*	"@(#)suff.c	8.4 (Berkeley) 3/21/94"	*/
-MAKE_RCSID("$NetBSD: suff.c,v 1.165 2020/09/25 17:55:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.166 2020/09/25 18:58:12 rillig Exp $");
 
 #define SUFF_DEBUG0(fmt) \
     if (!DEBUG(SUFF)) (void) 0; else fprintf(debug_file, fmt)
@@ -294,15 +294,15 @@ SuffSuffIsSuffix(const void *s, const vo
     return SuffSuffGetSuffix(s, sd) != NULL;
 }
 
-static SuffListNode *
+static Suff *
 FindSuffByName(const char *name)
 {
     SuffListNode *ln;
 
     for (ln = sufflist->first; ln != NULL; ln = ln->next) {
-        const Suff *suff = ln->datum;
+        Suff *suff = ln->datum;
         if (strcmp(suff->name, name) == 0)
-            return ln;
+            return suff;
     }
     return NULL;
 }
@@ -468,7 +468,6 @@ SuffParseTransform(char *str, Suff **out
 {
     SuffListNode *srcLn;	/* element in suffix list of trans source*/
     Suff *src;			/* Source of transformation */
-    SuffListNode *targLn;	/* element in suffix list of trans target*/
     char *str2;			/* Extra pointer (maybe target suffix) */
     SuffListNode *singleLn;	/* element in suffix list of any suffix
 				 * that exactly matches str */
@@ -517,10 +516,10 @@ SuffParseTransform(char *str, Suff **out
 	    single = src;
 	    singleLn = srcLn;
 	} else {
-	    targLn = FindSuffByName(str2);
-	    if (targLn != NULL) {
+	    Suff *targ = FindSuffByName(str2);
+	    if (targ != NULL) {
 		*out_src = src;
-		*out_targ = LstNode_Datum(targLn);
+		*out_targ = targ;
 		return TRUE;
 	    }
 	}
@@ -670,7 +669,6 @@ SuffRebuildGraph(void *transformp, void 
     GNode   	*transform = (GNode *)transformp;
     Suff    	*s = (Suff *)sp;
     char 	*cp;
-    Suff  	*s2;
     struct SuffSuffGetSuffixArgs sd;
 
     /*
@@ -678,13 +676,9 @@ SuffRebuildGraph(void *transformp, void 
      */
     cp = UNCONST(SuffStrIsPrefix(s->name, transform->name));
     if (cp != NULL) {
-	SuffListNode *ln = FindSuffByName(cp);
-	if (ln != NULL) {
-	    /*
-	     * Found target. Link in and return, since it can't be anything
-	     * else.
-	     */
-	    s2 = LstNode_Datum(ln);
+	Suff *s2 = FindSuffByName(cp);
+	if (s2 != NULL) {
+	    /* Link in and return, since it can't be anything else. */
 	    SuffInsert(s2->children, s);
 	    SuffInsert(s->parents, s2);
 	    return;
@@ -698,22 +692,16 @@ SuffRebuildGraph(void *transformp, void 
     sd.name_end = transform->name + sd.name_len;
     cp = SuffSuffGetSuffix(s, &sd);
     if (cp != NULL) {
-	SuffListNode *ln;
+	Suff *s2;
 
-	/*
-	 * Null-terminate the source suffix in order to find it.
-	 */
+	/* Null-terminate the source suffix in order to find it. */
+	/* XXX: don't modify strings, not even temporarily */
 	cp[1] = '\0';
-	ln = FindSuffByName(transform->name);
-	/*
-	 * Replace the start of the target suffix
-	 */
-	cp[1] = s->name[0];
-	if (ln != NULL) {
-	    /*
-	     * Found it -- establish the proper relationship
-	     */
-	    s2 = LstNode_Datum(ln);
+	s2 = FindSuffByName(transform->name);
+	cp[1] = s->name[0];		/* restore */
+
+	if (s2 != NULL) {
+	    /* establish the proper relationship */
 	    SuffInsert(s->children, s2);
 	    SuffInsert(s2->parents, s);
 	}
@@ -786,47 +774,39 @@ SuffScanTargets(void *targetp, void *gsp
 void
 Suff_AddSuffix(const char *name, GNode **gnp)
 {
-    Suff          *s;	    /* new suffix descriptor */
-    SuffListNode *ln;
-    GNodeSuff	  gs;
+    GNodeSuff gs;
 
-    ln = FindSuffByName(name);
-    if (ln == NULL) {
-	s = SuffNew(name);
+    Suff *s = FindSuffByName(name);
+    if (s != NULL)
+	return;
 
-	Lst_Append(sufflist, s);
-	/*
-	 * We also look at our existing targets list to see if adding
-	 * this suffix will make one of our current targets mutate into
-	 * a suffix rule. This is ugly, but other makes treat all targets
-	 * that start with a . as suffix rules.
-	 */
-	gs.gnp = gnp;
-	gs.s  = s;
-	gs.r  = FALSE;
-	Lst_ForEachUntil(Targ_List(), SuffScanTargets, &gs);
-	/*
-	 * Look for any existing transformations from or to this suffix.
-	 * XXX: Only do this after a Suff_ClearSuffixes?
-	 */
-	Lst_ForEach(transforms, SuffRebuildGraph, s);
-    }
+    s = SuffNew(name);
+    Lst_Append(sufflist, s);
+
+    /*
+     * We also look at our existing targets list to see if adding
+     * this suffix will make one of our current targets mutate into
+     * a suffix rule. This is ugly, but other makes treat all targets
+     * that start with a . as suffix rules.
+     */
+    gs.gnp = gnp;
+    gs.s  = s;
+    gs.r  = FALSE;
+    Lst_ForEachUntil(Targ_List(), SuffScanTargets, &gs);
+
+    /*
+     * Look for any existing transformations from or to this suffix.
+     * XXX: Only do this after a Suff_ClearSuffixes?
+     */
+    Lst_ForEach(transforms, SuffRebuildGraph, s);
 }
 
 /* Return the search path for the given suffix, or NULL. */
 SearchPath *
 Suff_GetPath(char *sname)
 {
-    SuffListNode *ln;
-    Suff *s;
-
-    ln = FindSuffByName(sname);
-    if (ln == NULL) {
-	return NULL;
-    } else {
-	s = LstNode_Datum(ln);
-	return s->searchPath;
-    }
+    Suff *s = FindSuffByName(sname);
+    return s != NULL ? s->searchPath : NULL;
 }
 
 /* Extend the search paths for all suffixes to include the default search
@@ -893,11 +873,9 @@ Suff_DoPaths(void)
 void
 Suff_AddInclude(char *sname)
 {
-    SuffListNode *ln = FindSuffByName(sname);
-    if (ln != NULL) {
-    	Suff *s = LstNode_Datum(ln);
-	s->flags |= SUFF_INCLUDE;
-    }
+    Suff *suff = FindSuffByName(sname);
+    if (suff != NULL)
+	suff->flags |= SUFF_INCLUDE;
 }
 
 /* Add the given suffix as a type of file which is a library.
@@ -911,11 +889,9 @@ Suff_AddInclude(char *sname)
 void
 Suff_AddLib(const char *sname)
 {
-    SuffListNode *ln = FindSuffByName(sname);
-    if (ln != NULL) {
-	Suff *s = LstNode_Datum(ln);
-	s->flags |= SUFF_LIBRARY;
-    }
+    Suff *suff = FindSuffByName(sname);
+    if (suff != NULL)
+	suff->flags |= SUFF_LIBRARY;
 }
 
 	  /********** Implicit Source Search Functions *********/
@@ -1128,7 +1104,6 @@ static Src *
 SuffFindCmds(Src *targ, SrcList *slst)
 {
     GNodeListNode *gln;
-    SuffListNode *suffln;
 
     GNode		*t, 	/* Target GNode */
 			*s; 	/* Source GNode */
@@ -1172,16 +1147,16 @@ SuffFindCmds(Src *targ, SrcList *slst)
 	 * The node matches the prefix ok, see if it has a known
 	 * suffix.
 	 */
-	suffln = FindSuffByName(cp + prefLen);
-	if (suffln == NULL)
+	suff = FindSuffByName(cp + prefLen);
+	if (suff == NULL)
 	    continue;
+
 	/*
 	 * It even has a known suffix, see if there's a transformation
 	 * defined between the node's suffix and the target's suffix.
 	 *
 	 * XXX: Handle multi-stage transformations here, too.
 	 */
-	suff = LstNode_Datum(suffln);
 
 	/* XXX: Can targ->suff be NULL here? */
 	if (targ->suff != NULL &&
@@ -2089,14 +2064,11 @@ SuffFindDeps(GNode *gn, SrcList *slst)
 	 * set the TARGET variable to the node's name in order to give it a
 	 * value).
 	 */
-	SuffListNode *ln;
-	Suff	*s;
-
-	ln = FindSuffByName(LIBSUFF);
+	Suff *s = FindSuffByName(LIBSUFF);
 	if (gn->suffix)
 	    gn->suffix->refCount--;
-	if (ln != NULL) {
-	    gn->suffix = s = LstNode_Datum(ln);
+	if (s != NULL) {
+	    gn->suffix = s;
 	    gn->suffix->refCount++;
 	    Arch_FindLib(gn, s->searchPath);
 	} else {
@@ -2125,24 +2097,21 @@ SuffFindDeps(GNode *gn, SrcList *slst)
 void
 Suff_SetNull(char *name)
 {
-    Suff    *s;
-    SuffListNode *ln;
-
-    ln = FindSuffByName(name);
-    if (ln != NULL) {
-	s = LstNode_Datum(ln);
-	if (suffNull != NULL) {
-	    suffNull->flags &= ~SUFF_NULL;
-	}
-	s->flags |= SUFF_NULL;
-	/*
-	 * XXX: Here's where the transformation mangling would take place
-	 */
-	suffNull = s;
-    } else {
+    Suff *s = FindSuffByName(name);
+    if (s == NULL) {
 	Parse_Error(PARSE_WARNING, "Desired null suffix %s not defined.",
-		     name);
+		    name);
+	return;
+    }
+
+    if (suffNull != NULL) {
+	suffNull->flags &= ~SUFF_NULL;
     }
+    s->flags |= SUFF_NULL;
+    /*
+     * XXX: Here's where the transformation mangling would take place
+     */
+    suffNull = s;
 }
 
 /* Initialize the suffixes module. */

Reply via email to