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. */