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