Re: git: be61deae0aa2 - main - pkg: clarify argument parsing
- In reply to: Ed Maste : "git: be61deae0aa2 - main - pkg: clarify argument parsing"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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