diff options
author | Erik Andersen <andersen@codepoet.org> | 1999-12-21 08:52:04 +0000 |
---|---|---|
committer | Erik Andersen <andersen@codepoet.org> | 1999-12-21 08:52:04 +0000 |
commit | 3fe2ecf0d92b5ff8984513d0a99f6152b61ea998 (patch) | |
tree | c5847668267623f203b11efe5553ec8169d59ae9 | |
parent | d387d01f11c3b9438322c951cd1eac8f29ea6afc (diff) | |
download | busybox-3fe2ecf0d92b5ff8984513d0a99f6152b61ea998.tar.gz |
Added grep -q, thanks to a patch from "Konstantin Boldyshev" <konst@voshod.com>
-Erik
-rw-r--r-- | Changelog | 2 | ||||
-rw-r--r-- | findutils/grep.c | 23 | ||||
-rw-r--r-- | grep.c | 23 |
3 files changed, 42 insertions, 6 deletions
@@ -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 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 <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); } @@ -21,6 +21,14 @@ * */ +/* + 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); } |