Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Apr 2014 16:43:37 +0000 (UTC)
From:      Eitan Adler <eadler@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r264462 - head/usr.bin/units
Message-ID:  <201404141643.s3EGhbMn028743@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: eadler
Date: Mon Apr 14 16:43:36 2014
New Revision: 264462
URL: http://svnweb.freebsd.org/changeset/base/264462

Log:
  units(1): support reading multiple units files
  
  GNU units(1) supports reading up to 25 -f options.  We support an arbitrary
  number.

Modified:
  head/usr.bin/units/units.c

Modified: head/usr.bin/units/units.c
==============================================================================
--- head/usr.bin/units/units.c	Mon Apr 14 16:31:56 2014	(r264461)
+++ head/usr.bin/units/units.c	Mon Apr 14 16:43:36 2014	(r264462)
@@ -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];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404141643.s3EGhbMn028743>