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 document something? 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.