Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Apr 2017 13:22:40 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r317050 - in head/usr.bin/grep: . tests
Message-ID:  <201704171322.v3HDMeZE015971@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Mon Apr 17 13:22:39 2017
New Revision: 317050
URL: https://svnweb.freebsd.org/changeset/base/317050

Log:
  bsdgrep: for -r, use the working directory if none specified
  
  This is more sensible than the previous behaviour of grepping stdin,
  and matches newer GNU grep behaviour.
  
  PR:		216307
  Submitted by:	Kyle Evans <kevans91 at ksu.edu>
  Reviewed by:	cem, emaste, ngie
  Relnotes:	Yes
  Differential Revision:	https://reviews.freebsd.org/

Added:
  head/usr.bin/grep/tests/grep_freebsd_test.sh   (contents, props changed)
Modified:
  head/usr.bin/grep/grep.c
  head/usr.bin/grep/tests/Makefile
  head/usr.bin/grep/util.c

Modified: head/usr.bin/grep/grep.c
==============================================================================
--- head/usr.bin/grep/grep.c	Mon Apr 17 13:14:18 2017	(r317049)
+++ head/usr.bin/grep/grep.c	Mon Apr 17 13:22:39 2017	(r317050)
@@ -738,7 +738,7 @@ main(int argc, char *argv[])
 	if ((aargc == 0 || aargc == 1) && !Hflag)
 		hflag = true;
 
-	if (aargc == 0)
+	if (aargc == 0 && dirbehave != DIR_RECURSE)
 		exit(!procfile("-"));
 
 	if (dirbehave == DIR_RECURSE)

Modified: head/usr.bin/grep/tests/Makefile
==============================================================================
--- head/usr.bin/grep/tests/Makefile	Mon Apr 17 13:14:18 2017	(r317049)
+++ head/usr.bin/grep/tests/Makefile	Mon Apr 17 13:22:39 2017	(r317050)
@@ -2,6 +2,7 @@
 
 PACKAGE=	tests
 
+ATF_TESTS_SH+=	grep_freebsd_test
 NETBSD_ATF_TESTS_SH=	grep_test
 
 ${PACKAGE}FILES+=		d_basic.out

Added: head/usr.bin/grep/tests/grep_freebsd_test.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/usr.bin/grep/tests/grep_freebsd_test.sh	Mon Apr 17 13:22:39 2017	(r317050)
@@ -0,0 +1,55 @@
+#
+# Copyright (c) 2017 Kyle Evans <kevans91@ksu.edu>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+atf_test_case grep_r_implied
+grep_r_implied_body()
+{
+	(cd "$(atf_get_srcdir)" && grep -r -e "test" < /dev/null) ||
+	    atf_skip "Implied working directory is not supported with your version of grep(1)"
+	(cd "$(atf_get_srcdir)" && grep -r --exclude="*.out" -e "test" .) > d_grep_r_implied.out
+
+	atf_check -s exit:0 -x \
+	    "(cd $(atf_get_srcdir) && grep -r --exclude=\"*.out\" -e \"test\") | diff d_grep_r_implied.out -"
+}
+
+atf_test_case rgrep
+rgrep_head()
+{
+	atf_set "require.progs" "rgrep"
+}
+rgrep_body()
+{
+	grep -r --exclude="*.out" -e "test" "$(atf_get_srcdir)" > d_grep_r_implied.out
+
+	atf_check -o file:d_grep_r_implied.out rgrep --exclude="*.out" -e "test" "$(atf_get_srcdir)"
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case grep_r_implied
+	atf_add_test_case rgrep
+}

Modified: head/usr.bin/grep/util.c
==============================================================================
--- head/usr.bin/grep/util.c	Mon Apr 17 13:14:18 2017	(r317049)
+++ head/usr.bin/grep/util.c	Mon Apr 17 13:22:39 2017	(r317050)
@@ -111,6 +111,7 @@ grep_tree(char **argv)
 	FTSENT *p;
 	int c, fts_flags;
 	bool ok;
+	const char *wd[] = { ".", NULL };
 
 	c = fts_flags = 0;
 
@@ -128,7 +129,9 @@ grep_tree(char **argv)
 
 	fts_flags |= FTS_NOSTAT | FTS_NOCHDIR;
 
-	if (!(fts = fts_open(argv, fts_flags, NULL)))
+	fts = fts_open((argv[0] == NULL) ?
+	    __DECONST(char * const *, wd) : argv, fts_flags, NULL);
+	if (fts == NULL)
 		err(2, "fts_open");
 	while ((p = fts_read(fts)) != NULL) {
 		switch (p->fts_info) {



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