From owner-p4-projects@FreeBSD.ORG Fri Sep 12 14:14:16 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C0DC7106567B; Fri, 12 Sep 2008 14:14:16 +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 7CA7C1065675 for ; Fri, 12 Sep 2008 14:14:16 +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 67D868FC1A for ; Fri, 12 Sep 2008 14:14:16 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id m8CEEGp6099719 for ; Fri, 12 Sep 2008 14:14:16 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id m8CEEGpY099717 for perforce@freebsd.org; Fri, 12 Sep 2008 14:14:16 GMT (envelope-from gabor@freebsd.org) Date: Fri, 12 Sep 2008 14:14:16 GMT Message-Id: <200809121414.m8CEEGpY099717@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 149662 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: Fri, 12 Sep 2008 14:14:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=149662 Change 149662 by gabor@gabor_server on 2008/09/12 14:13:41 - Eliminate some widechar-incompatible parts. The -i fixed string search is not 100% correct yet, and there are other snippets to fix. Reported by: ache Affected files ... .. //depot/projects/soc2008/gabor_textproc/grep/fastgrep.c#9 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/grep/fastgrep.c#9 (text+ko) ==== @@ -61,31 +61,13 @@ fg->eol = 0; fg->reversed = 0; - /* - * Make a copy and upper case it for later if in -i mode, - * else just copy the pointer. - */ - if (iflag) { - fg->pattern = grep_malloc(fg->len + 1); - for (i = 0; i < fg->len; i++) - fg->pattern[i] = toupper(pattern[i]); - fg->pattern[fg->len] = '\0'; - } else - fg->pattern = (unsigned char *)pattern; /* really const */ + fg->pattern = (unsigned char *)pattern; /* really const */ /* Preprocess pattern. */ for (i = 0; i <= UCHAR_MAX; i++) fg->qsBc[i] = fg->len; - for (i = 1; i < fg->len; i++) { + for (i = 1; i < fg->len; i++) fg->qsBc[fg->pattern[i]] = fg->len - i; - /* - * If case is ignored, make the jump apply to both upper and - * lower cased characters. As the pattern is stored in upper - * case, apply the same to the lower case equivalents. - */ - if (iflag) - fg->qsBc[tolower(fg->pattern[i])] = fg->len - i; - } } /* @@ -144,14 +126,7 @@ for (i = 0; i < fg->len; i++) { /* Can still cheat? */ - if ((isalnum(fg->pattern[i])) || isspace(fg->pattern[i]) || - (fg->pattern[i] == '_') || (fg->pattern[i] == ',') || - (fg->pattern[i] == '=') || (fg->pattern[i] == '-') || - (fg->pattern[i] == ':') || (fg->pattern[i] == '/')) { - /* As long as it is good, upper case it for later. */ - if (iflag) - fg->pattern[i] = toupper(fg->pattern[i]); - } else if (fg->pattern[i] == '.') { + if (fg->pattern[i] == '.') { hasDot = i; if (i < fg->len / 2) { if (firstHalfDot < 0) @@ -211,13 +186,6 @@ fg->qsBc[i] = shiftPatternLen; for (i = hasDot + 1; i < fg->len; i++) { fg->qsBc[fg->pattern[i]] = fg->len - i; - /* - * If case is ignored, make the jump apply to both upper and - * lower cased characters. As the pattern is stored in upper - * case, apply the same to the lower case equivalents. - */ - if (iflag) - fg->qsBc[tolower(fg->pattern[i])] = fg->len - i; } /* @@ -316,7 +284,7 @@ for (i = 0; i < len; i++) { if (((pattern[i] == data[i]) || ((grepbehave != GREP_FIXED) && pattern[i] == '.')) - || (iflag && pattern[i] == toupper(data[i]))) + || (iflag && toupper(pattern[i]) == toupper(data[i]))) continue; return (i); }