Proposal: fix for getOpt (missing feature)

Jaap Weel jaapweel at gmail.com
Tue Jun 26 04:16:34 EDT 2007


> It is the behaviour of GNU GetOpt, which is very widely used and
> understood.

No, it isn't. At least, it's not the default. The GNU libc manual
encourages the use of getopt_long(). It also provides an alternative
called getopt_long_only() for programs that want to be backward
compatible.

Here's the relevant bit from the libc manual:

     Since long option names were used before before the `getopt_long'
  options was invented there are program interfaces which require
  programs to recognize options like `-option value' instead of
  `--option value'.  To enable these programs to use the GNU getopt
  functionality there is one more function available.

   -- Function: int getopt_long_only (int ARGC, char *const *ARGV,
            const char *SHORTOPTS, const struct option *LONGOPTS, int
            *INDEXPTR)

       The `getopt_long_only' function is equivalent to the
       `getopt_long' function but it allows to specify the user of the
       application to pass long options with only `-' instead of `--'.
       The `--' prefix is still recognized but instead of looking
       through the short options if a `-' is seen it is first tried
       whether this parameter names a long option.  If not, it is
       parsed as a short option.

       Assuming `getopt_long_only' is used starting an application
       with

              app -foo

       the `getopt_long_only' will first look for a long option named
       `foo'.  If this is not found, the short options `f', `o', and
       again `o' are recognized.

--

   /jaap






More information about the Libraries mailing list