From 053b1462b72feea51b3b8745662447d5f8d18fda Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 13 Jun 2000 06:24:53 +0000 Subject: Fix a bug pointed out by Michal Jaegermann where you used to see: ./grep -q -i B some_file B: No such file or directory This is now fixed. -Erik --- grep.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'grep.c') diff --git a/grep.c b/grep.c index bb1a14622..1272a464b 100644 --- a/grep.c +++ b/grep.c @@ -39,6 +39,9 @@ #include #include #include +#define BB_DECLARE_EXTERN +#define bb_need_too_few_args +#include "messages.c" static const char grep_usage[] = "grep [OPTIONS]... PATTERN [FILE]...\n" @@ -92,7 +95,6 @@ static void do_grep(FILE * fp, char *needle, char *fileName, int tellName, extern int grep_main(int argc, char **argv) { FILE *fp; - char *cp; char *needle; char *fileName; int tellName = TRUE; @@ -100,18 +102,14 @@ extern int grep_main(int argc, char **argv) int tellLine = FALSE; int invertSearch = FALSE; - argc--; - argv++; if (argc < 1) { usage(grep_usage); } + argv++; - if (**argv == '-') { - argc--; - cp = *argv++; - - while (*++cp) - switch (*cp) { + while (--argc >= 0 && *argv && (**argv == '-')) { + while (*++(*argv)) { + switch (**argv) { case 'i': ignoreCase = TRUE; break; @@ -135,6 +133,12 @@ extern int grep_main(int argc, char **argv) default: usage(grep_usage); } + } + argv++; + } + + if (argc == 0 || *argv == NULL) { + fatalError(too_few_args, "grep"); } needle = *argv++; -- cgit v1.2.3