Re: git: fae467c2212c - main - chflags(1): Fix -f option
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)