From 3fe2ecf0d92b5ff8984513d0a99f6152b61ea998 Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Tue, 21 Dec 1999 08:52:04 +0000 Subject: [PATCH] Added grep -q, thanks to a patch from "Konstantin Boldyshev" -Erik --- Changelog | 2 ++ findutils/grep.c | 23 ++++++++++++++++++++--- grep.c | 23 ++++++++++++++++++++--- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Changelog b/Changelog index 2d2972c90..10e59233e 100644 --- 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" + . -Erik Andersen diff --git a/findutils/grep.c b/findutils/grep.c index 84bb99667..a0457df91 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -21,6 +21,14 @@ * */ +/* + 18-Dec-1999 Konstantin Boldyshev + + + -q option (be quiet) + + exit code depending on grep result (TRUE or FALSE) + (useful for scripts) +*/ + #include "internal.h" #include "regexp.h" #include @@ -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 84bb99667..a0457df91 100644 --- a/grep.c +++ b/grep.c @@ -21,6 +21,14 @@ * */ +/* + 18-Dec-1999 Konstantin Boldyshev + + + -q option (be quiet) + + exit code depending on grep result (TRUE or FALSE) + (useful for scripts) +*/ + #include "internal.h" #include "regexp.h" #include @@ -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); }