1 /* Please use this file as a template when introducing new command to
5 * SPDX-License-Identifier: GPL-2.0-or-later
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * fixme-command-name - purpose of it
14 * Copyright (c) 20nn Example Commercial, Inc
15 * Written by Your Name <you@example.com>
23 #include "closestream.h"
27 * FIXME: remove this comment.
28 * Other usage() constants that are not demonstrated below:
29 * USAGE_FUNCTIONS USAGE_COMMANDS USAGE_COLUMNS
31 static void __attribute__((__noreturn__
)) usage(void)
33 fputs(USAGE_HEADER
, stdout
);
34 fprintf(stdout
, _(" %s [options] file...\n"), program_invocation_short_name
);
36 fputs(USAGE_SEPARATOR
, stdout
);
37 fputs(_("Short program description."), stdout
);
39 fputs(USAGE_OPTIONS
, stdout
);
40 fputs(_(" -n, --no-argument option does not use argument"), stdout
);
41 fputs(_(" --optional[=<arg>] option argument is optional"), stdout
);
42 fputs(_(" -r, --required <arg> option requires an argument"), stdout
);
43 fputs(_(" -z no long option"), stdout
);
44 fputs(_(" --xyzzy a long option only"), stdout
);
45 fputs(_(" -e, --extremely-long-long-option\n"
46 " use next line for description when needed"), stdout
);
47 fputs(_(" -l, --long-explanation an example of very verbose, and chatty option\n"
48 " description on two, or multiple lines, where the\n"
49 " consecutive lines are intended by two spaces"), stdout
);
50 fputs(_(" -f, --foobar next option description resets indent"), stdout
);
51 fputs(USAGE_SEPARATOR
, stdout
);
52 fprintf(stdout
, USAGE_HELP_OPTIONS(25)); /* char offset to align option descriptions */
53 fprintf(stdout
, USAGE_MAN_TAIL("fixme-command-name(1)"));
57 int main(int argc
, char **argv
)
62 OPT_XYZZY
= CHAR_MAX
+ 1,
63 OPT_OPTIONAL
/* see howto-man-page.txt about short option */
65 static const struct option longopts
[] = {
66 { "no-argument", no_argument
, NULL
, 'n' },
67 { "optional", optional_argument
, NULL
, OPT_OPTIONAL
},
68 { "required", required_argument
, NULL
, 'r' },
69 { "extremely-long-long-option", no_argument
, NULL
, 'e' },
70 { "xyzzy", no_argument
, NULL
, OPT_XYZZY
},
71 { "long-explanation", no_argument
, NULL
, 'l' },
72 { "foobar", no_argument
, NULL
, 'f' },
73 { "version", no_argument
, NULL
, 'V' },
74 { "help", no_argument
, NULL
, 'h' },
78 setlocale(LC_ALL
, "");
79 bindtextdomain(PACKAGE
, LOCALEDIR
);
81 close_stdout_atexit();
83 while ((c
= getopt_long(argc
, argv
, "nr:zelfVh", longopts
, NULL
)) != -1)
95 print_version(EXIT_SUCCESS
);
99 errtryhelp(EXIT_FAILURE
);