Hi folks, I stumbled across a bug in /usr/bin/grep and noticed that this had been fixed upstream a long time ago[0], but before creating a PR I wanted to understand if I'm missing something.
The bug is quite "simple": when using "--devices=skip", grep fails to match on stdin, because stdin is (wrongly) considered a device. A current /usr/pkg/bin/ggrep works of course, but /usr/bin/grep appears to be stuck on version 2.5.1a, probably due to upstream's license change[1] to GPLv3, making it incompatible with the BSD license. Anyway, I wanted to see if I can tinker with the sources in /usr/src/usr.bin/grep somewhat to find out if I can manage to come up with a fix here, but _before_ even starting to do that I noticed that I could not reproduce the bug: $ cd /usr/src/usr.bin/grep/ $ make $ echo foo | ./grep --devices=skip foo foo But why isn't /usr/bin/grep working then? After a whole "./build.sh distribution" and "./build.sh install=/" the /usr/bin/grep binary sure has been replaced, and is showing the bug described above - but that binary differs from all^W most the other grep executables that were created on the way, see below. So, I guess my questions are: * Why is /usr/src/usr.bin/grep/grep different from /usr/bin/grep? * Why is /usr/bin/grep behaving differently than /rescue/grep? * Why aren't we just using the FreeBSD grep version 2.6? :-) Thanks, Christian. ==== Trying all the grep executables found on my system: $ for g in ...; do echo "### ${g}"; echo foo | ${g} --devices=skip foo || echo "FAIL"; echo; done ### /usr/bin/grep FAIL ### /rescue/grep foo ### /usr/src/usr.bin/grep/grep foo ### /var/pkgtmp/obj/tools/grep/grep foo ### /var/pkgtmp/obj/external/gpl2/grep/bin/grep FAIL ### /var/pkgtmp/obj/destdir.amd64/usr/bin/grep FAIL ### /var/pkgtmp/obj/destdir.amd64/rescue/grep foo ### /var/pkgtmp/work/textproc/grep/work/grep-3.11/src/grep foo ### /usr/pkg/bin/ggrep foo ### /usr/pkg/bin/bgrep foo [0] https://bugzilla.redhat.com/show_bug.cgi?id=818775 [1] https://git.savannah.gnu.org/cgit/grep.git/commit/?id=49177f1 -- BOFH excuse #87: Password is too complex to decrypt