> The following corrects a bad example in the manual page. It also
> emphasizes the issue. See, for example, #655685, which was filed for
> procps.
Hi. Upstream maintainer of man-pages here. I'm not at all sure that
the problem in #655685 is because of getopt(). (How did you conclude
that it is?)
Allowing a space between option character and argument is longstanding
UNIX (and Linux behavior), and as far as I can see POSIX is explicit
in allowing it--POSIX.1-2001 contains this text (note point 2):
The getopt() function shall return the next option character
(if one is found) from argv that matches a character in opt‐
string, if there is one that matches. If the option takes an
argument, getopt() shall set the variable optarg to point to
the option-argument as follows:
1. If the option was the last character in the string pointed
to by an element of argv, then optarg shall contain the
next element of argv, and optind shall be incremented by 2.
If the resulting value of optind is greater than argc, this
indicates a missing option-argument, and getopt() shall
return an error indication.
2. Otherwise, optarg shall point to the string following the
option character in that element of argv, and optind shall
be incremented by 1.
Thanks,
Michael
> --- a/getopt.3 2012-03-06 11:33:58.252003620 +0200
> +++ b/getopt.3 2012-03-06 11:33:36.000000000 +0200
> @@ -371,14 +371,28 @@ has a technical error described in POSIX
> The GNU
> implementation (and probably all other implementations) implements the
> correct behavior rather than that specified.
> +.PP
> +There should be no white space between a short option name
> +and its possible arguments.
> +That is, use
> +.IR -unsecs
> +, not
> +.IR "-u nsecs" .
> +With long options, use =, with no space characters either before or
> +after it. That is,
> +.IR --units=nsecs
> +, nothing else.
> .SH EXAMPLE
> The following trivial example program uses
> .BR getopt ()
> to handle two program options:
> .IR \-n ,
> with no associated value; and
> -.IR "\-t val" ,
> +.IR "\-tval" ,
> which expects an associated value.
> +Note that
> +.IR "\-t val" ,
> +with a space, does not work.
> .nf
> .sp
> #include <unistd.h>
>
>
>
>
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface"; http://man7.org/tlpi/
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]