From owner-p4-projects@FreeBSD.ORG Mon Jun 23 22:29:17 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B4FF71065671; Mon, 23 Jun 2008 22:29:17 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5F350106566C for ; Mon, 23 Jun 2008 22:29:17 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4576C8FC20 for ; Mon, 23 Jun 2008 22:29:17 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m5NMTHA7035546 for ; Mon, 23 Jun 2008 22:29:17 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m5NMTHuo035544 for perforce@freebsd.org; Mon, 23 Jun 2008 22:29:17 GMT (envelope-from gabor@freebsd.org) Date: Mon, 23 Jun 2008 22:29:17 GMT Message-Id: <200806232229.m5NMTHuo035544@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 143998 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jun 2008 22:29:18 -0000 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) ====