5 POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/getopt.html}
7 Gnulib module: getopt-posix or getopt-gnu
9 The module @code{getopt-gnu} has support for ``long options'' and for
10 ``options that take optional arguments''. Compared to the API defined by POSIX,
11 it adds a header file @code{<getopt.h>} and a function @code{getopt_long}.
13 Portability problems fixed by either Gnulib module @code{getopt-posix} or @code{getopt-gnu}:
16 The @code{getopt} function keeps some internal state that cannot be explicitly
17 reset on some platforms:
20 The value of @code{optind} after a missing required argument is wrong
22 Mac OS X 10.5, AIX 7.1.
25 Portability problems fixed by Gnulib module @code{getopt-gnu}:
28 This function is missing on some platforms:
31 The function @code{getopt} does not support the @samp{+} flag in the options
32 string on some platforms:
33 Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11.
35 The function @code{getopt} does not obey the combination of @samp{+}
36 and @samp{:} flags in the options string on some platforms:
39 The function @code{getopt} does not obey the @samp{-} flag in the options
40 string when @env{POSIXLY_CORRECT} is set on some platforms:
43 The function @code{getopt} does not support options with optional arguments
45 Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1,
46 Solaris 11 2010-11, Cygwin 1.5.x.
48 The function @code{getopt_long} is missing on some platforms:
49 AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, MSVC 9, Interix 3.5.
51 The function @code{getopt_long} does not support abbreviated long options
52 where all disambiguations are equivalent on some platforms:
55 The function @code{getopt_long_only} is missing on some platforms:
56 Mac OS X 10.3, FreeBSD 5.2.1, NetBSD 5.0, AIX 5.1, HP-UX 11, IRIX 6.5,
57 OSF/1 5.1, Solaris 9, mingw, MSVC 9, Interix 3.5.
59 This function crashes if the option string includes @code{W;} on some
64 Portability problems not fixed by Gnulib:
67 The default behavior of the glibc implementation of @code{getopt} allows
68 mixing option and non-option arguments on the command line in any order.
69 Other implementations, such as the one in Cygwin, enforce strict POSIX
70 compliance: they require that the option arguments precede the non-option
71 arguments. This is something to watch out in your program's
74 The glibc implementation allows a complete reset of the environment,
75 including re-checking for @env{POSIXLY_CORRECT}, by setting
76 @code{optind} to 0. Several BSD implementations provide @code{optreset},
77 causing a reset by setting it non-zero, although it does not
78 necessarily re-read @env{POSIXLY_CORRECT}. Solaris @code{getopt} does
79 not support either reset method, but does not maintain state that
80 needs the extra level of reset.
82 On some platforms, this function does not set the stream error
83 indicator on attempts to write to a read-only stream:
84 glibc 2.13, Cygwin 1.7.9.