#include "debug.h"
-UL_DEBUG_DEFINE_MASK(whereis);
+static UL_DEBUG_DEFINE_MASK(whereis);
UL_DEBUG_DEFINE_MASKNAMES(whereis) = UL_DEBUG_EMPTY_MASKNAMES;
#define WHEREIS_DEBUG_INIT (1 << 1)
#define DBG(m, x) __UL_DBG(whereis, WHEREIS_DEBUG_, m, x)
#define ON_DBG(m, x) __UL_DBG_CALL(whereis, WHEREIS_DEBUG_, m, x)
+#define UL_DEBUG_CURRENT_MASK UL_DEBUG_MASK(whereis)
+#include "debugobj.h"
+
static char uflag = 0;
/* supported types */
static const char *bindirs[] = {
"/usr/bin",
"/usr/sbin",
+#if defined(MULTIARCHTRIPLET)
+ "/lib/" MULTIARCHTRIPLET,
+ "/usr/lib/" MULTIARCHTRIPLET,
+ "/usr/local/lib/" MULTIARCHTRIPLET,
+#endif
"/usr/lib",
"/usr/lib64",
"/bin",
static void whereis_init_debug(void)
{
- __UL_INIT_DEBUG(whereis, WHEREIS_DEBUG_, 0, WHEREIS_DEBUG);
+ __UL_INIT_DEBUG_FROM_ENV(whereis, WHEREIS_DEBUG_, 0, WHEREIS_DEBUG);
}
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);
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);
+ printf(USAGE_HELP_OPTIONS(16));
+ printf(USAGE_MAN_TAIL("whereis(1)"));
+ exit(EXIT_SUCCESS);
}
static void dirlist_add_dir(struct wh_dirlist **ls0, int type, const char *dir)
DBG(SEARCH, ul_debug("lookup dirs for '%s' (%s), want: %s %s %s",
patbuf, pattern,
want & BIN_DIR ? "bin" : "",
- want & MAN_DIR ? "min" : "",
+ want & MAN_DIR ? "man" : "",
want & SRC_DIR ? "src" : ""));
p = strrchr(patbuf, '.');
if (p)
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();
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(
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(
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(
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 */