Added grep -q, thanks to a patch from "Konstantin Boldyshev" <konst@voshod.com>

-Erik
This commit is contained in:
Erik Andersen 1999-12-21 08:52:04 +00:00
parent d387d01f11
commit 3fe2ecf0d9
3 changed files with 42 additions and 6 deletions

View File

@ -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

View File

@ -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);
}

23
grep.c
View File

@ -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);
}