Module Name: src
Committed By: rillig
Date: Sun May 30 21:16:54 UTC 2021
Modified Files:
src/usr.bin/make: arch.c str.c str.h
Log Message:
make: inline str_concat4
This function is only ever used for forming strings of the form
"archive(member)".
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.199 -r1.200 src/usr.bin/make/arch.c
cvs rdiff -u -r1.84 -r1.85 src/usr.bin/make/str.c
cvs rdiff -u -r1.8 -r1.9 src/usr.bin/make/str.h
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/arch.c
diff -u src/usr.bin/make/arch.c:1.199 src/usr.bin/make/arch.c:1.200
--- src/usr.bin/make/arch.c:1.199 Sat Apr 3 11:08:40 2021
+++ src/usr.bin/make/arch.c Sun May 30 21:16:54 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: arch.c,v 1.199 2021/04/03 11:08:40 rillig Exp $ */
+/* $NetBSD: arch.c,v 1.200 2021/05/30 21:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -126,7 +126,7 @@
#include "config.h"
/* "@(#)arch.c 8.2 (Berkeley) 1/2/94" */
-MAKE_RCSID("$NetBSD: arch.c,v 1.199 2021/04/03 11:08:40 rillig Exp $");
+MAKE_RCSID("$NetBSD: arch.c,v 1.200 2021/05/30 21:16:54 rillig Exp $");
typedef struct List ArchList;
typedef struct ListNode ArchListNode;
@@ -148,6 +148,7 @@ static FILE *ArchFindMember(const char *
static int ArchSVR4Entry(Arch *, char *, size_t, FILE *);
#endif
+
#ifdef CLEANUP
static void
ArchFree(void *ap)
@@ -167,6 +168,19 @@ ArchFree(void *ap)
}
#endif
+/* Return "archive(member)". */
+static char *
+FullName(const char *archive, const char *member)
+{
+ size_t len1 = strlen(archive);
+ size_t len3 = strlen(member);
+ char *result = bmake_malloc(len1 + 1 + len3 + 1 + 1);
+ memcpy(result, archive, len1);
+ memcpy(result + len1, "(", 1);
+ memcpy(result + len1 + 1, member, len3);
+ memcpy(result + len1 + 1 + len3, ")", 1 + 1);
+ return result;
+}
/*
* Parse an archive specification such as "archive.a(member1 member2.${EXT})",
@@ -312,7 +326,7 @@ Arch_ParseArchive(char **pp, GNodeList *
* Now form an archive spec and recurse to deal with
* nested variables and multi-word variable values.
*/
- fullName = str_concat4(libName.str, "(", memName, ")");
+ fullName = FullName(libName.str, memName);
p = fullName;
if (strchr(memName, '$') != NULL &&
@@ -342,8 +356,7 @@ Arch_ParseArchive(char **pp, GNodeList *
while (!Lst_IsEmpty(&members)) {
char *member = Lst_Dequeue(&members);
- char *fullname = str_concat4(libName.str, "(",
- member, ")");
+ char *fullname = FullName(libName.str, member);
free(member);
gn = Targ_GetNode(fullname);
@@ -355,8 +368,7 @@ Arch_ParseArchive(char **pp, GNodeList *
Lst_Done(&members);
} else {
- char *fullname = str_concat4(libName.str, "(", memName,
- ")");
+ char *fullname = FullName(libName.str, memName);
gn = Targ_GetNode(fullname);
free(fullname);
Index: src/usr.bin/make/str.c
diff -u src/usr.bin/make/str.c:1.84 src/usr.bin/make/str.c:1.85
--- src/usr.bin/make/str.c:1.84 Sun Apr 11 19:05:06 2021
+++ src/usr.bin/make/str.c Sun May 30 21:16:54 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: str.c,v 1.84 2021/04/11 19:05:06 rillig Exp $ */
+/* $NetBSD: str.c,v 1.85 2021/05/30 21:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -71,7 +71,7 @@
#include "make.h"
/* "@(#)str.c 5.8 (Berkeley) 6/1/90" */
-MAKE_RCSID("$NetBSD: str.c,v 1.84 2021/04/11 19:05:06 rillig Exp $");
+MAKE_RCSID("$NetBSD: str.c,v 1.85 2021/05/30 21:16:54 rillig Exp $");
/* Return the concatenation of s1 and s2, freshly allocated. */
char *
@@ -99,22 +99,6 @@ str_concat3(const char *s1, const char *
return result;
}
-/* Return the concatenation of s1, s2, s3 and s4, freshly allocated. */
-char *
-str_concat4(const char *s1, const char *s2, const char *s3, const char *s4)
-{
- size_t len1 = strlen(s1);
- size_t len2 = strlen(s2);
- size_t len3 = strlen(s3);
- size_t len4 = strlen(s4);
- char *result = bmake_malloc(len1 + len2 + len3 + len4 + 1);
- memcpy(result, s1, len1);
- memcpy(result + len1, s2, len2);
- memcpy(result + len1 + len2, s3, len3);
- memcpy(result + len1 + len2 + len3, s4, len4 + 1);
- return result;
-}
-
/*
* Fracture a string into an array of words (as delineated by tabs or spaces)
* taking quotation marks into account.
Index: src/usr.bin/make/str.h
diff -u src/usr.bin/make/str.h:1.8 src/usr.bin/make/str.h:1.9
--- src/usr.bin/make/str.h:1.8 Wed Apr 14 17:39:11 2021
+++ src/usr.bin/make/str.h Sun May 30 21:16:54 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: str.h,v 1.8 2021/04/14 17:39:11 rillig Exp $ */
+/* $NetBSD: str.h,v 1.9 2021/05/30 21:16:54 rillig Exp $ */
/*
Copyright (c) 2021 Roland Illig <[email protected]>
@@ -362,6 +362,5 @@ SubstringWords_Free(SubstringWords w)
char *str_concat2(const char *, const char *);
char *str_concat3(const char *, const char *, const char *);
-char *str_concat4(const char *, const char *, const char *, const char *);
bool Str_Match(const char *, const char *);