Module Name: src Committed By: rillig Date: Sun Aug 2 19:08:54 UTC 2020
Modified Files: src/usr.bin/make: var.c Log Message: make(1): merge duplicate code in the :O and :u modifiers To generate a diff of this commit: cvs rdiff -u -r1.402 -r1.403 src/usr.bin/make/var.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/var.c diff -u src/usr.bin/make/var.c:1.402 src/usr.bin/make/var.c:1.403 --- src/usr.bin/make/var.c:1.402 Sun Aug 2 18:57:55 2020 +++ src/usr.bin/make/var.c Sun Aug 2 19:08:54 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.402 2020/08/02 18:57:55 rillig Exp $ */ +/* $NetBSD: var.c,v 1.403 2020/08/02 19:08:54 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: var.c,v 1.402 2020/08/02 18:57:55 rillig Exp $"; +static char rcsid[] = "$NetBSD: var.c,v 1.403 2020/08/02 19:08:54 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: var.c,v 1.402 2020/08/02 18:57:55 rillig Exp $"); +__RCSID("$NetBSD: var.c,v 1.403 2020/08/02 19:08:54 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -1572,13 +1572,29 @@ VarWordCompareReverse(const void *a, con return strcmp(*(const char * const *)b, *(const char * const *)a); } -/* Remove adjacent duplicate words. */ static char * -VarUniq(const char *str) +WordList_JoinFree(char **av, int ac, char *as) { - Buffer buf; /* Buffer for new string */ + Buffer buf; Buf_InitZ(&buf, 0); + int i; + for (i = 0; i < ac; i++) { + if (i != 0) + Buf_AddByte(&buf, ' '); + Buf_AddStr(&buf, av[i]); + } + + free(av); + free(as); + + return Buf_Destroy(&buf, FALSE); +} + +/* Remove adjacent duplicate words. */ +static char * +VarUniq(const char *str) +{ char *as; /* Word list memory */ int ac; char **av = brk_string(str, &ac, FALSE, &as); @@ -1591,17 +1607,7 @@ VarUniq(const char *str) ac = j + 1; } - int i; - for (i = 0; i < ac; i++) { - if (i != 0) - Buf_AddByte(&buf, ' '); - Buf_AddStr(&buf, av[i]); - } - - free(as); - free(av); - - return Buf_Destroy(&buf, FALSE); + return WordList_JoinFree(av, ac, as); } @@ -2601,20 +2607,7 @@ ApplyModifier_Order(const char *mod, App return AMR_BAD; } - Buffer buf; - Buf_InitZ(&buf, 0); - - int i; - for (i = 0; i < ac; i++) { - if (i != 0) - Buf_AddByte(&buf, ' '); - Buf_AddStr(&buf, av[i]); - } - - free(as); - free(av); - - st->newVal = Buf_Destroy(&buf, FALSE); + st->newVal = WordList_JoinFree(av, ac, as); return AMR_OK; }