From 0dbd779b58602d7eaded0bd02399daf62adc0fd4 Mon Sep 17 00:00:00 2001 From: Strake Date: Sun, 8 Jun 2003 10:15:17 -0500 Subject: grep: add -b flag --- toys/pending/grep.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/toys/pending/grep.c b/toys/pending/grep.c index fad894f0..6f69bdee 100644 --- a/toys/pending/grep.c +++ b/toys/pending/grep.c @@ -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 @@ config GREP -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 @@ static void do_grep (int fd, char *name) { 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; -- cgit v1.2.3