From nobody Sat Sep 26 16:07:06 2026 X-Original-To: dev-commits-src-main@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 4hsXWt4Bdhz6tJ4w for ; Sat, 26 Sep 2026 16:07:06 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hsXWt3Z4zz3HZn for ; Sat, 26 Sep 2026 16:07:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790438826; 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=e5H6nOSkiCcC/n7+vMH2FQ+XqvssrabA8EScsDg/vkM=; b=kWiqYAEgK7XIZnQHQyb7YLt3JSAC7/ZVtgQu2SghTeb5dPvKCIFy06XBolm5BzMsjHJd0c fnx/3h4OCBOlHcL1SG4HyrSVszE+9OF2T4NXPLgj/0ZRGyCHySgfaWxm+QIly0gsDxCOxv bs7GMmHcXSsAaIYQn/Unrw3pogcDEwHMgmy09xu5O+mLQnH/Km6TbIOAnzTiCaCjEImqA+ DmhJHYT5L0CaQPErh9wOXIQjGAMciUGuXgpFGNUfPIU328DHrcaglYmhZlPdOFnegzDdM1 h5XlmwsG/CHYJw4YCf8BOUmdeq/0cAsLKuYQuvLO3mJHP4eDcK1DI7fNbg17iw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790438826; b=ZndWu5kUMTZVSTG+Rs7zIPWOIWGkiozbL9W8MqcEcnYdvvbjVHsOeopabs4yQkETwczl/9 ikQ5LLBLW+P6By7PJnVIzTDE2ZN0YEx4XHx84ID79GGwyY2gxs9VGPHJ4kWrRWrjrFCjC8 Q/cwxUrhCckGm/V1cHB2x2YZuuhcNDBKxnIxNVTwZTlZHU/oYz0BvQoSvRK/czf0XVe+Tv MOOQsVfy+cTih06FAVu3ogUN39G3o2/p98HuwJl89daknfFZkNuWP/bEPdrKRAXqm/5q0q ThrRuZ4Md7d8i+dOc6jjHt4ehKBF68Bj5sqpWb9/Mon3CvK9jaLcFXAlHKoGnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790438826; 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=e5H6nOSkiCcC/n7+vMH2FQ+XqvssrabA8EScsDg/vkM=; b=y29Xox8QhUpxnedFyKsZam47zLhdDx87njEeIGElXH5v8YI++bAEKDdBqxgnnNDRVslW1F OrFyjjFpYvfDQp7pEB6L6SF9hD1HRzglgGkq7kZMuJezUyN8nMbC9m6PVs++D6UJZED73o 64eW7CA4hXkvjOUn9lbe1iKdDYCpEr+58TPZuznTkqKS53b38g1m5K+Y8BVMOA8cc7BTjv 9jrVKDr9za1zkwfxO6JiRGWAUV2eVyc8NQalmUgj1P2PmrVxuNsaUNP21pILUsnaYF8YDO uMLgKRfUg68KTcCLDCthYKT7eSpAS1W8Vl2fKEILyZn2u5yBSLQjxowNbAI+mw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hsXWt2fWXz11yV for ; Sat, 26 Sep 2026 16:07:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 462f7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 26 Sep 2026 16:07:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Fernando Apeste=?utf-8?Q?gu=C3=ADa?= Subject: git: 3963483523a4 - main - whereis(1): Simplify code List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fernape X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3963483523a422e8644ded8d079f82949fd5a8fb Auto-Submitted: auto-generated Date: Sat, 26 Sep 2026 16:07:06 +0000 Message-Id: <6ab7edaa.462f7.c380dab@gitrepo.freebsd.org> The branch main has been updated by fernape: URL: https://cgit.FreeBSD.org/src/commit/?id=3963483523a422e8644ded8d079f82949fd5a8fb commit 3963483523a422e8644ded8d079f82949fd5a8fb Author: Fernando ApesteguĂ­a AuthorDate: 2026-09-06 16:30:03 +0000 Commit: Fernando ApesteguĂ­a CommitDate: 2026-09-26 16:05:53 +0000 whereis(1): Simplify code Simplify the way we build paths. Avoid decolonification of source paths. Remove gnu directories and add non-tracked ones. Fix a memory leak while here. Approved by: ngie@ Differential Revision: https://reviews.freebsd.org/D59846 --- usr.bin/whereis/pathnames.h | 36 ++++++++++++++++++++++++++---------- usr.bin/whereis/whereis.c | 39 +++++++++++---------------------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/usr.bin/whereis/pathnames.h b/usr.bin/whereis/pathnames.h index b7ac47ca93e9..07de74c63463 100644 --- a/usr.bin/whereis/pathnames.h +++ b/usr.bin/whereis/pathnames.h @@ -25,20 +25,36 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include + /* Where to look for libexec */ #define PATH_LIBEXEC "/usr/libexec" /* Where to look for sources. */ -#define PATH_SOURCES \ -"/usr/src/bin:/usr/src/usr.bin:/usr/src/sbin:" \ -"/usr/src/usr.sbin:/usr/src/libexec:" \ -"/usr/src/gnu/bin:/usr/src/gnu/usr.bin:" \ -"/usr/src/gnu/sbin:/usr/src/gnu/usr.sbin:" \ -"/usr/src/contrib:" \ -"/usr/src/secure/bin:/usr/src/secure/usr.bin:" \ -"/usr/src/secure/sbin:/usr/src/secure/usr.sbin:" \ -"/usr/src/secure/libexec:/usr/src/crypto:" \ -"/usr/src/games" +static const char *sourcepaths[] = { + "/usr/src/bin", + "/usr/src/cddl/usr.bin", + "/usr/src/cddl/usr.sbin", + "/usr/src/contrib", + "/usr/src/crypto", + "/usr/src/games", + "/usr/src/kerberos5/libexec", + "/usr/src/kerberos5/usr.bin", + "/usr/src/kerberos5/usr.sbin", + "/usr/src/krb5/libexec", + "/usr/src/krb5/usr.bin", + "/usr/src/krb5/usr.sbin", + "/usr/src/libexec", + "/usr/src/sbin", + "/usr/src/secure/bin", + "/usr/src/secure/libexec", + "/usr/src/secure/sbin", + "/usr/src/secure/usr.bin", + "/usr/src/secure/usr.sbin", + "/usr/src/usr.bin", + "/usr/src/usr.sbin", + NULL +}; /* Each subdirectory of PATH_PORTS will be appended to PATH_SOURCES. */ #define PATH_PORTS "/usr/ports" diff --git a/usr.bin/whereis/whereis.c b/usr.bin/whereis/whereis.c index 21b7c11cfb02..5f8aeb1cdbc1 100644 --- a/usr.bin/whereis/whereis.c +++ b/usr.bin/whereis/whereis.c @@ -59,8 +59,6 @@ static int opt_a, opt_b, opt_m, opt_q, opt_s, opt_u, opt_x; static ccharp *bindirs, *mandirs, *sourcedirs; static char **query; -static const char *sourcepath = PATH_SOURCES; - static char *colonify(ccharp *); static int contains(ccharp *, const char *); static void decolonify(char *, ccharp **, int *); @@ -309,11 +307,10 @@ defaults(void) /* -s defaults to precompiled list, plus subdirs of * $PORTSDIR. If not set, it defaults to /usr/ports */ if (!sourcedirs) { - b = strdup(sourcepath); - if (b == NULL) - abort(); - nele = 0; - decolonify(b, &sourcedirs, &nele); + size_t sp_len = strlen(*sourcepaths); + sourcedirs = malloc(sp_len * sizeof (char *)); + for (size_t i = 0; i < sp_len; i++) + sourcedirs[i] = sourcepaths[i]; path_ports = getenv("PORTSDIR"); if (path_ports == NULL) @@ -354,12 +351,8 @@ defaults(void) (dirp->d_name[0] >= 'A' && dirp->d_name[0] <= 'Z') || strcmp(dirp->d_name, "distfiles") == 0) continue; - if ((b = malloc(strlen(path_ports) + 1 + dirp->d_namlen + 1)) - == NULL) + if (asprintf(&b, "%s/%s", path_ports, dirp->d_name) < 0) abort(); - strcpy(b, path_ports); - strcat(b, "/"); - strcat(b, dirp->d_name); if (stat(b, &sb) == -1 || (sb.st_mode & S_IFMT) != S_IFDIR || access(b, R_OK | X_OK) != 0) { @@ -405,7 +398,9 @@ main(int argc, char **argv) errx(EX_DATAERR, "no directories to search"); if (opt_m) { - setenv("MANPATH", colonify(mandirs), 1); + char *mp = colonify(mandirs); + setenv("MANPATH", mp, 1); + free(mp); if ((i = regcomp(&re, MANWHEREISMATCH, REG_EXTENDED)) != 0) { regerror(i, &re, buf, BUFSIZ - 1); errx(EX_UNAVAILABLE, "regcomp(%s) failed: %s", @@ -446,12 +441,8 @@ main(int argc, char **argv) */ unusual = unusual | NO_BIN_FOUND; for (dp = bindirs; *dp != NULL; dp++) { - cp = malloc(strlen(*dp) + 1 + s + 1); - if (cp == NULL) + if (asprintf(&cp, "%s/%s", *dp, name) < 0) abort(); - strcpy(cp, *dp); - strcat(cp, "/"); - strcat(cp, name); if (stat(cp, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFREG && (sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) @@ -559,12 +550,8 @@ main(int argc, char **argv) */ unusual = unusual | NO_SRC_FOUND; for (dp = sourcedirs; *dp != NULL; dp++) { - cp = malloc(strlen(*dp) + 1 + s + 1); - if (cp == NULL) + if (asprintf(&cp, "%s/%s", *dp, name) < 0) abort(); - strcpy(cp, *dp); - strcat(cp, "/"); - strcat(cp, name); if (stat(cp, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFDIR) { unusual = unusual & ~NO_SRC_FOUND; @@ -615,12 +602,8 @@ main(int argc, char **argv) for (dp = sourcedirs; (src == NULL || opt_a) && *dp != NULL; dp++) { - cp2 = malloc(strlen(*dp) + 9); - if (cp2 == NULL) + if (asprintf(&cp2, "^%s/[^/]+/", *dp) < 0) abort(); - strcpy(cp2, "^"); - strcat(cp2, *dp); - strcat(cp2, "/[^/]+/"); if ((i = regcomp(&re2, cp2, REG_EXTENDED|REG_NOSUB)) != 0) {