Added grep -q, thanks to a patch from "Konstantin Boldyshev" <konst@voshod.com>
authorErik Andersen <andersen@codepoet.org>
Tue, 21 Dec 1999 08:52:04 +0000 (08:52 -0000)
committerErik Andersen <andersen@codepoet.org>
Tue, 21 Dec 1999 08:52:04 +0000 (08:52 -0000)
 -Erik

Changelog
findutils/grep.c
grep.c

index 2d2972c9055245d09760463d4552311437b5b003..10e59233ef230a85e0065a033b474e799d4f910d 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -7,6 +7,8 @@
        * Fixed the embarrasing failure of the -p opition in the logger app. -erik
        * Re-worked the whole source tree a bit so it will compile under glibc 2.0.7 
            with the 2.0.x Linux kernel.
+       * Added 'grep -q' thanks to a patch from "Konstantin Boldyshev" 
+           <konst@voshod.com>.
 
        -Erik Andersen
 
index 84bb99667373720d1fcbb0108a89988d691e2ca7..a0457df9160fd7f3bfb74d02788ddfd908decb40 100644 (file)
  *
  */
 
+/*
+       18-Dec-1999     Konstantin Boldyshev <konst@voshod.com>
+
+       + -q option (be quiet) 
+       + exit code depending on grep result (TRUE or FALSE)
+         (useful for scripts)
+*/
+
 #include "internal.h"
 #include "regexp.h"
 #include <stdio.h>
@@ -37,13 +45,15 @@ static const char grep_usage[] =
 "OPTIONS:\n"
 "\t-h\tsuppress the prefixing filename on output\n"
 "\t-i\tignore case distinctions\n"
-"\t-n\tprint line number with output lines\n\n"
+"\t-n\tprint line number with output lines\n"
+"\t-q\tbe quiet\n\n"
 #if defined BB_REGEXP
 "This version of grep matches full regular expresions.\n";
 #else
 "This version of grep matches strings (not regular expresions).\n";
 #endif
 
+static int match = FALSE, beQuiet = FALSE;
 
 static void do_grep(FILE *fp, char* needle, char *fileName, int tellName, int ignoreCase, int tellLine)
 {
@@ -65,7 +75,10 @@ static void do_grep(FILE *fp, char* needle, char *fileName, int tellName, int ig
            if (tellLine==TRUE)
                printf ("%ld:", line);
 
-           fputs (haystack, stdout);
+           if (beQuiet==FALSE)
+               fputs (haystack, stdout);
+
+           match = TRUE;
        }
     }
 }
@@ -109,6 +122,10 @@ extern int grep_main (int argc, char **argv)
                tellLine = TRUE;
                break;
 
+           case 'q':
+               beQuiet = TRUE;
+               break;
+
            default:
                usage(grep_usage);
            }
@@ -136,7 +153,7 @@ extern int grep_main (int argc, char **argv)
            fclose (fp);
        }
     }
-    exit( TRUE);
+    exit(match);
 }
 
 
diff --git a/grep.c b/grep.c
index 84bb99667373720d1fcbb0108a89988d691e2ca7..a0457df9160fd7f3bfb74d02788ddfd908decb40 100644 (file)
--- a/grep.c
+++ b/grep.c
  *
  */
 
+/*
+       18-Dec-1999     Konstantin Boldyshev <konst@voshod.com>
+
+       + -q option (be quiet) 
+       + exit code depending on grep result (TRUE or FALSE)
+         (useful for scripts)
+*/
+
 #include "internal.h"
 #include "regexp.h"
 #include <stdio.h>
@@ -37,13 +45,15 @@ static const char grep_usage[] =
 "OPTIONS:\n"
 "\t-h\tsuppress the prefixing filename on output\n"
 "\t-i\tignore case distinctions\n"
-"\t-n\tprint line number with output lines\n\n"
+"\t-n\tprint line number with output lines\n"
+"\t-q\tbe quiet\n\n"
 #if defined BB_REGEXP
 "This version of grep matches full regular expresions.\n";
 #else
 "This version of grep matches strings (not regular expresions).\n";
 #endif
 
+static int match = FALSE, beQuiet = FALSE;
 
 static void do_grep(FILE *fp, char* needle, char *fileName, int tellName, int ignoreCase, int tellLine)
 {
@@ -65,7 +75,10 @@ static void do_grep(FILE *fp, char* needle, char *fileName, int tellName, int ig
            if (tellLine==TRUE)
                printf ("%ld:", line);
 
-           fputs (haystack, stdout);
+           if (beQuiet==FALSE)
+               fputs (haystack, stdout);
+
+           match = TRUE;
        }
     }
 }
@@ -109,6 +122,10 @@ extern int grep_main (int argc, char **argv)
                tellLine = TRUE;
                break;
 
+           case 'q':
+               beQuiet = TRUE;
+               break;
+
            default:
                usage(grep_usage);
            }
@@ -136,7 +153,7 @@ extern int grep_main (int argc, char **argv)
            fclose (fp);
        }
     }
-    exit( TRUE);
+    exit(match);
 }