Re: add non-option reordering to in-tree getopt_long
Nathan Bossart <nathandbossart@gmail.com>
From: Nathan Bossart <nathandbossart@gmail.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: michael@paquier.xyz, noah@leadboat.com, pgsql-hackers@postgresql.org
Date: 2023-07-10T18:12:37Z
Lists: pgsql-hackers
On Mon, Jul 10, 2023 at 04:57:11PM +0900, Kyotaro Horiguchi wrote:
> + if (!force_nonopt && place[0] == '-' && place[1])
> + {
> + if (place[1] != '-' || place[2])
> + break;
> +
> + optind++;
> + force_nonopt = true;
> + continue;
> + }
>
> The first if looks good to me, but the second if is a bit hard to get the meaning at a glance. "!(place[1] == '-' && place[2] == 0)" is easier to read *to me*. Or I'm fine with the following structure here.
I'd readily admit that it's tough to read these lines. I briefly tried to
make use of strcmp() to improve readability, but I wasn't having much luck.
I'll give it another try.
>> if (!force_nonopt ... )
>> {
>> if (place[1] == '-' && place[2] == 0)
>> {
>> optind+;
>> force_nonopt = true;
>> continue;
>> }
>> break;
>> }
>
> (To be honest, I see the goto looked clear than for(;;)..)
Okay. I don't mind adding it back if it improves readability.
--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com
Commits
-
Simplify option handling in pg_ctl.
- 03d1080d8a95 17.0 landed
-
Teach in-tree getopt_long() to move non-options to the end of argv.
- 411b72034300 17.0 landed