# HG changeset patch # User Strake # Date 1055085317 18000 # Node ID 31e91deb0824a33d50cb5d489f91ea393c7c44b3 # Parent 55794a3d35c5ff589357faed32dbf6592375a8cf grep: add -b flag diff -r 55794a3d35c5 -r 31e91deb0824 toys/pending/grep.c --- a/toys/pending/grep.c Sun Jun 08 10:09:05 2003 -0500 +++ b/toys/pending/grep.c Sun Jun 08 10:15:17 2003 -0500 @@ -5,13 +5,13 @@ * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ * See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html -USE_GREP(NEWTOY(grep, "EFHahinosvwclqe*f*m#", TOYFLAG_BIN)) +USE_GREP(NEWTOY(grep, "EFHabhinosvwclqe*f*m#", TOYFLAG_BIN)) config GREP bool "grep" default n help - usage: grep [-clq] [-EFHhinosvw] (-e RE | -f REfile | RE) [file...] + usage: grep [-clq] [-EFHbhinosvw] (-e RE | -f REfile | RE) [file...] modes: default: print lines from each file what match regular expression RE. @@ -23,6 +23,7 @@ -E: extended RE syntax -F: fixed RE syntax, i.e. all characters literal -H: print file name + -b: print byte offset of match -h: not print file name -i: case insensitive -n: print line numbers @@ -73,6 +74,8 @@ default: if (!(toys.optflags & FLAG_h)) printf ("%s:", name); if ( (toys.optflags & FLAG_n)) printf ("%d:", n); + if ( (toys.optflags & FLAG_b)) printf ("%ld:", lseek (0, 0, SEEK_CUR) - strlen (y) + + (toys.optflags & FLAG_o ? matches[2].rm_so : 0)); if (!(toys.optflags & FLAG_o)) fputs (x, stdout); else { y += matches[2].rm_so;