PERFORCE change 141294 for review

Gabor Kovesdan gabor at FreeBSD.org
Wed May 7 19:16:03 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=141294

Change 141294 by gabor at gabor_server on 2008/05/07 19:15:22

	- Eliminate gotos

Affected files ...

.. //depot/projects/soc2008/gabor_textproc/grep/mmfile.c#4 edit
.. //depot/projects/soc2008/gabor_textproc/grep/util.c#7 edit

Differences ...

==== //depot/projects/soc2008/gabor_textproc/grep/mmfile.c#4 (text+ko) ====

@@ -57,28 +57,28 @@
 	mode = mode;
 
 	mmf = grep_malloc(sizeof *mmf);
-	if ((mmf->fd = open(fn, O_RDONLY)) == -1)
-		goto ouch1;
-	if (fstat(mmf->fd, &st) == -1)
-		goto ouch2;
-	if (st.st_size > SIZE_T_MAX) /* too big to mmap */
-		goto ouch2;
-	if (!S_ISREG(st.st_mode)) /* only mmap regular files */
-		goto ouch2;
+	if ((mmf->fd = open(fn, O_RDONLY)) == -1) {
+		free(mmf);
+		return (NULL);
+	}
+	if ((fstat(mmf->fd, &st) == -1) ||
+	    (st.st_size > SIZE_T_MAX) ||	/* too big to mmap */
+	    (!S_ISREG(st.st_mode))) {		/* only mmap regular files */
+		close(mmf->fd);
+		free(mmf);
+		return (NULL);
+	}
 	mmf->len = (size_t)st.st_size;
 	mmf->base = mmap(NULL, mmf->len, PROT_READ, MAP_PRIVATE, mmf->fd, (off_t)0);
-	if (mmf->base == MAP_FAILED)
-		goto ouch2;
+	if (mmf->base == MAP_FAILED) {
+		close(mmf->fd);
+		free(mmf);
+		return (NULL);
+	}
 	mmf->ptr = mmf->base;
 	mmf->end = mmf->base + mmf->len;
 	madvise(mmf->base, mmf->len, MADV_SEQUENTIAL);
 	return (mmf);
-
-ouch2:
-	close(mmf->fd);
-ouch1:
-	free(mmf);
-	return (NULL);
 }
 
 void

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

@@ -183,33 +183,31 @@
 	regmatch_t	 pmatch;
 	int		 c, i, r;
 
-	if (matchall) {
+	if (!matchall) {
+		for (c = i = 0; i < patterns; i++) {
+			if (fg_pattern[i].pattern) {
+				r = grep_search(&fg_pattern[i], (unsigned char *)l->dat,
+				    l->len, &pmatch);
+			} else {
+				pmatch.rm_so = 0;
+				pmatch.rm_eo = l->len;
+				r = regexec(&r_pattern[i], l->dat, 1, &pmatch, eflags);
+			}
+			if (r == 0 && xflag) {
+				if (pmatch.rm_so != 0 || pmatch.rm_eo != l->len)
+					r = REG_NOMATCH;
+			}
+			if (r == 0) {
+				c++;
+				break;
+			}
+		}
+	} else
 		c = !vflag;
-		goto print;
-	}
 
-	for (c = i = 0; i < patterns; i++) {
-		if (fg_pattern[i].pattern) {
-			r = grep_search(&fg_pattern[i], (unsigned char *)l->dat,
-			    l->len, &pmatch);
-		} else {
-			pmatch.rm_so = 0;
-			pmatch.rm_eo = l->len;
-			r = regexec(&r_pattern[i], l->dat, 1, &pmatch, eflags);
-		}
-		if (r == 0 && xflag) {
-			if (pmatch.rm_so != 0 || pmatch.rm_eo != l->len)
-				r = REG_NOMATCH;
-		}
-		if (r == 0) {
-			c++;
-			break;
-		}
-	}
 	if (vflag)
 		c = !c;
 
-print:
 	if (c && binbehave == BIN_FILE_BIN && nottext)
 		return (c); /* Binary file */
 


More information about the p4-projects mailing list