From nobody Wed Feb 16 05:38:51 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DBB4419C7D32; Wed, 16 Feb 2022 05:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jz6Fl5fkWz3knM; Wed, 16 Feb 2022 05:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644989931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mIWOk5XVqkE2j/8IyR0FIyXlMOqSFxzdRJlt/lwrFMc=; b=JoTBeaj1hy5/GFUNSDoeo1SryvL/oFOdHFjjIJBb1luMVbDMDAj0+iPomM6SJgRzaIq/El PC1H8dUb/TLMej0RmAAJVB4fFs74qrYmbQFQeXpQWFA3i+Yequ0LRgiqP+Pu/GwMUy4r79 0g4W7PAWBOxE+NHIV94btiJE78HDf67K5cYt70o9oEsA2LoMktnR9md0KVpMzQARqS0VNf 0+ltnM2NW5W7tulvcM99TlMBSUJexEumOTnQI6rv82+KKQvUGtqac4czm5npWxqvBwigBs NkEcNbwKMdWlUzU/v4i1Rb74B8mQejVlX2hyBs4WaQQKbxsLcRyF/HrW9k9Fmg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9F35B107C6; Wed, 16 Feb 2022 05:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21G5cpqG059595; Wed, 16 Feb 2022 05:38:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21G5cpXe059594; Wed, 16 Feb 2022 05:38:51 GMT (envelope-from git) Date: Wed, 16 Feb 2022 05:38:51 GMT Message-Id: <202202160538.21G5cpXe059594@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Simon J. Gerraty" Subject: git: 4eda2649adec - stable/13 - Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sjg X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4eda2649adece08245281edc627ebc58c759bedb Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644989931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mIWOk5XVqkE2j/8IyR0FIyXlMOqSFxzdRJlt/lwrFMc=; b=kE+f+yKt061m0k2Aolkx9EQR+iK6QbfAL0A6arc5XYbcwa8CidOD603jbNBjAamTUyTNXP 8PhUz3YnqubMbwtuCqbyIPBxjhVkqqj4AUlxZ1YEBfFDYebNHSNd9Oz7sLjOrpFrJN+vjU JwO87J2NNr4ouuNqEq1+M+u8FCVgkylfpj7KtVBT/10Y5lnk6kW69GmPUY4s0OQZIeAs3j +mIAfzuYPJouQ6C9NcXlCd79cEqfYwJfBPUPLeAgNIqKjRb0FJ5MinnrkoUArI3DGDOpXj CYD+dwGaI2T6rVRhAFZwPWmtCemLbGr2pmvpt6jjcHhs9il51IpG3ucUBMSr7Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1644989931; a=rsa-sha256; cv=none; b=RUPSU7Wye6xRbEZpPLcA5MeOTvaAUq1cckyfuij/5mx4z5/OI96qGFktNMs5rMSRgVQ8bq MZUyBDmMVeCFpOvZMCLAdKGpPBYnylG4vegZs3DXRt6tLJ3tpVBnzUCKVmcmIpSqvMVsLZ wkgQtnFb6eL2gnty3aJ6skRS9uTx69b9vXiTlAnTwGMNQ5MJa3UhBGsMWrTTRuJEHRNbg2 GCpTmy5QIQ6FE/BECAY95xsKfUAWfx9ql+WmKH7kSz3806Htxlacy9hDYrSOotdmjtnghS 6hP7h9U14XqnmX4oqLBO4K/kSeIDtndzVGs+D8bv21owKWv48HkQbbhWE2MWkw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=4eda2649adece08245281edc627ebc58c759bedb commit 4eda2649adece08245281edc627ebc58c759bedb Author: Simon J. Gerraty AuthorDate: 2021-06-25 21:31:14 +0000 Commit: Simon J. Gerraty CommitDate: 2022-02-16 05:36:27 +0000 Merge commit 'ee914ef902ae018bd4f67192832120f9bf05651f' into new_merge (cherry picked from commit b0c40a00a67f611868fc0f10bde6b28eb75931be) --- contrib/bmake/ChangeLog | 113 + contrib/bmake/FILES | 13 + contrib/bmake/VERSION | 2 +- contrib/bmake/arch.c | 104 +- contrib/bmake/buf.h | 4 +- contrib/bmake/compat.c | 42 +- contrib/bmake/cond.c | 279 +- contrib/bmake/dir.c | 62 +- contrib/bmake/dir.h | 6 +- contrib/bmake/enum.h | 62 +- contrib/bmake/for.c | 46 +- contrib/bmake/hash.c | 68 +- contrib/bmake/hash.h | 14 +- contrib/bmake/import.sh | 17 +- contrib/bmake/job.c | 423 +-- contrib/bmake/job.h | 20 +- contrib/bmake/lst.c | 10 +- contrib/bmake/lst.h | 12 +- contrib/bmake/main.c | 250 +- contrib/bmake/make.c | 91 +- contrib/bmake/make.h | 129 +- contrib/bmake/meta.c | 194 +- contrib/bmake/meta.h | 8 +- contrib/bmake/metachar.h | 4 +- contrib/bmake/mk/ChangeLog | 35 + contrib/bmake/mk/dirdeps.mk | 76 +- contrib/bmake/mk/dpadd.mk | 7 +- contrib/bmake/mk/install-mk | 4 +- contrib/bmake/mk/meta.autodep.mk | 6 +- contrib/bmake/mk/meta2deps.py | 54 +- contrib/bmake/mk/rst2htm.mk | 6 +- contrib/bmake/nonints.h | 153 +- contrib/bmake/parse.c | 512 ++-- contrib/bmake/str.c | 101 +- contrib/bmake/str.h | 366 +++ contrib/bmake/suff.c | 71 +- contrib/bmake/targ.c | 14 +- contrib/bmake/unit-tests/Makefile | 28 +- contrib/bmake/unit-tests/archive.mk | 6 +- contrib/bmake/unit-tests/cmd-errors-jobs.exp | 2 +- contrib/bmake/unit-tests/cmd-errors-lint.exp | 2 +- contrib/bmake/unit-tests/cmd-errors.exp | 2 +- contrib/bmake/unit-tests/cond-func-empty.mk | 10 +- contrib/bmake/unit-tests/cond-func-make-main.mk | 6 +- contrib/bmake/unit-tests/cond-late.exp | 2 +- contrib/bmake/unit-tests/cond-short.mk | 14 +- contrib/bmake/unit-tests/cond-token-string.exp | 2 +- contrib/bmake/unit-tests/cond-token-var.mk | 23 +- contrib/bmake/unit-tests/cond1.exp | 2 +- contrib/bmake/unit-tests/counter-append.mk | 4 +- contrib/bmake/unit-tests/counter.mk | 4 +- contrib/bmake/unit-tests/dep-var.mk | 4 +- contrib/bmake/unit-tests/deptgt-makeflags.exp | 10 +- contrib/bmake/unit-tests/deptgt-order.exp | 3 + contrib/bmake/unit-tests/deptgt-order.mk | 18 +- contrib/bmake/unit-tests/deptgt.exp | 8 +- contrib/bmake/unit-tests/deptgt.mk | 4 +- contrib/bmake/unit-tests/directive-export-impl.exp | 88 +- contrib/bmake/unit-tests/directive-export-impl.mk | 23 +- contrib/bmake/unit-tests/directive-export.mk | 15 +- contrib/bmake/unit-tests/directive-for-errors.exp | 2 +- contrib/bmake/unit-tests/directive-for-errors.mk | 6 +- contrib/bmake/unit-tests/directive-for-escape.exp | 32 +- contrib/bmake/unit-tests/directive-for-escape.mk | 21 +- contrib/bmake/unit-tests/directive-for.exp | 2 +- contrib/bmake/unit-tests/directive-undef.exp | 3 +- contrib/bmake/unit-tests/directive-undef.mk | 21 +- .../bmake/unit-tests/directive-unexport-env.exp | 20 +- contrib/bmake/unit-tests/directive.exp | 8 +- contrib/bmake/unit-tests/include-main.exp | 2 +- contrib/bmake/unit-tests/job-output-null.exp | 4 + contrib/bmake/unit-tests/job-output-null.mk | 32 + .../bmake/unit-tests/jobs-empty-commands-error.exp | 5 + .../bmake/unit-tests/jobs-empty-commands-error.mk | 19 + contrib/bmake/unit-tests/moderrs.exp | 97 +- contrib/bmake/unit-tests/moderrs.mk | 25 +- contrib/bmake/unit-tests/modts.exp | 4 +- contrib/bmake/unit-tests/modword.exp | 24 +- contrib/bmake/unit-tests/modword.mk | 3 +- contrib/bmake/unit-tests/opt-chdir.mk | 6 +- contrib/bmake/unit-tests/opt-debug-errors-jobs.exp | 48 + contrib/bmake/unit-tests/opt-debug-errors-jobs.mk | 36 + contrib/bmake/unit-tests/opt-debug-lint.exp | 2 +- contrib/bmake/unit-tests/opt-debug-lint.mk | 20 +- contrib/bmake/unit-tests/opt-debug.exp | 6 +- contrib/bmake/unit-tests/opt-file.mk | 6 +- contrib/bmake/unit-tests/opt-jobs-no-action.mk | 4 +- contrib/bmake/unit-tests/recursive.mk | 7 +- contrib/bmake/unit-tests/sh-jobs.mk | 8 +- contrib/bmake/unit-tests/shell-csh.mk | 4 +- contrib/bmake/unit-tests/suff-incomplete.exp | 10 +- contrib/bmake/unit-tests/suff-main-several.exp | 24 +- contrib/bmake/unit-tests/suff-rebuild.exp | 14 +- contrib/bmake/unit-tests/var-class-cmdline.exp | 3 + contrib/bmake/unit-tests/var-class-cmdline.mk | 80 +- contrib/bmake/unit-tests/var-eval-short.exp | 29 + contrib/bmake/unit-tests/var-eval-short.mk | 163 ++ contrib/bmake/unit-tests/var-op-append.exp | 12 +- contrib/bmake/unit-tests/var-op-append.mk | 4 +- contrib/bmake/unit-tests/var-op-assign.mk | 4 +- contrib/bmake/unit-tests/var-op-sunsh.mk | 12 +- contrib/bmake/unit-tests/varcmd.mk | 14 +- contrib/bmake/unit-tests/vardebug.exp | 119 +- contrib/bmake/unit-tests/varmisc.exp | 2 +- contrib/bmake/unit-tests/varmod-assign.exp | 22 +- contrib/bmake/unit-tests/varmod-assign.mk | 39 +- contrib/bmake/unit-tests/varmod-defined.exp | 34 +- contrib/bmake/unit-tests/varmod-defined.mk | 6 +- contrib/bmake/unit-tests/varmod-edge.exp | 12 +- contrib/bmake/unit-tests/varmod-edge.mk | 26 +- contrib/bmake/unit-tests/varmod-hash.exp | 6 +- contrib/bmake/unit-tests/varmod-ifelse.exp | 22 +- contrib/bmake/unit-tests/varmod-ifelse.mk | 64 +- contrib/bmake/unit-tests/varmod-indirect.exp | 84 +- contrib/bmake/unit-tests/varmod-indirect.mk | 100 +- contrib/bmake/unit-tests/varmod-loop-varname.exp | 11 + contrib/bmake/unit-tests/varmod-loop-varname.mk | 127 + contrib/bmake/unit-tests/varmod-loop.exp | 19 +- contrib/bmake/unit-tests/varmod-loop.mk | 156 +- contrib/bmake/unit-tests/varmod-match-escape.exp | 74 +- contrib/bmake/unit-tests/varmod-match-escape.mk | 8 +- contrib/bmake/unit-tests/varmod-order.exp | 4 +- contrib/bmake/unit-tests/varmod-range.exp | 10 +- contrib/bmake/unit-tests/varmod-remember.exp | 2 - contrib/bmake/unit-tests/varmod-remember.mk | 29 +- contrib/bmake/unit-tests/varmod-shell.mk | 9 +- contrib/bmake/unit-tests/varmod-subst-regex.exp | 25 +- contrib/bmake/unit-tests/varmod-subst-regex.mk | 54 +- contrib/bmake/unit-tests/varmod-subst.exp | 2 +- contrib/bmake/unit-tests/varmod-subst.mk | 10 +- contrib/bmake/unit-tests/varmod-sun-shell.exp | 2 + contrib/bmake/unit-tests/varmod-sun-shell.mk | 21 + contrib/bmake/unit-tests/varmod-sysv.exp | 147 +- contrib/bmake/unit-tests/varmod-sysv.mk | 57 +- contrib/bmake/unit-tests/varmod-to-separator.exp | 12 +- contrib/bmake/unit-tests/varmod-unique.mk | 12 +- contrib/bmake/unit-tests/varname-dot-shell.exp | 32 +- contrib/bmake/unit-tests/varname-empty.exp | 60 +- contrib/bmake/unit-tests/varname-empty.mk | 4 +- contrib/bmake/unit-tests/varname.exp | 33 +- contrib/bmake/unit-tests/varparse-dynamic.mk | 6 +- contrib/bmake/unit-tests/varparse-errors.exp | 4 +- contrib/bmake/unit-tests/varparse-errors.mk | 4 +- contrib/bmake/var.c | 3073 +++++++++++--------- 144 files changed, 5499 insertions(+), 3548 deletions(-) diff --git a/contrib/bmake/ChangeLog b/contrib/bmake/ChangeLog index 5cf6f9d8fe57..35235e1f8205 100644 --- a/contrib/bmake/ChangeLog +++ b/contrib/bmake/ChangeLog @@ -1,3 +1,116 @@ +2021-06-21 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210621 + Merge with NetBSD make, pick up + o var.c: only report error for unmatched regex subexpression + when linting (-dL) since we cannot tell when an unmatched + subexpression is an expected result. + o move unmatched regex subexpression tests to + varmod-subst-regex.mk and enable strict (lint) mode + +2021-06-16 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210616 + Merge with NetBSD make, pick up + o more unit tests + o cond.c: rename If_Eval to EvalBare + improve function names for parsing conditions + o job.c: fix error handling of targets that cannot be made + o var.c: uncompress code in ApplyModifier_Unique + +2021-05-18 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210518 + Merge with NetBSD make, pick up + o fix unit-tests/opt-chdir to cope with /nonexistent existing. + o job.c: Print -de error information when running multiple jobs + +2021-04-20 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210420 + Merge with NetBSD make, pick up + o use C99 bool type + o convert VarEvalFlags back into an enum + o cond.c: do not complain when skipping the condition 'no >= 10' + o hash.c: avoid allocating memory for simple variable names + o job.c: use distinct wording for writing to the shell commands file + remove type name for the abort status in job handling + rename PrintOutput to PrintFilteredOutput to avoid confusion + o main.c: avoid double slash in name of temporary directory + o var.c: use straight quotes for error 'Bad conditional expression' + reduce memory allocations in the modifiers ':D' and ':U' + rename members of ModifyWord_LoopArgs + clean up pattern flags for the modifiers ':S' and ':C' + reduce memory allocation and strlen calls in modifier ':from=to' + in the ':Q' modifier, only allocate memory if necessary + improve performance for LazyBuf + remove redundant parameter from ParseVarnameLong + migrate ParseModifierPart to use Substring + avoid unnecessary calls to strlen when evaluating modifiers + migrate ModifyWord functions to use Substring + migrate handling of the modifier ':S,from,to,' to Substring + reduce debug logging and memory allocation for ${:U...} + reduce verbosity of the -dv debug logging for standard cases + clean up debug logging for ':M' and ':N' + disallow '$' in the variable name of the modifier ':@' + simplify access to the name of an expression during evaluation + +2021-03-30 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210330 + Merge with NetBSD make, pick up + o replace enum bit-field with struct bit-field for VarEvalFlags + o rename VARE_NONE to VARE_PARSE_ONLY + o var.c: rename ApplyModifiersState to ModChain + fix double varname expansion in the variable modifier '::=' + change debug log for variable evaluation flags to lowercase + +2021-03-14 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210314 + Merge with NetBSD make, pick up + o var.c: avoid evaluating many modifiers in parse only mode + in strict mode (-dL) many variable references are parsed twice, + the first time just to report parse errors early, so we want to + avoid side effects and wasted effort to the extent possible. + +2021-02-26 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20210226 + Merge with NetBSD make, pick up + o remove freestanding freeIt variables + link via FStr + o var.c: restructure code in ParseVarname to target human readers + improve error message for; + bad modifier in variable expression + unclosed modifier + unknown modifier + remove redundant parameter of ApplySingleModifier + explain non-obvious code around indirect variable modifiers + quote ':S' in error message about missing delimiter + extract ParseModifier_Match into separate function + add context information to error message about ':range' modifier + add quotes around variable name in an error message + reorder code in ModifyWords + use more common parameter order for VarSelectWords + make ModifyWord_Subst a little easier to understand + do not expand variable name from the command line twice + extract ExistsInCmdline from Var_SetWithFlags + save a hash map lookup when defining a cmdline variable + clean up VarAdd, Var_Delete, Var_ReexportVars + use bit-shift expressions for VarFlags constants + rename constants for VarFlags + rename ExprDefined constants for debug logging + rename ExprStatus to ExprDefined + split parameters for evaluating variable expressions + reduce redundant code around ModifyWords + print error about failed shell command before overwriting variable + clean up ValidShortVarname, ParseVarnameShort + rename VarExprStatus to ExprStatus + add functions for assigning the value of an expression + rename ApplyModifiersState_Define to Expr_Define + condense the code for parsing :S and :C modifiers + 2021-02-06 Simon J Gerraty * VERSION (_MAKE_VERSION): 20210206 diff --git a/contrib/bmake/FILES b/contrib/bmake/FILES index 5e7b8301da87..dc0f6f33c763 100644 --- a/contrib/bmake/FILES +++ b/contrib/bmake/FILES @@ -63,6 +63,7 @@ realpath.c setenv.c sigcompat.c str.c +str.h stresep.c strlcpy.c suff.c @@ -399,6 +400,10 @@ unit-tests/job-flags.exp unit-tests/job-flags.mk unit-tests/job-output-long-lines.exp unit-tests/job-output-long-lines.mk +unit-tests/job-output-null.exp +unit-tests/job-output-null.mk +unit-tests/jobs-empty-commands-error.exp +unit-tests/jobs-empty-commands-error.mk unit-tests/jobs-empty-commands.exp unit-tests/jobs-empty-commands.mk unit-tests/jobs-error-indirect.exp @@ -439,6 +444,8 @@ unit-tests/opt-debug-curdir.exp unit-tests/opt-debug-curdir.mk unit-tests/opt-debug-dir.exp unit-tests/opt-debug-dir.mk +unit-tests/opt-debug-errors-jobs.exp +unit-tests/opt-debug-errors-jobs.mk unit-tests/opt-debug-errors.exp unit-tests/opt-debug-errors.mk unit-tests/opt-debug-file.exp @@ -627,6 +634,8 @@ unit-tests/var-class-local.exp unit-tests/var-class-local.mk unit-tests/var-class.exp unit-tests/var-class.mk +unit-tests/var-eval-short.exp +unit-tests/var-eval-short.mk unit-tests/var-op-append.exp unit-tests/var-op-append.mk unit-tests/var-op-assign.exp @@ -675,6 +684,8 @@ unit-tests/varmod-l-name-to-value.exp unit-tests/varmod-l-name-to-value.mk unit-tests/varmod-localtime.exp unit-tests/varmod-localtime.mk +unit-tests/varmod-loop-varname.exp +unit-tests/varmod-loop-varname.mk unit-tests/varmod-loop.exp unit-tests/varmod-loop.mk unit-tests/varmod-match-escape.exp @@ -709,6 +720,8 @@ unit-tests/varmod-subst-regex.exp unit-tests/varmod-subst-regex.mk unit-tests/varmod-subst.exp unit-tests/varmod-subst.mk +unit-tests/varmod-sun-shell.exp +unit-tests/varmod-sun-shell.mk unit-tests/varmod-sysv.exp unit-tests/varmod-sysv.mk unit-tests/varmod-tail.exp diff --git a/contrib/bmake/VERSION b/contrib/bmake/VERSION index 0af794962680..7c28f11013b7 100644 --- a/contrib/bmake/VERSION +++ b/contrib/bmake/VERSION @@ -1,2 +1,2 @@ # keep this compatible with sh and make -_MAKE_VERSION=20210206 +_MAKE_VERSION=20210621 diff --git a/contrib/bmake/arch.c b/contrib/bmake/arch.c index e5c0a5e4ac0f..6d9dd60dfbe9 100644 --- a/contrib/bmake/arch.c +++ b/contrib/bmake/arch.c @@ -1,4 +1,4 @@ -/* $NetBSD: arch.c,v 1.197 2021/02/05 05:15:12 rillig Exp $ */ +/* $NetBSD: arch.c,v 1.200 2021/05/30 21:16:54 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -147,7 +147,7 @@ struct ar_hdr { #include "dir.h" /* "@(#)arch.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: arch.c,v 1.197 2021/02/05 05:15:12 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; @@ -216,6 +216,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})", @@ -228,10 +241,10 @@ ArchFree(void *ap) * scope The scope in which to expand variables. * * Output: - * return TRUE if it was a valid specification. + * return True if it was a valid specification. * *pp Points to the first non-space after the archive spec. */ -Boolean +bool Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) { char *cp; /* Pointer into line */ @@ -239,12 +252,12 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) MFStr libName; /* Library-part of specification */ char *memName; /* Member-part of specification */ char saveChar; /* Ending delimiter of member-name */ - Boolean expandLibName; /* Whether the parsed libName contains + bool expandLibName; /* Whether the parsed libName contains * variable expressions that need to be * expanded */ libName = MFStr_InitRefer(*pp); - expandLibName = FALSE; + expandLibName = false; for (cp = libName.str; *cp != '(' && *cp != '\0';) { if (*cp == '$') { @@ -252,18 +265,18 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) /* XXX: This code can probably be shortened. */ const char *nested_p = cp; FStr result; - Boolean isError; + bool isError; /* XXX: is expanded twice: once here and once below */ (void)Var_Parse(&nested_p, scope, - VARE_WANTRES | VARE_UNDEFERR, &result); + VARE_UNDEFERR, &result); /* TODO: handle errors */ isError = result.str == var_Error; FStr_Done(&result); if (isError) - return FALSE; + return false; - expandLibName = TRUE; + expandLibName = true; cp += nested_p - cp; } else cp++; @@ -272,8 +285,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) *cp++ = '\0'; if (expandLibName) { char *expanded; - (void)Var_Subst(libName.str, scope, - VARE_WANTRES | VARE_UNDEFERR, &expanded); + (void)Var_Subst(libName.str, scope, VARE_UNDEFERR, &expanded); /* TODO: handle errors */ libName = MFStr_InitOwn(expanded); } @@ -285,7 +297,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) * place and skip to the end of it (either white-space or * a close paren). */ - Boolean doSubst = FALSE; + bool doSubst = false; pp_skip_whitespace(&cp); @@ -295,20 +307,19 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) /* Expand nested variable expressions. */ /* XXX: This code can probably be shortened. */ FStr result; - Boolean isError; + bool isError; const char *nested_p = cp; (void)Var_Parse(&nested_p, scope, - VARE_WANTRES | VARE_UNDEFERR, - &result); + VARE_UNDEFERR, &result); /* TODO: handle errors */ isError = result.str == var_Error; FStr_Done(&result); if (isError) - return FALSE; + return false; - doSubst = TRUE; + doSubst = true; cp += nested_p - cp; } else { cp++; @@ -325,7 +336,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) Parse_Error(PARSE_FATAL, "No closing parenthesis " "in archive specification"); - return FALSE; + return false; } /* @@ -355,16 +366,15 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) char *p; char *unexpandedMemName = memName; - (void)Var_Subst(memName, scope, - VARE_WANTRES | VARE_UNDEFERR, - &memName); + (void)Var_Subst(memName, scope, VARE_UNDEFERR, + &memName); /* TODO: handle errors */ /* * 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 && @@ -383,7 +393,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) /* Error in nested call. */ free(fullName); /* XXX: does unexpandedMemName leak? */ - return FALSE; + return false; } free(fullName); /* XXX: does unexpandedMemName leak? */ @@ -394,8 +404,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) 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); @@ -407,8 +416,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) Lst_Done(&members); } else { - char *fullname = str_concat4(libName.str, "(", memName, - ")"); + char *fullname = FullName(libName.str, memName); gn = Targ_GetNode(fullname); free(fullname); @@ -434,7 +442,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) /* We promised that pp would be set up at the next non-space. */ pp_skip_whitespace(&cp); *pp = cp; - return TRUE; + return true; } /* @@ -444,7 +452,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) * Input: * archive Path to the archive * member Name of member; only its basename is used. - * addToCache TRUE if archive should be cached if not already so. + * addToCache True if archive should be cached if not already so. * * Results: * The ar_hdr for the member, or NULL. @@ -452,7 +460,7 @@ Arch_ParseArchive(char **pp, GNodeList *gns, GNode *scope) * See ArchFindMember for an almost identical copy of this code. */ static struct ar_hdr * -ArchStatMember(const char *archive, const char *member, Boolean addToCache) +ArchStatMember(const char *archive, const char *member, bool addToCache) { #define AR_MAX_NAME_LEN (sizeof arh.ar_name - 1) FILE *arch; @@ -713,7 +721,7 @@ ArchSVR4Entry(Arch *ar, char *inout_name, size_t size, FILE *arch) #endif -static Boolean +static bool ArchiveMember_HasName(const struct ar_hdr *hdr, const char *name, size_t namelen) { @@ -721,22 +729,22 @@ ArchiveMember_HasName(const struct ar_hdr *hdr, const char *ar_name = hdr->AR_NAME; if (strncmp(ar_name, name, namelen) != 0) - return FALSE; + return false; if (namelen >= ar_name_len) return namelen == ar_name_len; /* hdr->AR_NAME is space-padded to the right. */ if (ar_name[namelen] == ' ') - return TRUE; + return true; /* In archives created by GNU binutils 2.27, the member names end with * a slash. */ if (ar_name[namelen] == '/' && (namelen == ar_name_len || ar_name[namelen + 1] == ' ')) - return TRUE; + return true; - return FALSE; + return false; } /* @@ -951,7 +959,7 @@ Arch_UpdateMTime(GNode *gn) { struct ar_hdr *arh; - arh = ArchStatMember(GNode_VarArchive(gn), GNode_VarMember(gn), TRUE); + arh = ArchStatMember(GNode_VarArchive(gn), GNode_VarMember(gn), true); if (arh != NULL) gn->mtime = (time_t)strtol(arh->ar_date, NULL, 10); else @@ -1058,26 +1066,26 @@ Arch_FindLib(GNode *gn, SearchPath *path) * since this is used by 'ar' rules that affect the data contents of the * archive, not by ranlib rules, which affect the TOC. */ -Boolean +bool Arch_LibOODate(GNode *gn) { - Boolean oodate; + bool oodate; if (gn->type & OP_PHONY) { - oodate = TRUE; + oodate = true; } else if (!GNode_IsTarget(gn) && Lst_IsEmpty(&gn->children)) { - oodate = FALSE; + oodate = false; } else if ((!Lst_IsEmpty(&gn->children) && gn->youngestChild == NULL) || (gn->mtime > now) || (gn->youngestChild != NULL && gn->mtime < gn->youngestChild->mtime)) { - oodate = TRUE; + oodate = true; } else { #ifdef RANLIBMAG struct ar_hdr *arh; /* Header for __.SYMDEF */ int modTimeTOC; /* The table-of-contents' mod time */ - arh = ArchStatMember(gn->path, RANLIBMAG, FALSE); + arh = ArchStatMember(gn->path, RANLIBMAG, false); if (arh != NULL) { modTimeTOC = (int)strtol(arh->ar_date, NULL, 10); @@ -1094,10 +1102,10 @@ Arch_LibOODate(GNode *gn) */ if (DEBUG(ARCH) || DEBUG(MAKE)) debug_printf("no toc..."); - oodate = TRUE; + oodate = true; } #else - oodate = FALSE; + oodate = false; #endif } return oodate; @@ -1119,7 +1127,7 @@ Arch_End(void) #endif } -Boolean +bool Arch_IsLib(GNode *gn) { static const char armag[] = "!\n"; @@ -1127,11 +1135,11 @@ Arch_IsLib(GNode *gn) int fd; if ((fd = open(gn->path, O_RDONLY)) == -1) - return FALSE; + return false; if (read(fd, buf, sizeof buf) != sizeof buf) { (void)close(fd); - return FALSE; + return false; } (void)close(fd); diff --git a/contrib/bmake/buf.h b/contrib/bmake/buf.h index 594e9651dbfb..938820e4745f 100644 --- a/contrib/bmake/buf.h +++ b/contrib/bmake/buf.h @@ -1,4 +1,4 @@ -/* $NetBSD: buf.h,v 1.42 2021/01/30 21:25:10 rillig Exp $ */ +/* $NetBSD: buf.h,v 1.43 2021/04/03 11:08:40 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -101,7 +101,7 @@ Buf_AddByte(Buffer *buf, char byte) end[1] = '\0'; } -MAKE_INLINE Boolean +MAKE_INLINE bool Buf_EndsWith(const Buffer *buf, char ch) { return buf->len > 0 && buf->data[buf->len - 1] == ch; diff --git a/contrib/bmake/compat.c b/contrib/bmake/compat.c index 59190d8c4354..f8c47397f3df 100644 --- a/contrib/bmake/compat.c +++ b/contrib/bmake/compat.c @@ -1,4 +1,4 @@ -/* $NetBSD: compat.c,v 1.224 2021/02/05 05:15:12 rillig Exp $ */ +/* $NetBSD: compat.c,v 1.227 2021/04/27 15:19:25 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -99,7 +99,7 @@ #include "pathnames.h" /* "@(#)compat.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: compat.c,v 1.224 2021/02/05 05:15:12 rillig Exp $"); +MAKE_RCSID("$NetBSD: compat.c,v 1.227 2021/04/27 15:19:25 christos Exp $"); static GNode *curTarg = NULL; static pid_t compatChild; @@ -164,7 +164,7 @@ CompatInterrupt(int signo) } static void -DebugFailedTarget(const char *cmd, GNode *gn) +DebugFailedTarget(const char *cmd, const GNode *gn) { const char *p = cmd; debug_printf("\n*** Failed target: %s\n*** Failed command: ", @@ -184,7 +184,7 @@ DebugFailedTarget(const char *cmd, GNode *gn) debug_printf("\n"); } -static Boolean +static bool UseShell(const char *cmd MAKE_ATTR_UNUSED) { #if !defined(MAKE_NATIVE) @@ -194,7 +194,7 @@ UseShell(const char *cmd MAKE_ATTR_UNUSED) * behaviour. Or perhaps the shell has been replaced with something * that does extra logging, and that should not be bypassed. */ - return TRUE; + return true; #else /* * Search for meta characters in the command. If there are no meta @@ -227,22 +227,22 @@ Compat_RunCommand(const char *cmdp, GNode *gn, StringListNode *ln) { char *cmdStart; /* Start of expanded command */ char *bp; - Boolean silent; /* Don't print command */ - Boolean doIt; /* Execute even if -n */ - volatile Boolean errCheck; /* Check errors */ + bool silent; /* Don't print command */ + bool doIt; /* Execute even if -n */ + volatile bool errCheck; /* Check errors */ WAIT_T reason; /* Reason for child's death */ WAIT_T status; /* Description of child's death */ pid_t cpid; /* Child actually found */ pid_t retstat; /* Result of wait */ const char **volatile av; /* Argument vector for thing to exec */ char **volatile mav; /* Copy of the argument vector for freeing */ - Boolean useShell; /* TRUE if command should be executed + bool useShell; /* True if command should be executed * using a shell */ const char *volatile cmd = cmdp; silent = (gn->type & OP_SILENT) != 0; errCheck = !(gn->type & OP_IGNORE); - doIt = FALSE; + doIt = false; (void)Var_Subst(cmd, gn, VARE_WANTRES, &cmdStart); /* TODO: handle errors */ @@ -281,9 +281,9 @@ Compat_RunCommand(const char *cmdp, GNode *gn, StringListNode *ln) if (*cmd == '@') silent = !DEBUG(LOUD); else if (*cmd == '-') - errCheck = FALSE; + errCheck = false; else if (*cmd == '+') { - doIt = TRUE; + doIt = true; if (shellName == NULL) /* we came here from jobs */ Shell_Init(); } else @@ -343,7 +343,7 @@ Compat_RunCommand(const char *cmdp, GNode *gn, StringListNode *ln) * command into words to form an argument vector we can * execute. */ - Words words = Str_Words(cmd, FALSE); + Words words = Str_Words(cmd, false); mav = words.words; bp = words.freeIt; av = (void *)mav; @@ -392,7 +392,7 @@ Compat_RunCommand(const char *cmdp, GNode *gn, StringListNode *ln) */ while ((retstat = wait(&reason)) != cpid) { if (retstat > 0) - JobReapChild(retstat, reason, FALSE); /* not ours? */ + JobReapChild(retstat, reason, false); /* not ours? */ if (retstat == -1 && errno != EINTR) { break; } @@ -425,7 +425,7 @@ Compat_RunCommand(const char *cmdp, GNode *gn, StringListNode *ln) if (errCheck) { #ifdef USE_META if (useMeta) { - meta_job_error(NULL, gn, FALSE, status); + meta_job_error(NULL, gn, false, status); } #endif gn->made = ERROR; @@ -483,7 +483,7 @@ MakeNodes(GNodeList *gnodes, GNode *pgn) } } -static Boolean +static bool MakeUnmade(GNode *gn, GNode *pgn) { @@ -493,7 +493,7 @@ MakeUnmade(GNode *gn, GNode *pgn) * First mark ourselves to be made, then apply whatever transformations * the suffix module thinks are necessary. Once that's done, we can * descend and make all our children. If any of them has an error - * but the -k flag was given, our 'make' field will be set to FALSE + * but the -k flag was given, our 'make' field will be set to false * again. This is our signal to not attempt to do anything but abort * our parent as well. */ @@ -508,7 +508,7 @@ MakeUnmade(GNode *gn, GNode *pgn) if (!(gn->flags & REMAKE)) { gn->made = ABORTED; pgn->flags &= ~(unsigned)REMAKE; - return FALSE; + return false; } if (Lst_FindDatum(&gn->implicitParents, pgn) != NULL) @@ -524,7 +524,7 @@ MakeUnmade(GNode *gn, GNode *pgn) if (!GNode_IsOODate(gn)) { gn->made = UPTODATE; DEBUG0(MAKE, "up-to-date.\n"); - return FALSE; + return false; } /* @@ -539,7 +539,7 @@ MakeUnmade(GNode *gn, GNode *pgn) * We need to be re-made. * Ensure that $? (.OODATE) and $> (.ALLSRC) are both set. */ - Make_DoAllVar(gn); + GNode_SetLocalVars(gn); /* * Alter our type to tell if errors should be ignored or things @@ -596,7 +596,7 @@ MakeUnmade(GNode *gn, GNode *pgn) PrintOnError(gn, "\nStop."); exit(1); } - return TRUE; + return true; } static void diff --git a/contrib/bmake/cond.c b/contrib/bmake/cond.c index 8f36fda22f12..a8d88d1d6816 100644 --- a/contrib/bmake/cond.c +++ b/contrib/bmake/cond.c @@ -1,4 +1,4 @@ -/* $NetBSD: cond.c,v 1.256 2021/02/05 05:15:12 rillig Exp $ */ +/* $NetBSD: cond.c,v 1.267 2021/06/11 14:52:03 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -95,7 +95,7 @@ #include "dir.h" /* "@(#)cond.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: cond.c,v 1.256 2021/02/05 05:15:12 rillig Exp $"); +MAKE_RCSID("$NetBSD: cond.c,v 1.267 2021/06/11 14:52:03 rillig Exp $"); /* * The parsing of conditional expressions is based on this grammar: @@ -148,11 +148,11 @@ typedef struct CondParser { * expression has length > 0. The other '.if' variants delegate * to evalBare instead. */ - Boolean plain; + bool plain; /* The function to apply on unquoted bare words. */ - Boolean (*evalBare)(size_t, const char *); - Boolean negateEvalBare; + bool (*evalBare)(size_t, const char *); + bool negateEvalBare; const char *p; /* The remaining condition to parse */ Token curr; /* Single push-back token used in parsing */ @@ -163,10 +163,10 @@ typedef struct CondParser { * specific one, therefore it makes sense to suppress the standard * "Malformed conditional" message. */ - Boolean printedError; + bool printedError; } CondParser; -static CondResult CondParser_Or(CondParser *par, Boolean); +static CondResult CondParser_Or(CondParser *par, bool); static unsigned int cond_depth = 0; /* current .if nesting level */ static unsigned int cond_min_depth = 0; /* depth at makefile open */ @@ -178,21 +178,21 @@ static const char *opname[] = { "<", "<=", ">", ">=", "==", "!=" }; * In strict mode, the lhs must be a variable expression or a string literal * in quotes. In non-strict mode it may also be an unquoted string literal. * - * TRUE when CondEvalExpression is called from Cond_EvalLine (.if etc) - * FALSE when CondEvalExpression is called from ApplyModifier_IfElse + * True when CondEvalExpression is called from Cond_EvalLine (.if etc). + * False when CondEvalExpression is called from ApplyModifier_IfElse * since lhs is already expanded, and at that point we cannot tell if * it was a variable reference or not. */ -static Boolean lhsStrict; +static bool lhsStrict; -static Boolean +static bool is_token(const char *str, const char *tok, size_t len) { return strncmp(str, tok, len) == 0 && !ch_isalpha(str[len]); } static Token -ToToken(Boolean cond) +ToToken(bool cond) { return cond ? TOK_TRUE : TOK_FALSE; } @@ -228,7 +228,7 @@ CondParser_SkipWhitespace(CondParser *par) * Return the length of the argument, or 0 on error. */ static size_t -ParseFuncArg(CondParser *par, const char **pp, Boolean doEval, const char *func, +ParseFuncArg(CondParser *par, const char **pp, bool doEval, const char *func, char **out_arg) { const char *p = *pp; @@ -264,11 +264,11 @@ ParseFuncArg(CondParser *par, const char **pp, Boolean doEval, const char *func, * so we don't need to do it. Nor do we return an * error, though perhaps we should. */ - VarEvalFlags eflags = doEval - ? VARE_WANTRES | VARE_UNDEFERR - : VARE_NONE; + VarEvalMode emode = doEval + ? VARE_UNDEFERR + : VARE_PARSE_ONLY; FStr nestedVal; - (void)Var_Parse(&p, SCOPE_CMDLINE, eflags, &nestedVal); + (void)Var_Parse(&p, SCOPE_CMDLINE, emode, &nestedVal); /* TODO: handle errors */ Buf_AddStr(&argBuf, nestedVal.str); FStr_Done(&nestedVal); @@ -290,7 +290,7 @@ ParseFuncArg(CondParser *par, const char **pp, Boolean doEval, const char *func, if (func != NULL && *p++ != ')') { Parse_Error(PARSE_FATAL, "Missing closing parenthesis for %s()", func); - par->printedError = TRUE; + par->printedError = true; return 0; } @@ -300,34 +300,34 @@ ParseFuncArg(CondParser *par, const char **pp, Boolean doEval, const char *func, /* Test whether the given variable is defined. */ /*ARGSUSED*/ -static Boolean +static bool FuncDefined(size_t argLen MAKE_ATTR_UNUSED, const char *arg) { FStr value = Var_Value(SCOPE_CMDLINE, arg); - Boolean result = value.str != NULL; + bool result = value.str != NULL; FStr_Done(&value); *** 17372 LINES SKIPPED ***