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)