svn commit: r264462 - head/usr.bin/units

Eitan Adler eadler at FreeBSD.org
Mon Apr 14 16:43:37 UTC 2014


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];


More information about the svn-src-head mailing list