PERFORCE change 181071 for review

Gabor Kovesdan gabor at FreeBSD.org
Sat Jul 17 00:25:03 UTC 2010


http://p4web.freebsd.org/@@181071?ac=10

Change 181071 by gabor at gabor_server on 2010/07/17 00:24:22

	- Fix cases, where -v and multiple -e switches are specified
	  together.

Affected files ...

.. //depot/projects/soc2008/gabor_textproc/grep/util.c#89 edit

Differences ...

==== //depot/projects/soc2008/gabor_textproc/grep/util.c#89 (text+ko) ====

@@ -84,6 +84,7 @@
 			errx(2, "%s: %s", p->fts_path, strerror(p->fts_errno));
 			break;
 		case FTS_DP:
+			/* FALLTHROUGH */
 		case FTS_D:
 			break;
 		case FTS_DC:
@@ -260,11 +261,11 @@
 				if (fg_pattern[i].pattern) {
 					r = grep_search(&fg_pattern[i], (unsigned char *)l->dat,
 					    l->len, &pmatch);
-					r = (r == 0) ? (vflag ? REG_NOMATCH : 0) : (vflag ? 0 : REG_NOMATCH);
+					r = (r == 0) ? 0 : REG_NOMATCH;
 					st = pmatch.rm_eo;
 				} else {
 					r = regexec(&r_pattern[i], l->dat, 1, &pmatch, eflags);
-					r = (r == 0) ? (vflag ? REG_NOMATCH : 0) : (vflag ? 0 : REG_NOMATCH);
+					r = (r == 0) ? 0 : REG_NOMATCH;
 					st = pmatch.rm_eo;
 				}
 				if (r == REG_NOMATCH)
@@ -298,10 +299,15 @@
 					if (m == 0)
 						c++;
 					if (m < MAX_LINE_MATCHES)
-						matches[m] = pmatch;
-						m++;
+						matches[m++] = pmatch;
+					/* Matches - no need to check more patterns */
+					break;
 				}
-					break;
+			}
+
+			if (vflag) {
+				c = !c;
+				break;
 			}
 			/* One pass if we are not recording matches */
 			if (!oflag && !color)


More information about the p4-projects mailing list