From deb95f69b6afab4b9e81cb8b2d63ba98469d1622 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Sun, 6 Aug 2000 15:25:53 +0000 Subject: [PATCH] Exit with the appropriate value when grepping multiple files. --- findutils/grep.c | 10 ++++++---- grep.c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/findutils/grep.c b/findutils/grep.c index 6161ba766..3ee409c64 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -42,7 +42,7 @@ static int suppress_err_msgs = 0; /* globals */ static regex_t regex; /* storage space for compiled regular expression */ -static int nmatches = 0; /* keeps track of the number of matches */ +static int matched; /* keeps track of whether we ever matched */ static char *cur_file = NULL; /* the current file we are reading */ @@ -64,6 +64,7 @@ static void grep_file(FILE *file) char *line = NULL; int ret; int linenum = 0; + int nmatches = 0; while ((line = get_line_from_file(file)) != NULL) { linenum++; @@ -96,8 +97,9 @@ static void grep_file(FILE *file) printf("%i\n", nmatches); } - /* reset number of matches found to zero */ - nmatches = 0; + /* record if we matched */ + if (nmatches != 0) + matched = 1; } extern int grep_main(int argc, char **argv) @@ -176,7 +178,7 @@ extern int grep_main(int argc, char **argv) regfree(®ex); - if (nmatches == 0) + if (!matched) return 1; return 0; diff --git a/grep.c b/grep.c index 6161ba766..3ee409c64 100644 --- a/grep.c +++ b/grep.c @@ -42,7 +42,7 @@ static int suppress_err_msgs = 0; /* globals */ static regex_t regex; /* storage space for compiled regular expression */ -static int nmatches = 0; /* keeps track of the number of matches */ +static int matched; /* keeps track of whether we ever matched */ static char *cur_file = NULL; /* the current file we are reading */ @@ -64,6 +64,7 @@ static void grep_file(FILE *file) char *line = NULL; int ret; int linenum = 0; + int nmatches = 0; while ((line = get_line_from_file(file)) != NULL) { linenum++; @@ -96,8 +97,9 @@ static void grep_file(FILE *file) printf("%i\n", nmatches); } - /* reset number of matches found to zero */ - nmatches = 0; + /* record if we matched */ + if (nmatches != 0) + matched = 1; } extern int grep_main(int argc, char **argv) @@ -176,7 +178,7 @@ extern int grep_main(int argc, char **argv) regfree(®ex); - if (nmatches == 0) + if (!matched) return 1; return 0; -- 2.25.1