units(1): support reading multiple units files

GNU units(1) supports reading up to 25 -f options.  We support an arbitrary
number.
This commit is contained in:
Eitan Adler 2014-04-14 16:43:36 +00:00
parent cf07c70df7
commit 3af082017a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=264462

View File

@ -153,8 +153,6 @@ readunits(const char *userfile)
errx(1, "can't find units file '%s'", UNITSFILE);
}
}
if (cap_enter() < 0 && errno != ENOSYS)
err(1, "unable to enter capability mode");
cap_rights_init(&unitfilerights, CAP_READ, CAP_FSTAT);
if (cap_rights_limit(fileno(unitfile), &unitfilerights) < 0
&& errno != ENOSYS)
@ -693,19 +691,23 @@ main(int argc, char **argv)
const char * havestr;
const char * wantstr;
int optchar;
char *userfile;
bool quiet;
bool readfile;
History *inhistory;
EditLine *el;
HistEvent ev;
int inputsz;
userfile = NULL;
quiet = false;
readfile = false;
while ((optchar = getopt(argc, argv, "Vqf:")) != -1) {
switch (optchar) {
case 'f':
userfile = optarg;
readfile = true;
if (strlen(optarg) == 0)
readunits(NULL);
else
readunits(optarg);
break;
case 'q':
quiet = true;
@ -719,8 +721,8 @@ main(int argc, char **argv)
}
}
if (optind != argc - 2 && optind != argc)
usage();
if (!readfile)
readunits(NULL);
inhistory = history_init();
el = el_init(argv[0], stdin, stdout, stderr);
@ -732,8 +734,9 @@ main(int argc, char **argv)
history(inhistory, &ev, H_SETSIZE, 800);
if (inhistory == 0)
err(1, "Could not initalize history");
readunits(userfile);
if (cap_enter() < 0 && errno != ENOSYS)
err(1, "unable to enter capability mode");
if (optind == argc - 2) {
havestr = argv[optind];