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