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 <ril...@netbsd.org> @@ -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 *);