From nobody Mon Feb 16 00:52:06 2026 X-Original-To: dev-commits-src-all@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 4fDkkZ4Xgxz6Rm3b for ; Mon, 16 Feb 2026 00:52: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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fDkkZ2HvHz3mWx for ; Mon, 16 Feb 2026 00:52:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771203126; 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=PqCECwy/ChsHdOjPTsaP1FduY9c0DdUZFoSp+bwxolg=; b=Ez8X7KwgJXfx/oOcytTmVWfUU1Yt677uov3FOpAXe42hMEfcEiR4xRUp1VPAhqhrCgoGO3 qbBEXh5JJr8pFPUmrmWsqxq1aZ8je0eeaftellkXQG4Ndxv0inohndZWY1j9fddGm9iqsr yZRWDpUKgOkstwSn/VQVdelM/XuDXsui7zYl87MmNH5sUjGSZIcRNb+mOJT7NDHo57+kk+ R466J+eQ9kQKtPqizzNNeOHpPTgfTQd8Qt7m9N7OyBQEIT6ZgAC1bWkfqhqDFTVPETEeGz luUrwKCtqg/53RdYDSuUgX746UVtwia2jKM6qKySSQTsUcbtCPFROiX0QiqcqQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1771203126; a=rsa-sha256; cv=none; b=GCUPfDM0idirxu/ivG9MCCr/WuTnCQV2wpaibfhgZ3JNU2lPQ/2k1ubvzVcfK0rgBV16FC EfGUS8xGZAbHXbJ0ctkk9RXWk+1ddqkwpL4zQ4btzwYvz5FHZFnSsdnQG4LamN1eBYE/Fq Ce4vcV/JJ6/kdLYOZaXGnMhjsJzDDrFsN+6Mlk5TiMmd5nX/Ttwssy7W7GIcVrV8GWCxp9 xuC9N7kr/MVZdsAQdS6enW4FVMtF8ZDQx2uv10+/uu+zT3ewX6tLgKbcIYg2WA+E8cQq1S i5HFiXDx6TsPXGhRKCUCHkorQ7CM3mAbV9pYZcLx9wZcaFIPUMfahh4FIBXKkg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771203126; 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=PqCECwy/ChsHdOjPTsaP1FduY9c0DdUZFoSp+bwxolg=; b=hMPGQwUnG44QvcqV9yIQrMoXgjQ+xF4EBfFqGx9tE4r6Li6lSUzGbh72UHnfjdG9kWFOZg EFo2cu8bi+bVwGlvqxTyOtCIlJFNRuOaOw1N+uNBlpwO4HTuHkBdVmaZ1fAiMybkU5odoW HQeiJTR0eI+oBFQ8CGKPlbe9/Em/YbPlHiKPKdD8jAUS4MQY5H+19/BKbuVWAFFyZ66QL6 3tXmzGsoKceAwxni4Rag3xkvTn6Z/WXi6mS9b6jFXPTa8qOHLoWhaOtcgAo/YVS8lNh5YH JHOmuuBKVfU2CiX7SxuNyTgO7gOspmz27gjJIuBV+/qADMUoBOE7ZcxUo3AdYA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fDkkZ1tfXz1GZb for ; Mon, 16 Feb 2026 00:52:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 38e4f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 16 Feb 2026 00:52:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: b45447c6cc21 - stable/15 - runat: Add -h to manipulate a symlink's named attribute dir List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: b45447c6cc21d771c41883a1c4ecc6008f221779 Auto-Submitted: auto-generated Date: Mon, 16 Feb 2026 00:52:06 +0000 Message-Id: <69926a36.38e4f.7681543e@gitrepo.freebsd.org> The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=b45447c6cc21d771c41883a1c4ecc6008f221779 commit b45447c6cc21d771c41883a1c4ecc6008f221779 Author: Rick Macklem AuthorDate: 2026-02-02 22:38:13 +0000 Commit: Rick Macklem CommitDate: 2026-02-16 00:50:04 +0000 runat: Add -h to manipulate a symlink's named attribute dir Lionel Cons requested that a new option be added to runat(1) so that it could be used to manipulate named attributes associated with a symbolic link and not the file the symbolic link refers to). This patch adds the option -h/--nofollow to do this. (cherry picked from commit 4bfb7cfb70e62bc316de9e73cfd63a5c85541154) --- usr.bin/runat/runat.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/usr.bin/runat/runat.c b/usr.bin/runat/runat.c index 99437f3472f4..eb30ef87f2f9 100644 --- a/usr.bin/runat/runat.c +++ b/usr.bin/runat/runat.c @@ -8,17 +8,25 @@ #include #include #include +#include #include #include +#include #include #include #include #include +static struct option longopts[] = { + { "nofollow", no_argument, NULL, 'h' }, + { "-", no_argument, NULL, '-' }, + { NULL, 0, NULL, 0} +}; + static void usage(void) { - (void)fprintf(stderr, "usage: runat " + (void)fprintf(stderr, "usage: runat [-h/--nofollow] [--] " "\n"); exit(1); } @@ -26,15 +34,28 @@ usage(void) int main(int argc, char *argv[]) { - int i, file_fd, nameddir_fd, outsiz; + int ch, file_fd, flags, i, longindex, nameddir_fd, outsiz; char *buf; long named_enabled; size_t pos, siz; + bool done_args; - if (argc <= 2) - usage(); - argv++; - argc--; + flags = O_RDONLY | O_CLOEXEC | O_PATH; + done_args = false; + while (!done_args && (ch = getopt_long(argc, argv, "h-", longopts, + &longindex)) != -1) + switch (ch) { + case 'h': + flags |= O_NOFOLLOW; + break; + case '-': + done_args = true; + break; + default: + usage(); + } + argv += optind; + argc -= optind; if (argc < 2) usage(); @@ -61,7 +82,7 @@ main(int argc, char *argv[]) } buf[pos - 1] = '\0'; - file_fd = open(argv[0], O_RDONLY | O_CLOEXEC, 0); + file_fd = open(argv[0], flags, 0); if (file_fd < 0) err(1, "Cannot open %s", argv[0]); nameddir_fd = openat(file_fd, ".", O_RDONLY | O_CLOEXEC | O_NAMEDATTR,