git: afb21c3a5910 - stable/14 - chflags(1): obey siginfo request on chflagsat(2) failure

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Tue, 06 Feb 2024 00:38:24 UTC
The branch stable/14 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=afb21c3a5910fee2e6792121302840c5c2a69369

commit afb21c3a5910fee2e6792121302840c5c2a69369
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2024-01-30 18:07:59 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2024-02-06 00:37:37 +0000

    chflags(1): obey siginfo request on chflagsat(2) failure
    
    (cherry picked from commit 2954af09f143ed1e484f7ca520e0d2611101e248)
---
 bin/chflags/chflags.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/bin/chflags/chflags.c b/bin/chflags/chflags.c
index 5c9a2f7e7f42..39191c9a3ae2 100644
--- a/bin/chflags/chflags.c
+++ b/bin/chflags/chflags.c
@@ -74,7 +74,7 @@ main(int argc, char *argv[])
 	u_long clear, newflags, set;
 	long val;
 	int Hflag, Lflag, Rflag, fflag, hflag, vflag, xflag;
-	int ch, fts_options, oct, rval;
+	int ch, e, fts_options, oct, rval;
 	char *flags, *ep;
 
 	Hflag = Lflag = Rflag = fflag = hflag = vflag = xflag = 0;
@@ -196,10 +196,16 @@ main(int argc, char *argv[])
 			continue;
 		if (chflagsat(AT_FDCWD, p->fts_accpath, newflags,
 		    atflag) == -1) {
+			e = errno;
 			if (!fflag) {
-				warn("%s", p->fts_path);
+				warnc(e, "%s", p->fts_path);
 				rval = 1;
 			}
+			if (siginfo) {
+				(void)printf("%s: %s\n", p->fts_path,
+				    strerror(e));
+				siginfo = 0;
+			}
 		} else if (vflag || siginfo) {
 			(void)printf("%s", p->fts_path);
 			if (vflag > 1 || siginfo)