fprintf(out, _(" %s [options] file...\n"), program_invocation_short_name);
fputs(USAGE_OPTIONS, out);
fputs(_(" -n, --no-argument option does not use argument\n"), out);
- fputs(_(" -o, --optional[=<arg>] option argument is optional\n"), out);
+ fputs(_(" --optional[=<arg>] option argument is optional\n"), out);
fputs(_(" -r, --required <arg> option requires an argument\n"), out);
fputs(_(" -z no long option\n"), out);
fputs(_(" --xyzzy a long option only\n"), out);
int c;
enum {
- OPT_XYZZY = CHAR_MAX + 1
+ OPT_XYZZY = CHAR_MAX + 1,
+ OPT_OPTIONAL /* see howto-man-page.txt about short option */
};
static const struct option longopts[] = {
{"no-argument", no_argument, NULL, 'n'},
- {"optional", optional_argument, NULL, 'o'},
{"required", required_argument, NULL, 'r'},
{"xyzzy", no_argument, NULL, OPT_XYZZY},
{"extremely-long-long-option", no_argument, NULL, 'e'},
textdomain(PACKAGE);
atexit(close_stdout);
- while ((c = getopt_long(argc, argv, "no::r:elfVh", longopts, NULL)) != -1)
+ while ((c = getopt_long(argc, argv, "nr:elfVh", longopts, NULL)) != -1)
switch (c) {
case 'n':
- case 'o':
+ case OPT_OPTIONAL:
case 'r':
case OPT_XYZZY:
case 'e':
.\"
.\" Please read `man 7 groff_man' to see how to use the various macros.
.\"
-.TH EXAMPLE "1" "July 2014" "util-linux" "User Commands"
+.TH EXAMPLE "1" "April 2016" "util-linux" "User Commands"
.SH NAME
example \- a util-linux man-page howto
.SH SYNOPSIS
\fB\-n\fR, \fB\-\-no\-argument\fR
This option does not use an argument.
.TP
-\fB\-o\fR, \fB\-\-optional\fR[\fI=argument\fR]
+\fB\-\-optional\fR[\fI=argument\fR]
Tell in this description that the
.I argument
is optional, and what happens when it is or is not given. Notice that the word
.IR num ,
the manual page should say
.IR number .
+.IP
+Notice that after release v2.28 it was decided that introducing new options
+taking optional arguments should be limited to long-only options. This is
+done primarily to avoid problematic behaviour of short options. Imagine for
+example normal option
+.B \-n
+and optional option
+.BR \-o .
+One will expect
+.B command \ \-no
+and
+.B command \ \-on
+to be the same, but in fact the former is two separate options while the
+later will use
+.B n
+as option argument of
+.BR -o .
+So it is best to avoid short forms of optional options altogether.
.TP
\fB\-r\fR, \fB\-\-required\fR \fIargument\fR
Tell in this description that the