diff options
author | Eric Andersen | 2001-04-09 23:26:31 +0000 |
---|---|---|
committer | Eric Andersen | 2001-04-09 23:26:31 +0000 |
commit | 303dd28bb0120c8b12c886cadb2d25d1b8fea08b (patch) | |
tree | 277feaf473a69bc582eec25e094a50fd8bf1a903 /findutils/grep.c | |
parent | 4391a16c92cef744fc715cb7347b7b71fc8f312e (diff) | |
download | busybox-303dd28bb0120c8b12c886cadb2d25d1b8fea08b.zip busybox-303dd28bb0120c8b12c886cadb2d25d1b8fea08b.tar.gz |
Make 'grep -l' work
Diffstat (limited to 'findutils/grep.c')
-rw-r--r-- | findutils/grep.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/findutils/grep.c b/findutils/grep.c index 8c67976..b519adf 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -41,6 +41,7 @@ static int print_count_only = 0; static int be_quiet = 0; static int invert_search = 0; static int suppress_err_msgs = 0; +static int files_that_match = 0; #ifdef BB_FEATURE_GREP_CONTEXT extern char *optarg; /* in getopt.h */ @@ -105,7 +106,7 @@ static void grep_file(FILE *file) /* otherwise, keep track of matches and print the matched line */ nmatches++; - if (!print_count_only) { + if (print_count_only==0 && files_that_match==0) { #ifdef BB_FEATURE_GREP_CONTEXT int prevpos = (curpos == 0) ? lines_before - 1 : curpos - 1; @@ -163,11 +164,18 @@ static void grep_file(FILE *file) } /* special-case post processing */ - if (print_count_only) { + if (files_that_match) { + if (nmatches > 0) { + printf("%s", cur_file); + if (nmatches) + printf(":%d", nmatches); + printf("\n"); + } + } else if (print_count_only) { if (print_filename) printf("%s:", cur_file); printf("%i\n", nmatches); - } + } /* remember if we matched */ if (nmatches != 0) @@ -183,7 +191,7 @@ extern int grep_main(int argc, char **argv) #endif /* do normal option parsing */ - while ((opt = getopt(argc, argv, "iHhnqvsc" + while ((opt = getopt(argc, argv, "iHhlnqvsc" #ifdef BB_FEATURE_GREP_CONTEXT "A:B:C:" #endif @@ -192,6 +200,9 @@ extern int grep_main(int argc, char **argv) case 'i': ignore_case++; break; + case 'l': + files_that_match++; + break; case 'H': print_filename++; break; @@ -242,7 +253,7 @@ extern int grep_main(int argc, char **argv) show_usage(); /* sanity check */ - if (print_count_only || be_quiet) { + if (print_count_only || be_quiet || files_that_match) { print_line_num = 0; #ifdef BB_FEATURE_GREP_CONTEXT lines_before = 0; |