summaryrefslogtreecommitdiff
path: root/findutils
diff options
context:
space:
mode:
Diffstat (limited to 'findutils')
-rw-r--r--findutils/grep.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/findutils/grep.c b/findutils/grep.c
index 84bb996..a0457df 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);
}