Exit with the appropriate value when grepping multiple files.
authorMatt Kraai <kraai@debian.org>
Sun, 6 Aug 2000 15:25:53 +0000 (15:25 -0000)
committerMatt Kraai <kraai@debian.org>
Sun, 6 Aug 2000 15:25:53 +0000 (15:25 -0000)
findutils/grep.c
grep.c

index 6161ba766a6b78cb0457be817faf70548b7ea746..3ee409c64c8ed24df05ed6b9cb5c9194a6347579 100644 (file)
@@ -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(&regex);
 
-       if (nmatches == 0)
+       if (!matched)
                return 1;
 
        return 0;
diff --git a/grep.c b/grep.c
index 6161ba766a6b78cb0457be817faf70548b7ea746..3ee409c64c8ed24df05ed6b9cb5c9194a6347579 100644 (file)
--- 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(&regex);
 
-       if (nmatches == 0)
+       if (!matched)
                return 1;
 
        return 0;