Fix two corner cases in patches 1 and 4, refactor the code in patches 2 and 3 to prepare the second fix, bonus patches 5 and 6 simplify the code and improve readability. Changes since v1: * Added sign-off. parse-options: recognize abbreviated negated option with arg parse-options: set arg of abbreviated option lazily parse-options: factor out register_abbrev() and struct parsed_option parse-options: detect ambiguous self-negation parse-options: normalize arg and long_name before comparison parse-options: rearrange long_name matching code parse-options.c | 137 ++++++++++++++++++---------------- t/t0040-parse-options.sh | 16 ++++ t/t1502-rev-parse-parseopt.sh | 11 +++ 3 files changed, 100 insertions(+), 64 deletions(-) -- 2.44.0