diff options
author | Ruediger Meier | 2017-06-21 22:17:36 +0200 |
---|---|---|
committer | Ruediger Meier | 2017-06-22 21:34:58 +0200 |
commit | 5aaa966dcd907bef0fcebabf8be06178cc7e5dce (patch) | |
tree | e85d30f1b582a02a6b6c940aa4ea2c8755b64e87 /misc-utils/whereis.c | |
parent | login: add --help and --version (diff) | |
download | kernel-qcow2-util-linux-5aaa966dcd907bef0fcebabf8be06178cc7e5dce.tar.gz kernel-qcow2-util-linux-5aaa966dcd907bef0fcebabf8be06178cc7e5dce.tar.xz kernel-qcow2-util-linux-5aaa966dcd907bef0fcebabf8be06178cc7e5dce.zip |
whereis: add --help and --version
We can use errtryhelp() now and never print usage to stderr.
One may improve all these "bad usage" messages.
Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'misc-utils/whereis.c')
-rw-r--r-- | misc-utils/whereis.c | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c index b5b35f5f5..897a7a213 100644 --- a/misc-utils/whereis.c +++ b/misc-utils/whereis.c @@ -183,8 +183,10 @@ static const char *whereis_type_to_name(int type) } } -static void __attribute__((__noreturn__)) usage(FILE *out) +static void __attribute__((__noreturn__)) usage(void) { + FILE *out = stdout; + fputs(USAGE_HEADER, out); fprintf(out, _(" %s [options] [-BMS <dir>... -f] <name>\n"), program_invocation_short_name); @@ -201,9 +203,12 @@ static void __attribute__((__noreturn__)) usage(FILE *out) fputs(_(" -f terminate <dirs> argument list\n"), out); fputs(_(" -u search for unusual entries\n"), out); fputs(_(" -l output effective lookup paths\n"), out); - fprintf(out, USAGE_MAN_TAIL("whereis(1)")); - exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(USAGE_VERSION, out); + fprintf(out, USAGE_MAN_TAIL("whereis(1)")); + exit(EXIT_SUCCESS); } static void dirlist_add_dir(struct wh_dirlist **ls0, int type, const char *dir) @@ -502,8 +507,18 @@ int main(int argc, char **argv) textdomain(PACKAGE); atexit(close_stdout); - if (argc == 1) - usage(stderr); + if (argc <= 1) { + warnx(_("not enough arguments")); + errtryhelp(EXIT_FAILURE); + } else { + /* first arg may be one of our standard longopts */ + if (!strcmp(argv[1], "--help")) + usage(); + if (!strcmp(argv[1], "--version")) { + printf(UTIL_LINUX_VERSION); + exit(EXIT_SUCCESS); + } + } whereis_init_debug(); @@ -547,8 +562,10 @@ int main(int argc, char **argv) opt_f_missing = 0; break; case 'B': - if (*(arg + 1)) - usage(stderr); + if (*(arg + 1)) { + warnx(_("bad usage")); + errtryhelp(EXIT_FAILURE); + } i++; free_dirlist(&ls, BIN_DIR); construct_dirlist_from_argv( @@ -556,8 +573,10 @@ int main(int argc, char **argv) opt_f_missing = 1; break; case 'M': - if (*(arg + 1)) - usage(stderr); + if (*(arg + 1)) { + warnx(_("bad usage")); + errtryhelp(EXIT_FAILURE); + } i++; free_dirlist(&ls, MAN_DIR); construct_dirlist_from_argv( @@ -565,8 +584,10 @@ int main(int argc, char **argv) opt_f_missing = 1; break; case 'S': - if (*(arg + 1)) - usage(stderr); + if (*(arg + 1)) { + warnx(_("bad usage")); + errtryhelp(EXIT_FAILURE); + } i++; free_dirlist(&ls, SRC_DIR); construct_dirlist_from_argv( @@ -604,9 +625,10 @@ int main(int argc, char **argv) printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; case 'h': - usage(stdout); + usage(); default: - usage(stderr); + warnx(_("bad usage")); + errtryhelp(EXIT_FAILURE); } if (arg_i < i) /* moved to the next argv[] item */ |