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);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to