Re: git: be61deae0aa2 - main - pkg: clarify argument parsing

From: Cy Schubert <Cy.Schubert_at_cschubert.com>
Date: Mon, 05 May 2025 14:48:02 UTC
In message <202504300101.53U112aW053506@gitrepo.freebsd.org>, Ed Maste 
writes:
> The branch main has been updated by emaste:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=be61deae0aa2923bb9908fc5b37b3571
> 2603e622
>
> commit be61deae0aa2923bb9908fc5b37b35712603e622
> Author:     Isaac Freund <ifreund@freebsdfoundation.org>
> AuthorDate: 2025-04-23 10:27:35 +0000
> Commit:     Ed Maste <emaste@FreeBSD.org>
> CommitDate: 2025-04-30 01:00:17 +0000
>
>     pkg: clarify argument parsing
>     
>     Currently pkg parses all arguments and subcommands in a single
>     getopt_long() loop. This results in quite a bit of accidental
>     complexity, especially around the -r option for the bootstrap and add
>     subcommands.
>     
>     This also results in the undocumented behavior of all options understood
>     by pkg(7) being accepted anywhere in the argument list regardless of
>     their position. This contradicts the behavior of pkg(8) and I find it
>     quite unexpected.
>     
>     This patch splits the argument parsing done by pkg(7) into two phases
>     for global options and subcommand options. This gives behavior that
>     matches pkg(8), accepting the subset of pkg(8) options supported by
>     pkg(7) in the exact same positions that pkg(8) accepts them.
>     
>     This is however a somewhat breaking change, as options are no longer
>     accepted by pkg(7) in places they are rejected by pkg(8). For example,
>     `pkg -f bootstrap` no longer works, only `pkg bootstrap -f`.
>     
>     The original motivation for writing this patch was investigating support
>     for --rootdir in pkg(7). Since pkg(8) uses -r as the short form for
>     both --rootdir and --repository depending on the position, I decided
>     that pkg(7) needed to be brought inline with pkg(8)'s argument parsing
>     behavior to avoid confusion.
>     
>     This patch also gets rid of args_add_message (unused since 40b9f924b1)
>     
>     Relnotes:       yes
>     Reviewed by:    bapt
>     Sponsored by:   The FreeBSD Foundation
>     Differential Revision: https://reviews.freebsd.org/D49977
> ---
>  usr.sbin/pkg/pkg.7 |   5 +-
>  usr.sbin/pkg/pkg.c | 174 ++++++++++++++++++++++++++-------------------------
> --
>  2 files changed, 87 insertions(+), 92 deletions(-)
>

Hi Ed,

This commit is causing option parsing errors. Please see the discussion 
about it on -current.

I've reverted it locally. Problem fixed.


-- 
Cheers,
Cy Schubert <Cy.Schubert@cschubert.com>
FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy@nwtime.org>    Web:  https://nwtime.org

			e^(i*pi)+1=0