svn commit: r332374 - head/usr.bin/head

Kyle Evans kevans at FreeBSD.org
Tue Apr 10 14:44:08 UTC 2018


Author: kevans
Date: Tue Apr 10 14:44:07 2018
New Revision: 332374
URL: https://svnweb.freebsd.org/changeset/base/332374

Log:
  head(1): Provide long options
  
  Provide long options --bytes and --lines to match -c and -n respectively.
  This improves head(1)'s compatibility with its GNU counterpart in a sensible
  way.
  
  Reviewed by:	eadler (previous version)
  MFC after:	3 days
  Differential Revision:	https://reviews.freebsd.org/D14139

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

Modified: head/usr.bin/head/head.1
==============================================================================
--- head/usr.bin/head/head.1	Tue Apr 10 14:42:24 2018	(r332373)
+++ head/usr.bin/head/head.1	Tue Apr 10 14:44:07 2018	(r332374)
@@ -28,7 +28,7 @@
 .\"	@(#)head.1	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd March 16, 2013
+.Dd April 10, 2018
 .Dt HEAD 1
 .Os
 .Sh NAME
@@ -48,6 +48,18 @@ files are specified.
 If
 .Ar count
 is omitted it defaults to 10.
+.Pp
+The following options are available:
+.Bl -tag -width indent
+.It Fl c Ar bytes , Fl -bytes Ns = Ns Ar bytes
+Print
+.Ar bytes
+of each of the specified files.
+.It Fl n Ar count , Fl -lines Ns = Ns Ar count
+Print
+.Ar count
+lines of each of the specified files.
+.El
 .Pp
 If more than a single file is specified, each file is preceded by a
 header consisting of the string

Modified: head/usr.bin/head/head.c
==============================================================================
--- head/usr.bin/head/head.c	Tue Apr 10 14:42:24 2018	(r332373)
+++ head/usr.bin/head/head.c	Tue Apr 10 14:44:07 2018	(r332374)
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
 
 #include <ctype.h>
 #include <err.h>
+#include <getopt.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -64,6 +65,13 @@ static void head_bytes(FILE *, off_t);
 static void obsolete(char *[]);
 static void usage(void);
 
+static const struct option long_opts[] =
+{
+	{"bytes",	required_argument,	NULL, 'c'},
+	{"lines",	required_argument,	NULL, 'n'},
+	{NULL,		no_argument,		NULL, 0}
+};
+
 int
 main(int argc, char *argv[])
 {
@@ -74,7 +82,7 @@ main(int argc, char *argv[])
 	char *ep;
 
 	obsolete(argv);
-	while ((ch = getopt(argc, argv, "n:c:")) != -1)
+	while ((ch = getopt_long(argc, argv, "+n:c:", long_opts, NULL)) != -1)
 		switch(ch) {
 		case 'c':
 			bytecnt = strtoimax(optarg, &ep, 10);


More information about the svn-src-all mailing list