Module Name:    src
Committed By:   rillig
Date:           Mon Nov 16 18:34:29 UTC 2020

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

Log Message:
make(1): clean up comments in suff.c


To generate a diff of this commit:
cvs rdiff -u -r1.237 -r1.238 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.237 src/usr.bin/make/suff.c:1.238
--- src/usr.bin/make/suff.c:1.237	Mon Nov 16 16:15:37 2020
+++ src/usr.bin/make/suff.c	Mon Nov 16 18:34:29 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.237 2020/11/16 16:15:37 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.238 2020/11/16 18:34:29 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -68,36 +68,23 @@
  * SUCH DAMAGE.
  */
 
-/*-
- * suff.c --
- *	Functions to maintain suffix lists and find implicit dependents
- *	using suffix transformation rules
+/*
+ * Maintain suffix lists and find implicit dependents using suffix
+ * transformation rules such as ".c.o".
  *
  * Interface:
- *	Suff_Init	Initialize all things to do with suffixes.
+ *	Suff_Init	Initialize the module.
  *
- *	Suff_End	Clean up the module
+ *	Suff_End	Clean up the module.
  *
- *	Suff_DoPaths	This function is used to make life easier
- *			when searching for a file according to its
- *			suffix. It takes the global search path,
- *			as defined using the .PATH: target, and appends
- *			its directories to the path of each of the
- *			defined suffixes, as specified using
- *			.PATH<suffix>: targets. In addition, all
- *			directories given for suffixes labeled as
- *			include files or libraries, using the .INCLUDES
- *			or .LIBS targets, are played with using
- *			Dir_MakeFlags to create the .INCLUDES and
- *			.LIBS global variables.
+ *	Suff_DoPaths	Extend the search path of each suffix to include the
+ *			default search path.
  *
  *	Suff_ClearSuffixes
- *			Clear out all the suffixes and defined
- *			transformations.
+ *			Clear out all the suffixes and transformations.
  *
  *	Suff_IsTransform
- *			Return TRUE if the passed string is the lhs
- *			of a transformation rule.
+ *			See if the passed string is a transformation rule.
  *
  *	Suff_AddSuffix	Add the passed string as another known suffix.
  *
@@ -109,9 +96,7 @@
  *	Suff_AddLib	Mark the given suffix as denoting a library.
  *
  *	Suff_AddTransform
- *			Add another transformation to the suffix
- *			graph. Returns  GNode suitable for framing, I
- *			mean, tacking commands, attributes, etc. on.
+ *			Add another transformation to the suffix graph.
  *
  *	Suff_SetNull	Define the suffix to consider the suffix of
  *			any file that doesn't have a known one.
@@ -129,7 +114,7 @@
 #include "dir.h"
 
 /*	"@(#)suff.c	8.4 (Berkeley) 3/21/94"	*/
-MAKE_RCSID("$NetBSD: suff.c,v 1.237 2020/11/16 16:15:37 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.238 2020/11/16 18:34:29 rillig Exp $");
 
 #define SUFF_DEBUG0(text) DEBUG0(SUFF, text)
 #define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1)
@@ -149,9 +134,11 @@ static SuffList *sufflist;	/* List of su
 static SuffList *suffClean;	/* List of suffixes to be cleaned */
 #endif
 static SrcList *srclist;	/* List of sources */
-static GNodeList *transforms;	/* List of transformation rules */
 
-static int        sNum = 0;	/* Counter for assigning suffix numbers */
+/* List of transformation rules, such as ".c.o" */
+static GNodeList *transforms;
+
+static int sNum = 0;		/* Counter for assigning suffix numbers */
 
 typedef enum SuffFlags {
     SUFF_INCLUDE	= 0x01,	/* One which is #include'd */
@@ -165,20 +152,23 @@ ENUM_FLAGS_RTTI_3(SuffFlags,
 
 typedef List SuffListList;
 
-/*
- * Structure describing an individual suffix.
- */
 typedef struct Suff {
-    char         *name;		/* The suffix itself, such as ".c" */
-    size_t	 nameLen;	/* Length of the name, to avoid strlen calls */
-    SuffFlags	 flags;		/* Type of suffix */
-    SearchPath	 *searchPath;	/* The path along which files of this suffix
-				 * may be found */
-    int          sNum;		/* The suffix number */
-    int		 refCount;	/* Reference count of list membership
-				 * and several other places */
-    SuffList	 *parents;	/* Suffixes we have a transformation to */
-    SuffList	 *children;	/* Suffixes we have a transformation from */
+    /* The suffix itself, such as ".c" */
+    char *name;
+    /* Length of the name, to avoid strlen calls */
+    size_t nameLen;
+    /* Type of suffix */
+    SuffFlags flags;
+    /* The path along which files of this suffix may be found */
+    SearchPath *searchPath;
+    /* The suffix number; TODO: document the purpose of this number */
+    int sNum;
+    /* Reference count of list membership and several other places */
+    int refCount;
+    /* Suffixes we have a transformation to */
+    SuffList *parents;
+    /* Suffixes we have a transformation from */
+    SuffList *children;
 
     /* Lists in which this suffix is referenced.
      * XXX: These lists are used nowhere, they are just appended to, for no
@@ -203,30 +193,19 @@ typedef struct Src {
 #endif
 } Src;
 
-static Suff *suffNull;		/* The NULL suffix for this run */
-static Suff *emptySuff;		/* The empty suffix required for POSIX
-				 * single-suffix transformation rules */
+/* TODO: Document the difference between suffNull and emptySuff. */
+/* The NULL suffix for this run */
+static Suff *suffNull;
+/* The empty suffix required for POSIX single-suffix transformation rules */
+static Suff *emptySuff;
 
 
 static void SuffFindDeps(GNode *, SrcList *);
 static void SuffExpandWildcards(GNodeListNode *, GNode *);
 
-	/*************** Lst Predicates ****************/
-/*-
- *-----------------------------------------------------------------------
- * SuffStrIsPrefix  --
- *	See if pref is a prefix of str.
- *
- * Input:
- *	pref		possible prefix
- *	str		string to check
- *
- * Results:
- *	NULL if it ain't, pointer to character in str after prefix if so
- *
- * Side Effects:
- *	None
- *-----------------------------------------------------------------------
+/*
+ * See if pref is a prefix of str.
+ * Return NULL if it ain't, pointer to character in str after prefix if so.
  */
 static const char *
 SuffStrIsPrefix(const char *pref, const char *str)
@@ -239,15 +218,9 @@ SuffStrIsPrefix(const char *pref, const 
     return *pref ? NULL : str;
 }
 
-/* See if suff is a suffix of str.
- *
- * Input:
- *	s		possible suffix
- *	nameLen		length of the string to examine
- *	nameEnd		end of the string to examine
- *
- * Results:
- *	NULL if it ain't, pointer to the start of suffix in str if it is.
+/*
+ * See if suff is a suffix of name.
+ * Return NULL if it ain't, pointer to the start of suffix in name if it is.
  */
 static const char *
 SuffSuffGetSuffix(const Suff *s, size_t nameLen, const char *nameEnd)
@@ -307,8 +280,6 @@ FindTransformByName(const char *name)
     return NULL;
 }
 
-	    /*********** Maintenance Functions ************/
-
 static void
 SuffUnRef(SuffList *list, Suff *suff)
 {
@@ -353,13 +324,14 @@ SuffRemove(SuffList *list, Suff *suff)
 {
     SuffUnRef(list, suff);
     if (suff->refCount == 0) {
+	/* XXX: can lead to suff->refCount == -1 */
 	SuffUnRef(sufflist, suff);
 	SuffFree(suff);
     }
 }
 
 /* Insert the suffix into the list, keeping the list ordered by suffix
- * numbers. */
+ * number. */
 static void
 SuffInsert(SuffList *list, Suff *suff)
 {
@@ -402,16 +374,18 @@ SuffNew(const char *name)
     suff->ref = Lst_New();
     suff->sNum = sNum++;
     suff->flags = 0;
-    suff->refCount = 1;
+    suff->refCount = 1; /* XXX: why 1? It's not assigned anywhere yet. */
 
     return suff;
 }
 
-/* This is gross. Nuke the list of suffixes but keep all transformation
- * rules around. The transformation graph is destroyed in this process, but
- * we leave the list of rules so when a new graph is formed the rules will
- * remain. This function is called from the parse module when a .SUFFIXES:\n
- * line is encountered. */
+/*
+ * Nuke the list of suffixes but keep all transformation rules around. The
+ * transformation graph is destroyed in this process, but we leave the list
+ * of rules so when a new graph is formed, the rules will remain. This
+ * function is called when a line '.SUFFIXES:' with an empty suffixes list is
+ * encountered in a makefile.
+ */
 void
 Suff_ClearSuffixes(void)
 {
@@ -482,7 +456,8 @@ SuffParseTransform(const char *str, Suff
 }
 
 /* Return TRUE if the given string is a transformation rule, that is, a
- * concatenation of two known suffixes. */
+ * concatenation of two known suffixes such as ".c.o" or a single suffix
+ * such as ".o". */
 Boolean
 Suff_IsTransform(const char *str)
 {
@@ -562,6 +537,7 @@ Suff_EndTransform(GNode *gn)
 {
     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))
     {
@@ -743,14 +719,18 @@ Suff_GetPath(const char *sname)
     return s != NULL ? s->searchPath : NULL;
 }
 
-/* Extend the search paths for all suffixes to include the default search
- * path.
+/*
+ * Extend the search paths for all suffixes to include the default search
+ * path (dirSearchPath).
  *
- * The searchPath field of all the suffixes is extended by the directories
- * in dirSearchPath. If paths were specified for the ".h" suffix, the
- * directories are stuffed into a global variable called ".INCLUDES" with
- * each directory preceded by a -I. The same is done for the ".a" suffix,
- * except the variable is called ".LIBS" and the flag is -L.
+ * The default search path can be defined using the special target '.PATH'.
+ * The search path of each suffix can be defined using the special target
+ * '.PATH<suffix>'.
+ *
+ * If paths were specified for the ".h" suffix, the directories are stuffed
+ * into a global variable called ".INCLUDES" with each directory preceded by
+ * '-I'. The same is done for the ".a" suffix, except the variable is called
+ * ".LIBS" and the flag is '-L'.
  */
 void
 Suff_DoPaths(void)
@@ -873,7 +853,7 @@ SuffAddSrc(Suff *suff, SrcList *srcList,
 
 /* Add a suffix as a Src structure to the given list with its parent
  * being the given Src structure. If the suffix is the null suffix,
- * the prefix is used unaltered as the file name in the Src structure.
+ * the prefix is used unaltered as the filename in the Src structure.
  *
  * Input:
  *	suff		suffix for which to create a Src structure
@@ -894,12 +874,7 @@ SuffAddSources(Suff *suff, SrcList *srcL
     SuffAddSrc(suff, srcList, targ, str_concat2(targ->pref, suff->name), "2");
 }
 
-/* Add all the children of targ as Src structures to the given list.
- *
- * Input:
- *	l		list to which to add the new level
- *	targ		Src structure to use as the parent
- */
+/* Add all the children of targ to the list. */
 static void
 SuffAddLevel(SrcList *l, Src *targ)
 {
@@ -958,14 +933,7 @@ SuffRemoveSrc(SrcList *l)
     return FALSE;
 }
 
-/* Find the first existing file/target in the list srcs.
- *
- * Input:
- *	srcs		list of Src structures to search through
- *
- * Results:
- *	The lowest structure in the chain of transformations, or NULL.
- */
+/* Find the first existing file/target in srcs. */
 static Src *
 SuffFindThem(SrcList *srcs, SrcList *slst)
 {
@@ -1058,10 +1026,7 @@ SuffFindCmds(Src *targ, SrcList *slst)
 	}
 	if (strncmp(cp, targ->pref, prefLen) != 0)
 	    continue;
-	/*
-	 * The node matches the prefix ok, see if it has a known
-	 * suffix.
-	 */
+	/* The node matches the prefix ok, see if it has a known suffix. */
 	suff = FindSuffByName(cp + prefLen);
 	if (suff == NULL)
 	    continue;
@@ -1307,7 +1272,7 @@ SuffExpandWildcards(GNodeListNode *cln, 
 
 /* Find a path along which to expand the node.
  *
- * If the word has a known suffix, use that path.
+ * If the node has a known suffix, use that path.
  * If it has no known suffix, use the default system search path.
  *
  * Input:
@@ -1347,21 +1312,12 @@ Suff_FindPath(GNode* gn)
 /* Apply a transformation rule, given the source and target nodes and
  * suffixes.
  *
- * Input:
- *	tGn		Target node
- *	sGn		Source node
- *	t		Target suffix
- *	s		Source suffix
+ * The source and target are linked and the commands from the transformation
+ * are added to the target node's commands list. The target also inherits all
+ * the sources for the transformation rule.
  *
  * Results:
  *	TRUE if successful, FALSE if not.
- *
- * Side Effects:
- *	The source and target are linked and the commands from the
- *	transformation are added to the target node's commands list.
- *	All attributes but OP_DEPMASK and OP_TRANSFORM are applied
- *	to the target. The target also inherits all the sources for
- *	the transformation rule.
  */
 static Boolean
 SuffApplyTransform(GNode *tGn, GNode *sGn, Suff *t, Suff *s)
@@ -1385,36 +1341,26 @@ SuffApplyTransform(GNode *tGn, GNode *sG
     free(tname);
 
     if (gn == NULL) {
-	/*
-	 * Not really such a transformation rule (can happen when we're
-	 * called to link an OP_MEMBER and OP_ARCHV node), so return
-	 * FALSE.
-	 */
+	/* This can happen when linking an OP_MEMBER and OP_ARCHV node. */
 	return FALSE;
     }
 
     SUFF_DEBUG3("\tapplying %s -> %s to \"%s\"\n", s->name, t->name, tGn->name);
 
-    /*
-     * Record last child for expansion purposes
-     */
+    /* Record last child; Make_HandleUse may add child nodes. */
     ln = tGn->children->last;
 
-    /*
-     * Pass the buck to Make_HandleUse to apply the rule
-     */
+    /* Apply the rule. */
     (void)Make_HandleUse(gn, tGn);
 
-    /*
-     * Deal with wildcards and variables in any acquired sources
-     */
+    /* Deal with wildcards and variables in any acquired sources. */
     for (ln = ln != NULL ? ln->next : NULL; ln != NULL; ln = nln) {
 	nln = ln->next;
 	SuffExpandChildren(ln, tGn);
     }
 
     /*
-     * Keep track of another parent to which this beast is transformed so
+     * Keep track of another parent to which this node is transformed so
      * the .IMPSRC variable can be set correctly for the parent.
      */
     Lst_Append(sGn->implicitParents, tGn);
@@ -1484,10 +1430,7 @@ SuffFindArchiveDeps(GNode *gn, SrcList *
     Var_Set(TARGET, GNode_VarTarget(mem), gn);
 
     ms = mem->suffix;
-    if (ms == NULL) {
-	/*
-	 * Didn't know what it was -- use .NULL suffix if not in make mode
-	 */
+    if (ms == NULL) {		/* Didn't know what it was. */
 	SUFF_DEBUG0("using null suffix\n");
 	ms = suffNull;
     }
@@ -1867,8 +1810,7 @@ sfnd_abort:
 	     * filesystem for their implicit source when it's already
 	     * known). Note that the node can't have any sources that
 	     * need expanding, since SuffFindThem will stop on an existing
-	     * node, so all we need to do is set the standard and System V
-	     * variables.
+	     * node, so all we need to do is set the standard variables.
 	     */
 	    targ->node->type |= OP_DEPS_FOUND;
 
@@ -1900,7 +1842,7 @@ sfnd_return:
 }
 
 
-/* Find implicit sources for the target described by the graph node.
+/* Find implicit sources for the target.
  *
  * Nodes are added to the graph below the passed-in node. The nodes are
  * marked to have their IMPSRC variable filled in. The PREFIX variable is set
@@ -2034,8 +1976,6 @@ Suff_End(void)
 }
 
 
-/********************* DEBUGGING FUNCTIONS **********************/
-
 static void
 PrintSuffNames(const char *prefix, SuffList *suffs)
 {

Reply via email to