{
struct wh_dirlist *ls = NULL;
int want = ALL_DIRS;
- int i, want_resetable = 0;
+ int i, want_resetable = 0, opt_f_missing = 0;
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
switch (*arg) {
case 'f':
+ opt_f_missing = 0;
break;
case 'u':
uflag = 1;
+ opt_f_missing = 0;
break;
case 'B':
if (*(arg + 1))
free_dirlist(&ls, BIN_DIR);
construct_dirlist_from_argv(
&ls, &i, argc, argv, BIN_DIR);
+ opt_f_missing = 1;
break;
case 'M':
if (*(arg + 1))
free_dirlist(&ls, MAN_DIR);
construct_dirlist_from_argv(
&ls, &i, argc, argv, MAN_DIR);
+ opt_f_missing = 1;
break;
case 'S':
if (*(arg + 1))
free_dirlist(&ls, SRC_DIR);
construct_dirlist_from_argv(
&ls, &i, argc, argv, SRC_DIR);
+ opt_f_missing = 1;
break;
case 'b':
if (want_resetable) {
want_resetable = 0;
}
want = want == ALL_DIRS ? BIN_DIR : want | BIN_DIR;
+ opt_f_missing = 0;
break;
case 'm':
if (want_resetable) {
want_resetable = 0;
}
want = want == ALL_DIRS ? MAN_DIR : want | MAN_DIR;
+ opt_f_missing = 0;
break;
case 's':
if (want_resetable) {
want_resetable = 0;
}
want = want == ALL_DIRS ? SRC_DIR : want | SRC_DIR;
+ opt_f_missing = 0;
break;
case 'l':
list_dirlist(ls);
}
free_dirlist(&ls, ALL_DIRS);
+ if (opt_f_missing)
+ errx(EXIT_FAILURE, _("option -f is missing"));
return EXIT_SUCCESS;
}