grep(1), when invoked with the -R option but no path, displays a
"recursive search of stdin" warning and acts as if -R had not been
specified.

GNU grep, in that case, will perform a recursive search in the current
directory, i.e. uses an implicit "." path if none is given.

This is IMO a much better behaviour. What about the following diff?

Index: grep.c
===================================================================
RCS file: /OpenBSD/src/usr.bin/grep/grep.c,v
retrieving revision 1.62
diff -u -p -r1.62 grep.c
--- grep.c      7 Oct 2019 20:04:00 -0000       1.62
+++ grep.c      2 Dec 2019 08:27:09 -0000
@@ -473,8 +473,12 @@ main(int argc, char *argv[])
                ++argv;
        }
 
-       if (Rflag && argc == 0)
-               warnx("warning: recursive search of stdin");
+       if (Rflag && argc == 0) {
+               /* default to . if no path given */
+               static char *dot_argv[] = { ".", NULL };
+               argv = dot_argv;
+               argc = 1;
+       }
        if (Eflag)
                cflags |= REG_EXTENDED;
        if (Fflag)

Reply via email to