Sources Bugzilla – Bug 4690
getopt_long "--arg=val" and "--arg val" are not the same for "optional_argument"
Last modified: 2012-04-08 09:51:04 UTC
When doing long opt processing, --arg=val and --arg val are interchangeable for
either no_argument or required_argument. However when using optional_argument,
optarg is set only if the form --arg=val is used. If the form --arg val is used
then the val is reported as an unknown argv option.
Granted that it may be a vague choice in determining that val is intended for
--arg vs. a value of it's own and therefore best left to the single form of
--arg=val, but all documentation related to getopt() and family refers to the
two forms being interchangeable.
I would like to request future releases of glibc document this in their online
manuals and man pages.
Thank you :)
That's how it has to be. There will be no change.
It "has to be" undocumented?
Perhaps you simply skimmed over this request. Is it really a policy to not
It would be nice if the documentation stated that the two forms are
interchangeable except when using /optional_argument/ where --arg=val is the
only acceptable form because --arg val is entirely ambiguous.
It's a simple matter of correcting the documentation to reflect the actual
implementation in glibc.
Please reconsider adding this small note of distinction to the documentation.
Moving to manual
Can you cite where you saw the two forms are interchangeable?
E.g. man getopt:
A long option normally begins with `--' followed by the long option name. If
the option has a required
argument, it may be written directly after the long option name, separated by
`=', or as the next argument
(ie. separated by whitespace on the command line). If the option has an
optional argument, it must be
written directly after the long option name, separated by `=', if present (if
you add the `=' but nothing
behind it, it is interpreted as if no argument was present; this is a slight
bug, see the BUGS).
No reaction to Jakub's question for several years, thus closing it.
Feel free to reopen after providing the answer.