[BusyBox-cvs] busybox/findutils grep.c,1.83,1.84

Erik Andersen,,, andersen at busybox.net
Wed May 26 11:47:58 UTC 2004


Update of /var/cvs/busybox/findutils
In directory nail:/tmp/cvs-serv32766

Modified Files:
	grep.c 
Log Message:
Rick Richardson writes:

Here is a patch that adds egrep -L support (the opposite of egrep -l).

I realize this is probably too late for 1.0.  But I offer it for your
future consideration.

egrep -L is used in some networking startup scripts I inherited.

-Rick



Index: grep.c
===================================================================
RCS file: /var/cvs/busybox/findutils/grep.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- a/grep.c	26 May 2004 09:46:41 -0000	1.83
+++ b/grep.c	26 May 2004 11:47:55 -0000	1.84
@@ -34,7 +34,7 @@
 
 
 /* options */
-#define GREP_OPTS "lnqvscFiHhe:f:"
+#define GREP_OPTS "lnqvscFiHhe:f:L"
 #define GREP_OPT_l 1
 static char print_files_with_matches;
 #define GREP_OPT_n 2
@@ -55,15 +55,17 @@
 #define GREP_OPT_h 512
 #define GREP_OPT_e 1024
 #define GREP_OPT_f 2048
+#define GREP_OPT_L 4096
+static char print_files_without_matches;
 #ifdef CONFIG_FEATURE_GREP_CONTEXT
 #define GREP_OPT_CONTEXT "A:B:C"
-#define GREP_OPT_A 4096
-#define GREP_OPT_B 8192
-#define GREP_OPT_C 16384
-#define GREP_OPT_E 32768U
+#define GREP_OPT_A 8192
+#define GREP_OPT_B 16384
+#define GREP_OPT_C 32768
+#define GREP_OPT_E 65536
 #else
 #define GREP_OPT_CONTEXT ""
-#define GREP_OPT_E 4096
+#define GREP_OPT_E 8192
 #endif
 #ifdef CONFIG_FEATURE_GREP_EGREP_ALIAS
 # define OPT_EGREP "E"
@@ -147,7 +149,7 @@
 				free(line);
 
 			/* if we found a match but were told to be quiet, stop here */
-				if (be_quiet)
+				if (be_quiet || print_files_without_matches)
 				return -1;
 
 				/* keep track of matches */
@@ -227,6 +229,11 @@
 		puts(cur_file);
 	}
 
+	/* grep -L: print just the filename, but only if we didn't grep the line in the file  */
+	if (print_files_without_matches && nmatches == 0) {
+		puts(cur_file);
+	}
+
 	return nmatches;
 }
 
@@ -290,7 +297,7 @@
 					bb_error_msg_and_die("invalid context length argument");
 		}
 	/* sanity checks after parse may be invalid numbers ;-) */
-	if ((opt & (GREP_OPT_c|GREP_OPT_q|GREP_OPT_l))) {
+	if ((opt & (GREP_OPT_c|GREP_OPT_q|GREP_OPT_l|GREP_OPT_L))) {
 		opt &= ~GREP_OPT_n;
 		lines_before = 0;
 		lines_after = 0;
@@ -305,6 +312,7 @@
 
 #endif
 	print_files_with_matches = opt & GREP_OPT_l;
+	print_files_without_matches = (opt & GREP_OPT_L) != 0;
 	print_line_num = opt & GREP_OPT_n;
 	be_quiet = opt & GREP_OPT_q;
 	invert_search = (opt & GREP_OPT_v) != 0;        /* 0 | 1 */




More information about the busybox-cvs mailing list