Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 May 2017 16:55:16 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r319226 - stable/11/usr.bin/uniq
Message-ID:  <201705301655.v4UGtGLp027631@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Tue May 30 16:55:15 2017
New Revision: 319226
URL: https://svnweb.freebsd.org/changeset/base/319226

Log:
  MFC r318316: uniq: allow -c to be used with -d or -u
  
  Bring in some bits from NetBSD and lift the restriction in uniq(1) that
  -c cannot be used with the -d and -u options.  This restriction seems
  unnecessary and is supported at least by GNU, OpenBSD, and NetBSD.  Lift
  the restriction and simplify the show() logic a little bit to maintain
  functionality when -c is provided with -d/-u.
  
  Also with this change, -d and -u are now actually a mutually exclusive,
  albeit valid, combination.  Given that they both indicate opposite
  behavior, uniq(1) will no longer output anything if both -d and -u are
  supplied.  This is in line with NetBSD as well as GNU.
  
  Adjust the man page and usage() to reflect that -c is its own standalone
  option.
  
  PR:		200553
  Submitted by:	Kyle Evans <kevans91@ksu.edu>

Modified:
  stable/11/usr.bin/uniq/uniq.1
  stable/11/usr.bin/uniq/uniq.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.bin/uniq/uniq.1
==============================================================================
--- stable/11/usr.bin/uniq/uniq.1	Tue May 30 16:46:25 2017	(r319225)
+++ stable/11/usr.bin/uniq/uniq.1	Tue May 30 16:55:15 2017	(r319226)
@@ -31,7 +31,7 @@
 .\"     From: @(#)uniq.1	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd December 17, 2009
+.Dd May 15, 2017
 .Dt UNIQ 1
 .Os
 .Sh NAME
@@ -39,7 +39,8 @@
 .Nd report or filter out repeated lines in a file
 .Sh SYNOPSIS
 .Nm
-.Op Fl c | Fl d | Fl u
+.Op Fl c
+.Op Fl d | Fl u
 .Op Fl i
 .Op Fl f Ar num
 .Op Fl s Ar chars

Modified: stable/11/usr.bin/uniq/uniq.c
==============================================================================
--- stable/11/usr.bin/uniq/uniq.c	Tue May 30 16:46:25 2017	(r319225)
+++ stable/11/usr.bin/uniq/uniq.c	Tue May 30 16:55:15 2017	(r319226)
@@ -130,13 +130,6 @@ main (int argc, char *argv[])
 	argc -= optind;
 	argv += optind;
 
-	/* If no flags are set, default is -d -u. */
-	if (cflag) {
-		if (dflag || uflag)
-			usage();
-	} else if (!dflag && !uflag)
-		dflag = uflag = 1;
-
 	if (argc > 2)
 		usage();
 
@@ -183,9 +176,6 @@ main (int argc, char *argv[])
 	}
 	tprev = convert(prevline);
 
-	if (!cflag && uflag && dflag)
-		show(ofp, prevline);
-
 	tthis = NULL;
 	while (getline(&thisline, &thisbuflen, ifp) >= 0) {
 		if (tthis != NULL)
@@ -201,8 +191,7 @@ main (int argc, char *argv[])
 
 		if (comp) {
 			/* If different, print; set previous to new value. */
-			if (cflag || !dflag || !uflag)
-				show(ofp, prevline);
+			show(ofp, prevline);
 			p = prevline;
 			b1 = prevbuflen;
 			prevline = thisline;
@@ -210,8 +199,6 @@ main (int argc, char *argv[])
 			if (tprev != NULL)
 				free(tprev);
 			tprev = tthis;
-			if (!cflag && uflag && dflag)
-				show(ofp, prevline);
 			thisline = p;
 			thisbuflen = b1;
 			tthis = NULL;
@@ -221,8 +208,7 @@ main (int argc, char *argv[])
 	}
 	if (ferror(ifp))
 		err(1, "%s", ifn);
-	if (cflag || !dflag || !uflag)
-		show(ofp, prevline);
+	show(ofp, prevline);
 	exit(0);
 }
 
@@ -287,9 +273,11 @@ static void
 show(FILE *ofp, const char *str)
 {
 
+	if ((dflag && repeats == 0) || (uflag && repeats > 0))
+		return;
 	if (cflag)
 		(void)fprintf(ofp, "%4d %s", repeats + 1, str);
-	if ((dflag && repeats) || (uflag && !repeats))
+	else
 		(void)fprintf(ofp, "%s", str);
 }
 
@@ -352,6 +340,6 @@ static void
 usage(void)
 {
 	(void)fprintf(stderr,
-"usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]]\n");
+"usage: uniq [-c] [-d | -u] [-i] [-f fields] [-s chars] [input [output]]\n");
 	exit(1);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705301655.v4UGtGLp027631>