From 2295b49169e87089e437806bbeeb0818bcba370f Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sun, 22 Oct 2006 11:42:51 +0000 Subject: [PATCH] grep: "grep -h pattern file1 file2" ignored -h (precluded kernel's "make modules") --- findutils/grep.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/findutils/grep.c b/findutils/grep.c index 04dd2b0e4..b7964d1eb 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -339,13 +339,13 @@ int grep_main(int argc, char **argv) &slines_after, &slines_before, &Copt); if (option_mask32 & GREP_OPT_C) { - /* C option unseted A and B options, but next -A or -B - may be ovewrite own option */ - if (!(option_mask32 & GREP_OPT_A)) /* not overwtited */ + /* -C unsets prev -A and -B, but following -A or -B + may override it */ + if (!(option_mask32 & GREP_OPT_A)) /* not overridden */ slines_after = Copt; - if (!(option_mask32 & GREP_OPT_B)) /* not overwtited */ + if (!(option_mask32 & GREP_OPT_B)) /* not overridden */ slines_before = Copt; - option_mask32 |= GREP_OPT_A|GREP_OPT_B; /* set for parse now */ + option_mask32 |= GREP_OPT_A|GREP_OPT_B; /* for parser */ } if (option_mask32 & GREP_OPT_A) { lines_after = xatoi_u(slines_after); @@ -353,7 +353,7 @@ int grep_main(int argc, char **argv) if (option_mask32 & GREP_OPT_B) { lines_before = xatoi_u(slines_before); } - /* sanity checks after parse may be invalid numbers ;-) */ + /* sanity checks */ if (option_mask32 & (GREP_OPT_c|GREP_OPT_q|GREP_OPT_l|GREP_OPT_L)) { option_mask32 &= ~GREP_OPT_n; lines_before = 0; @@ -366,12 +366,8 @@ int grep_main(int argc, char **argv) getopt32(argc, argv, GREP_OPTS OPT_EGREP, &pattern_head, &fopt); #endif - invert_search = (option_mask32 & GREP_OPT_v) != 0; /* 0 | 1 */ + invert_search = ((option_mask32 & GREP_OPT_v) != 0); /* 0 | 1 */ - if (option_mask32 & GREP_OPT_H) - print_filename = 1; - if (option_mask32 & GREP_OPT_h) - print_filename = 0; if (pattern_head != NULL) { /* convert char *argv[] to grep_list_data_t */ llist_t *cur; @@ -413,14 +409,18 @@ int grep_main(int argc, char **argv) /* argv[(optind)..(argc-1)] should be names of file to grep through. If * there is more than one file to grep, we will print the filenames. */ - if (argc > 1) { + if (argc > 1) print_filename = 1; + /* -H / -h of course override */ + if (option_mask32 & GREP_OPT_H) + print_filename = 1; + if (option_mask32 & GREP_OPT_h) + print_filename = 0; /* If no files were specified, or '-' was specified, take input from * stdin. Otherwise, we grep through all the files specified. */ - } else if (argc == 0) { + if (argc == 0) argc++; - } matched = 0; while (argc--) { cur_file = *argv++; -- 2.25.1