Re: git: fae467c2212c - main - chflags(1): Fix -f option

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Tue, 30 Jan 2024 17:22:38 UTC
On 30 Jan 2024, at 17:10, Konstantin Belousov <kib@FreeBSD.org> wrote:
> 
> The branch main has been updated by kib:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=fae467c2212ced8e82f5fa385d316445c8874941
> 
> commit fae467c2212ced8e82f5fa385d316445c8874941
> Author:     Ricardo Branco <rbranco@suse.de>
> AuthorDate: 2024-01-29 22:17:47 +0000
> Commit:     Konstantin Belousov <kib@FreeBSD.org>
> CommitDate: 2024-01-30 17:08:03 +0000
> 
>    chflags(1): Fix -f option
> 
>    As stated in the man page, -f must not emit warning on error, and must
>    not set the utility exit code.

But that was already true of the code; this is not what the bug fix is.
The problem was that it would print out the filename with -v (and flags
change attempted with -vv) as if it succeeded, when it didn’t.

But I’m also not entirely convinced this new code is right with respect
to SIGINFO, as it won’t print anything until it reaches a file that
doesn’t cause an error? I’d normally expect SIGINFO to tell me exactly
what it is doing or just did.

Jess

>    PR:     276723
>    Github PR:      https://github.com/freebsd/freebsd-src/pull/1088
>    Reviewed by:    imp, kib
>    MFC after:      1 week
> ---
> bin/chflags/chflags.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/bin/chflags/chflags.c b/bin/chflags/chflags.c
> index b92d5b6439f5..0972240558df 100644
> --- a/bin/chflags/chflags.c
> +++ b/bin/chflags/chflags.c
> @@ -182,9 +182,11 @@ main(int argc, char *argv[])
> if (newflags == p->fts_statp->st_flags)
> continue;
> if (chflagsat(AT_FDCWD, p->fts_accpath, newflags,
> -    atflag) == -1 && !fflag) {
> - warn("%s", p->fts_path);
> - rval = 1;
> +    atflag) == -1) {
> + if (!fflag) {
> + warn("%s", p->fts_path);
> + rval = 1;
> + }
> } else if (vflag || siginfo) {
> (void)printf("%s", p->fts_path);
> if (vflag > 1 || siginfo)