Date: Mon, 23 Jun 2008 22:29:17 GMT From: Gabor Kovesdan <gabor@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 143998 for review Message-ID: <200806232229.m5NMTHuo035544@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=143998 Change 143998 by gabor@gabor_server on 2008/06/23 22:28:22 - Allow values up to ULLONG_MAX for -A/-B/-C/-m Affected files ... .. //depot/projects/soc2008/gabor_textproc/grep/grep.c#37 edit .. //depot/projects/soc2008/gabor_textproc/grep/grep.h#19 edit .. //depot/projects/soc2008/gabor_textproc/grep/util.c#33 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/grep/grep.c#37 (text+ko) ==== @@ -67,7 +67,8 @@ /* 9*/ "context out of range", /*10*/ "FreeBSD grep 2.5.1\n", /*11*/ "Unknown binary-files option", -/*12*/ "Binary file %s matches\n" +/*12*/ "Binary file %s matches\n", +/*12*/ "Value out of range" }; nl_catd catalog; @@ -87,8 +88,8 @@ char re_error[RE_ERROR_BUF + 1]; /* Command-line flags */ -int Aflag; /* -A x: print x lines trailing each match */ -int Bflag; /* -B x: print x lines leading each match */ +unsigned long long Aflag; /* -A x: print x lines trailing each match */ +unsigned long long Bflag; /* -B x: print x lines leading each match */ int Dflag; /* -D: do not process device files if optarg is passed */ int Eflag; /* -E: interpret pattern as extended regexp */ int Fflag; /* -F: interpret pattern as list of fixed strings */ @@ -118,7 +119,7 @@ int nullflag; /* --null */ char *label; /* --label */ char *color; /* --color */ -long long mcount; /* count for -m */ +unsigned long long mcount; /* count for -m */ int binbehave = BIN_FILE_BIN; @@ -361,17 +362,14 @@ { int c, lastc, prevoptind, newarg, i, needpattern; struct patfile *patfile, *pf_next; - long l; char *ep; struct stat *finfo = 0; + unsigned long long l; setlocale(LC_ALL, ""); #ifndef WITHOUT_NLS catalog = catopen("grep", NL_CAT_LOCALE); - if (catalog == ((nl_catd)-1)) - printf("HIBA: %d\n", errno); - #endif SLIST_INIT(&patfilelh); @@ -412,20 +410,27 @@ case '5': case '6': case '7': case '8': case '9': if (newarg || !isdigit(lastc)) Aflag = 0; - else if (Aflag > INT_MAX / 10) + else if (Aflag > LLONG_MAX / 10) errx(2, getstr(9)); Aflag = Bflag = (Aflag * 10) + (c - '0'); break; + case 'C': + if (optarg == NULL) { + Aflag = Bflag = 2; + break; + } + /* FALLTHROUGH */ case 'A': case 'B': - l = strtol(optarg, &ep, 10); - if (ep == optarg || *ep != '\0' || - l <= 0 || l >= INT_MAX) + l = strtoull(optarg, &ep, 10); + if ((errno == ERANGE) && (l == ULLONG_MAX)) errx(2, getstr(9)); if (c == 'A') - Aflag = (int)l; + Aflag = l; + else if (c == 'B') + Bflag = l; else - Bflag = (int)l; + Aflag = Bflag = l; break; case 'a': binbehave = BIN_FILE_TEXT; @@ -433,17 +438,6 @@ case 'b': bflag = 1; break; - case 'C': - if (optarg == NULL) - Aflag = Bflag = 2; - else { - l = strtol(optarg, &ep, 10); - if (ep == optarg || *ep != '\0' || - l <= 0 || l >= INT_MAX) - errx(2, getstr(9)); - Aflag = Bflag = (int)l; - } - break; case 'c': cflag = 1; break; @@ -511,7 +505,9 @@ break; case 'm': mflag++; - mcount = strtoll(optarg, (char **)NULL, 10); + mcount = strtoull(optarg, (char **)NULL, 10); + if ((errno == ERANGE) && (mcount == ULLONG_MAX)) + err(2, getstr(13)); break; case 'n': nflag = 1; ==== //depot/projects/soc2008/gabor_textproc/grep/grep.h#19 (text+ko) ==== @@ -72,11 +72,11 @@ extern int cflags, eflags; /* Command line flags */ -extern int Aflag, Bflag, Dflag, Eflag, Fflag, Gflag, Hflag, Jflag, +extern int Dflag, Eflag, Fflag, Gflag, Hflag, Jflag, Lflag, Oflag, Pflag, Rflag, Zflag, bflag, cflag, dflag, hflag, iflag, lflag, mflag, nflag, oflag, qflag, sflag, vflag, wflag, xflag, nullflag; -extern long long mcount; +extern unsigned long long Aflag, Bflag, mcount; extern char *color, *label; extern int binbehave; ==== //depot/projects/soc2008/gabor_textproc/grep/util.c#33 (text+ko) ====
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200806232229.m5NMTHuo035544>