Skip to content

Three --structure and --long-names spellings mirror the wrong thing at exit 0 #1434

Description

@xroche

Three --structure spellings are accepted, mirror something wrong, and exit 0. All three were measured while reviewing #1427 and #1418, stated in #1427's body as known gaps, and left unfixed there because that PR exempts --structure (it is the one paramn row, and #1418 owns its value rules).

--structure=I0 is byte-identical to -I0: exit 0 with index.html, backblue.gif and fade.gif silently missing. The value glues onto the short form and its characters are re-parsed as further short options — the same mechanism #1426 fixed for the 27 param rows, which --structure is exempt from. #1418's %-free rule does not catch it either, because 8I0 and I0 are deliberately allowed to glue.

--structure=on <URL> maps to a bare -N, which consumes the next argv word. Exit 0, nothing mirrored, the URL swallowed as the structure value.

--long-names= (an empty value) still lands on DOS 8.3 names. This is the headline symptom of #1426 surviving by another spelling: sscanf converts nothing from an empty string, savename_83 keeps its default, and case 0 maps that to DOS.

The first two are --structure-specific and want a rule on the paramn class, alongside the digit and on/off glue rules #1418 added. The third is the param class and wants the empty value refused or defaulted deliberately rather than silently reaching 8.3 — decide which, since an empty value is a plausible way to mean "leave it alone".

None is a regression; all three predate tonight's work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions