svn commit: r333156 - head/usr.bin/uniq

Kyle Evans kevans at FreeBSD.org
Wed May 2 01:17:10 UTC 2018


Author: kevans
Date: Wed May  2 01:17:08 2018
New Revision: 333156
URL: https://svnweb.freebsd.org/changeset/base/333156

Log:
  uniq(1): Add some long options
  
  These match GNU uniq(1) where appropriate for compatibility's sake.
  
  While here, re-sort options alphabetically by the short-option.
  
  MFC after:	1 month

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

Modified: head/usr.bin/uniq/uniq.1
==============================================================================
--- head/usr.bin/uniq/uniq.1	Wed May  2 01:04:13 2018	(r333155)
+++ head/usr.bin/uniq/uniq.1	Wed May  2 01:17:08 2018	(r333156)
@@ -31,7 +31,7 @@
 .\"     From: @(#)uniq.1	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd May 15, 2017
+.Dd May 1, 2018
 .Dt UNIQ 1
 .Os
 .Sh NAME
@@ -71,34 +71,34 @@ so it may be necessary to sort the files first.
 .Pp
 The following options are available:
 .Bl -tag -width Ds
-.It Fl c
+.It Fl c , Fl -count
 Precede each output line with the count of the number of times the line
 occurred in the input, followed by a single space.
-.It Fl d
+.It Fl d , Fl -repeated
 Only output lines that are repeated in the input.
-.It Fl f Ar num
+.It Fl f Ar num , Fl -skip-fields Ar num
 Ignore the first
 .Ar num
 fields in each input line when doing comparisons.
 A field is a string of non-blank characters separated from adjacent fields
 by blanks.
 Field numbers are one based, i.e., the first field is field one.
-.It Fl s Ar chars
+.It Fl i , Fl -ignore-case
+Case insensitive comparison of lines.
+.It Fl s Ar chars , Fl -skip-chars Ar chars
 Ignore the first
 .Ar chars
 characters in each input line when doing comparisons.
 If specified in conjunction with the
-.Fl f
+.Fl f , Fl -unique
 option, the first
 .Ar chars
 characters after the first
 .Ar num
 fields will be ignored.
 Character numbers are one based, i.e., the first character is character one.
-.It Fl u
+.It Fl u , Fl -unique
 Only output lines that are not repeated in the input.
-.It Fl i
-Case insensitive comparison of lines.
 .\".It Fl Ns Ar n
 .\"(Deprecated; replaced by
 .\".Fl f ) .

Modified: head/usr.bin/uniq/uniq.c
==============================================================================
--- head/usr.bin/uniq/uniq.c	Wed May  2 01:04:13 2018	(r333155)
+++ head/usr.bin/uniq/uniq.c	Wed May  2 01:17:08 2018	(r333156)
@@ -51,6 +51,7 @@ static const char rcsid[] =
 #include <ctype.h>
 #include <err.h>
 #include <errno.h>
+#include <getopt.h>
 #include <limits.h>
 #include <locale.h>
 #include <nl_types.h>
@@ -66,6 +67,17 @@ static const char rcsid[] =
 static int cflag, dflag, uflag, iflag;
 static int numchars, numfields, repeats;
 
+static const struct option long_opts[] =
+{
+	{"count",	no_argument,		NULL, 'c'},
+	{"repeated",	no_argument,		NULL, 'd'},
+	{"skip-fields",	required_argument,	NULL, 'f'},
+	{"ignore-case",	no_argument,		NULL, 'i'},
+	{"skip-chars",	required_argument,	NULL, 's'},
+	{"unique",	no_argument,		NULL, 'u'},
+	{NULL,		no_argument,		NULL, 0}
+};
+
 static FILE	*file(const char *, const char *);
 static wchar_t	*convert(const char *);
 static int	 inlcmp(const char *, const char *);
@@ -99,7 +111,8 @@ main (int argc, char *argv[])
 	(void) setlocale(LC_ALL, "");
 
 	obsolete(argv);
-	while ((ch = getopt(argc, argv, "cdif:s:u")) != -1)
+	while ((ch = getopt_long(argc, argv, "+cdif:s:u", long_opts,
+	    NULL)) != -1)
 		switch (ch) {
 		case 'c':
 			cflag = 1;


More information about the svn-src-head mailing list