Because of the way GNU getopt implements optional arguments.  If an
   option takes optional argument *and* that argument is given, it
   must be specified the following way:

   a) when used with short option, the argument must follow that
   option immediately, without any intervening whitespace.

   b) when used with long option, the argument must be separated from
   the option word by exactly one equals sign.

   In other words, if '-c' takes optional argument, then:

      ping -c4
      ping --count=4

   means '-c' with the argument '4'.  On the contrast, this:

      ping -c 4
      ping --count 4

   means '--count' *without* explicit argument plus a standalone
   argument '4'.

Thanks for the explanation.  `--count 4' has never been valid with
argp.

As for the `-c 4' vs. `-c4' case, since we already use short-options
with optional arguments, the behaviour is already weird.  In other
words, users already must think about if they are using a short option
with an optional argument, or not so they cannot depend on this
behaviour.  So I see no harm in changing this, what do you think?


Reply via email to