Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): replace Lst_Duplicate with Lst_CopyS



details:   https://anonhg.NetBSD.org/src/rev/6b34ccb4a061
branches:  trunk
changeset: 937649:6b34ccb4a061
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Aug 22 22:57:53 2020 +0000

description:
make(1): replace Lst_Duplicate with Lst_CopyS

Lst_Duplicate would have passed through any null pointer, which was not
needed for make.  It was the last function that used Lst_AtEnd, which in
turn was the last function that used LstInsertAfter.  As a result, these
two functions have been removed.

diffstat:

 usr.bin/make/dir.c  |  12 ++-----
 usr.bin/make/lst.c  |  77 ++++++----------------------------------------------
 usr.bin/make/lst.h  |   4 +-
 usr.bin/make/make.c |   8 ++--
 usr.bin/make/suff.c |   8 ++--
 5 files changed, 23 insertions(+), 86 deletions(-)

diffs (261 lines):

diff -r 3451e18c95ff -r 6b34ccb4a061 usr.bin/make/dir.c
--- a/usr.bin/make/dir.c        Sat Aug 22 22:41:42 2020 +0000
+++ b/usr.bin/make/dir.c        Sat Aug 22 22:57:53 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dir.c,v 1.107 2020/08/22 19:57:43 rillig Exp $ */
+/*     $NetBSD: dir.c,v 1.108 2020/08/22 22:57:53 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.107 2020/08/22 19:57:43 rillig Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.108 2020/08/22 22:57:53 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c      8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.107 2020/08/22 19:57:43 rillig Exp $");
+__RCSID("$NetBSD: dir.c,v 1.108 2020/08/22 22:57:53 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1613,15 +1613,11 @@
 /*-
  *-----------------------------------------------------------------------
  * Dir_CopyDir --
- *     Callback function for duplicating a search path via Lst_Duplicate.
+ *     Callback function for duplicating a search path via Lst_CopyS.
  *     Ups the reference count for the directory.
  *
  * Results:
  *     Returns the Path it was given.
- *
- * Side Effects:
- *     The refCount of the path is incremented.
- *
  *-----------------------------------------------------------------------
  */
 void *
diff -r 3451e18c95ff -r 6b34ccb4a061 usr.bin/make/lst.c
--- a/usr.bin/make/lst.c        Sat Aug 22 22:41:42 2020 +0000
+++ b/usr.bin/make/lst.c        Sat Aug 22 22:57:53 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.34 2020/08/22 22:41:42 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.35 2020/08/22 22:57:53 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -37,11 +37,11 @@
 #include "make.h"
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: lst.c,v 1.34 2020/08/22 22:41:42 rillig Exp $";
+static char rcsid[] = "$NetBSD: lst.c,v 1.35 2020/08/22 22:57:53 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: lst.c,v 1.34 2020/08/22 22:41:42 rillig Exp $");
+__RCSID("$NetBSD: lst.c,v 1.35 2020/08/22 22:57:53 rillig Exp $");
 #endif /* not lint */
 #endif
 
@@ -71,8 +71,6 @@
     LstNode prev;              /* Previous node, if open. Used by Lst_Remove */
 };
 
-static ReturnStatus Lst_AtEnd(Lst, void *);
-
 static Boolean
 LstIsValid(Lst list)
 {
@@ -121,31 +119,20 @@
 
 /* Duplicate an entire list, usually by copying the datum pointers.
  * If copyProc is given, that function is used to create the new datum from the
- * old datum, usually by creating a copy of it.
- * Return the new list, or NULL on failure. */
+ * old datum, usually by creating a copy of it. */
 Lst
-Lst_Duplicate(Lst list, DuplicateProc *copyProc)
+Lst_CopyS(Lst list, DuplicateProc *copyProc)
 {
     Lst newList;
     LstNode node;
 
-    if (!LstIsValid(list)) {
-       return NULL;
-    }
+    assert(LstIsValid(list));
 
     newList = Lst_Init();
 
-    node = list->first;
-    while (node != NULL) {
-       if (copyProc != NULL) {
-           if (Lst_AtEnd(newList, copyProc(node->datum)) == FAILURE) {
-               return NULL;
-           }
-       } else if (Lst_AtEnd(newList, node->datum) == FAILURE) {
-           return NULL;
-       }
-
-       node = node->next;
+    for (node = list->first; node != NULL; node = node->next) {
+       void *datum = copyProc != NULL ? copyProc(node->datum) : node->datum;
+       Lst_AppendS(newList, datum);
     }
 
     return newList;
@@ -256,44 +243,6 @@
     }
 }
 
-/* Insert a new node with the given piece of data after the given node in the
- * given list. */
-static ReturnStatus
-LstInsertAfter(Lst list, LstNode node, void *datum)
-{
-    LstNode newNode;
-
-    if (LstIsValid(list) && (node == NULL && LstIsEmpty(list))) {
-       goto ok;
-    }
-
-    if (!LstIsValid(list) || LstIsEmpty(list) || !LstNodeIsValid(node)) {
-       return FAILURE;
-    }
-    ok:
-
-    newNode = LstNodeNew(datum);
-
-    if (node == NULL) {
-       newNode->next = newNode->prev = NULL;
-       list->first = list->last = newNode;
-    } else {
-       newNode->prev = node;
-       newNode->next = node->next;
-
-       node->next = newNode;
-       if (newNode->next != NULL) {
-           newNode->next->prev = newNode;
-       }
-
-       if (node == list->last) {
-           list->last = newNode;
-       }
-    }
-
-    return SUCCESS;
-}
-
 /* Add a piece of data at the front of the given list. */
 ReturnStatus
 Lst_AtFront(Lst list, void *datum)
@@ -302,14 +251,6 @@
     return LstInsertBefore(list, front, datum);
 }
 
-/* Add a piece of data at the end of the given list. */
-ReturnStatus
-Lst_AtEnd(Lst list, void *datum)
-{
-    LstNode end = Lst_Last(list);
-    return LstInsertAfter(list, end, datum);
-}
-
 /* Add a piece of data at the start of the given list. */
 void
 Lst_PrependS(Lst list, void *datum)
diff -r 3451e18c95ff -r 6b34ccb4a061 usr.bin/make/lst.h
--- a/usr.bin/make/lst.h        Sat Aug 22 22:41:42 2020 +0000
+++ b/usr.bin/make/lst.h        Sat Aug 22 22:57:53 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lst.h,v 1.37 2020/08/22 22:41:42 rillig Exp $  */
+/*     $NetBSD: lst.h,v 1.38 2020/08/22 22:57:53 rillig Exp $  */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -101,7 +101,7 @@
 /* Create a new list */
 Lst            Lst_Init(void);
 /* Duplicate an existing list */
-Lst            Lst_Duplicate(Lst, DuplicateProc *);
+Lst            Lst_CopyS(Lst, DuplicateProc *);
 /* Destroy an old one */
 void           Lst_Destroy(Lst, FreeProc *);
 /* True if list is empty */
diff -r 3451e18c95ff -r 6b34ccb4a061 usr.bin/make/make.c
--- a/usr.bin/make/make.c       Sat Aug 22 22:41:42 2020 +0000
+++ b/usr.bin/make/make.c       Sat Aug 22 22:57:53 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: make.c,v 1.120 2020/08/22 22:41:42 rillig Exp $        */
+/*     $NetBSD: make.c,v 1.121 2020/08/22 22:57:53 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.120 2020/08/22 22:41:42 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.121 2020/08/22 22:57:53 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)make.c     8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: make.c,v 1.120 2020/08/22 22:41:42 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.121 2020/08/22 22:57:53 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1258,7 +1258,7 @@
     GNode  *gn;                /* a temporary pointer */
     Lst    examine;    /* List of targets to examine */
 
-    examine = Lst_Duplicate(targs, NULL);
+    examine = Lst_CopyS(targs, NULL);
 
     /*
      * Make an initial downward pass over the graph, marking nodes to be made
diff -r 3451e18c95ff -r 6b34ccb4a061 usr.bin/make/suff.c
--- a/usr.bin/make/suff.c       Sat Aug 22 22:41:42 2020 +0000
+++ b/usr.bin/make/suff.c       Sat Aug 22 22:57:53 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: suff.c,v 1.111 2020/08/22 22:41:42 rillig Exp $        */
+/*     $NetBSD: suff.c,v 1.112 2020/08/22 22:57:53 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.111 2020/08/22 22:41:42 rillig Exp $";
+static char rcsid[] = "$NetBSD: suff.c,v 1.112 2020/08/22 22:57:53 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)suff.c     8.4 (Berkeley) 3/21/94";
 #else
-__RCSID("$NetBSD: suff.c,v 1.111 2020/08/22 22:41:42 rillig Exp $");
+__RCSID("$NetBSD: suff.c,v 1.112 2020/08/22 22:57:53 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1085,7 +1085,7 @@
            Dir_Concat(s->searchPath, dirSearchPath);
        } else {
            Lst_Destroy(s->searchPath, Dir_Destroy);
-           s->searchPath = Lst_Duplicate(dirSearchPath, Dir_CopyDir);
+           s->searchPath = Lst_CopyS(dirSearchPath, Dir_CopyDir);
        }
     }
     Lst_CloseS(sufflist);



Home | Main Index | Thread Index | Old Index