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): make Make_HandleUse simpler
details: https://anonhg.NetBSD.org/src/rev/d8df79a5cb30
branches: trunk
changeset: 975140:d8df79a5cb30
user: rillig <rillig%NetBSD.org@localhost>
date: Sat Aug 22 13:06:39 2020 +0000
description:
make(1): make Make_HandleUse simpler
Since the function names now contain the text from the comments, the
comments can be shortened a bit.
diffstat:
usr.bin/make/lst.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
usr.bin/make/lst.h | 5 ++++-
usr.bin/make/make.c | 24 +++++++-----------------
3 files changed, 57 insertions(+), 23 deletions(-)
diffs (171 lines):
diff -r 9315118fd8cd -r d8df79a5cb30 usr.bin/make/lst.c
--- a/usr.bin/make/lst.c Sat Aug 22 12:51:11 2020 +0000
+++ b/usr.bin/make/lst.c Sat Aug 22 13:06:39 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.21 2020/08/22 09:40:18 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.22 2020/08/22 13:06:39 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.21 2020/08/22 09:40:18 rillig Exp $";
+static char rcsid[] = "$NetBSD: lst.c,v 1.22 2020/08/22 13:06:39 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: lst.c,v 1.21 2020/08/22 09:40:18 rillig Exp $");
+__RCSID("$NetBSD: lst.c,v 1.22 2020/08/22 13:06:39 rillig Exp $");
#endif /* not lint */
#endif
@@ -83,12 +83,14 @@
return node != NULL;
}
+/* Allocate and initialize a list node.
+ *
+ * The fields 'prev' and 'next' must be initialized by the caller.
+ */
static LstNode
LstNodeNew(void *datum)
{
LstNode node = bmake_malloc(sizeof *node);
- /* prev will be initialized by the calling code. */
- /* next will be initialized by the calling code. */
node->useCount = 0;
node->deleted = FALSE;
node->datum = datum;
@@ -280,6 +282,28 @@
return Lst_InsertAfter(list, end, datum);
}
+/* Add a piece of data at the start of the given list. */
+void
+Lst_PrependS(Lst list, void *datum)
+{
+ LstNode node;
+
+ assert(LstIsValid(list));
+ assert(datum != NULL);
+
+ node = LstNodeNew(datum);
+ node->prev = NULL;
+ node->next = list->first;
+
+ if (list->first == NULL) {
+ list->first = node;
+ list->last = node;
+ } else {
+ list->first->prev = node;
+ list->first = node;
+ }
+}
+
/* Add a piece of data at the end of the given list. */
void
Lst_AppendS(Lst list, void *datum)
@@ -640,6 +664,23 @@
return SUCCESS;
}
+/* Copy the element data from src to the start of dst. */
+void
+Lst_PrependAllS(Lst dst, Lst src)
+{
+ LstNode node;
+ for (node = src->last; node != NULL; node = node->prev)
+ Lst_PrependS(dst, node->datum);
+}
+
+/* Copy the element data from src to the end of dst. */
+void
+Lst_AppendAllS(Lst dst, Lst src)
+{
+ LstNode node;
+ for (node = src->first; node != NULL; node = node->next)
+ Lst_AppendS(dst, node->datum);
+}
/*
* these functions are for dealing with a list as a table, of sorts.
diff -r 9315118fd8cd -r d8df79a5cb30 usr.bin/make/lst.h
--- a/usr.bin/make/lst.h Sat Aug 22 12:51:11 2020 +0000
+++ b/usr.bin/make/lst.h Sat Aug 22 13:06:39 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.h,v 1.28 2020/08/22 09:40:18 rillig Exp $ */
+/* $NetBSD: lst.h,v 1.29 2020/08/22 13:06:39 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -119,6 +119,7 @@
ReturnStatus Lst_InsertAfter(Lst, LstNode, void *);
/* Place an element at the front of a lst. */
ReturnStatus Lst_AtFront(Lst, void *);
+void Lst_PrependS(Lst, void *);
/* Place an element at the end of a lst. */
ReturnStatus Lst_AtEnd(Lst, void *);
void Lst_AppendS(Lst, void *);
@@ -128,6 +129,8 @@
void Lst_ReplaceS(LstNode, void *);
/* Concatenate two lists */
ReturnStatus Lst_Concat(Lst, Lst, int);
+void Lst_PrependAllS(Lst, Lst);
+void Lst_AppendAllS(Lst, Lst);
/*
* Node-specific functions
diff -r 9315118fd8cd -r d8df79a5cb30 usr.bin/make/make.c
--- a/usr.bin/make/make.c Sat Aug 22 12:51:11 2020 +0000
+++ b/usr.bin/make/make.c Sat Aug 22 13:06:39 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: make.c,v 1.111 2020/08/22 11:57:18 rillig Exp $ */
+/* $NetBSD: make.c,v 1.112 2020/08/22 13:06:39 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.111 2020/08/22 11:57:18 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.112 2020/08/22 13:06:39 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.111 2020/08/22 11:57:18 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.112 2020/08/22 13:06:39 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -439,21 +439,11 @@
if ((cgn->type & (OP_USE|OP_USEBEFORE)) || Lst_IsEmpty(pgn->commands)) {
if (cgn->type & OP_USEBEFORE) {
- /*
- * .USEBEFORE --
- * prepend the child's commands to the parent.
- */
- LstNode node;
- for (node = Lst_Last(cgn->commands);
- node != NULL;
- node = Lst_Prev(node))
- Lst_AtFront(pgn->commands, Lst_Datum(node));
+ /* .USEBEFORE */
+ Lst_PrependAllS(pgn->commands, cgn->commands);
} else {
- /*
- * .USE or target has no commands --
- * append the child's commands to the parent.
- */
- (void)Lst_Concat(pgn->commands, cgn->commands, LST_CONCNEW);
+ /* .USE, or target has no commands */
+ Lst_AppendAllS(pgn->commands, cgn->commands);
}
}
Home |
Main Index |
Thread Index |
Old Index