[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: grep 2.4.2 incorrect handling of '[x^]'
From: |
Alain Magloire |
Subject: |
Re: grep 2.4.2 incorrect handling of '[x^]' |
Date: |
Mon, 30 Jul 2001 14:31:04 -0400 (EDT) |
>
> >> # echo 123 | grep '[x^]'
> >> 123
>
> It is a bug introduced by a Redhat patch which is supposed to fix
> another bug. One bug in, one bug out. Problem logged with RH.
Ok, thanks.
>
> grep-2.4.2-i18n.patch
>
> The following patch works around the bug in grep which makes
>
> grep '[a-c]'
>
> match "B".
I think it has been said on this that bracket range expression
like this depends on C locale and the ASCII character encoding.
> Note, this is a bug in grep caused by a bug in the
> standards which do not provide interfaces to get the necessary
> information. This patch as correct as grep was before (multibyte char
> handling is not 100% correct but that cannot be solved now), future
> changes might increase the speed a bit.
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- grep-2.4.2/src/dfa.c-old Sat Aug 19 17:55:05 2000
> +++ grep-2.4.2/src/dfa.c Sat Aug 19 17:55:11 2000
> @@ -743,6 +743,7 @@ lex (void)
> else
> c2 = c;
>
> +#if 0
> lo[0] = c; lo[1] = '\0';
> hi[0] = c2; hi[1] = '\0';
> for (c = 0; c < NOTCHAR; c++)
> @@ -761,6 +762,37 @@ lex (void)
> }
> }
> }
> +#else
> + {
> + char expr[6] = { '[', c, '-', c2, ']', '\0' };
> + regex_t re;
> +
> + if (regcomp (&re, expr, case_fold ? REG_ICASE : 0)
> + == REG_NOERROR)
> + {
> + for (c = 0; c < NOTCHAR; ++c)
> + {
> + char buf[2] = { c, '\0' };
> + regmatch_t mat;
> +
> + if (regexec (&re, buf, 1, &mat, 0) == REG_NOERROR
> + && mat.rm_so == 0 && mat.rm_eo == 1)
> + {
> + setbit (c, ccl);
> + if (case_fold)
> + {
> + if (ISUPPER (c))
> + setbit (tolower (c), ccl);
> + else if (ISLOWER (c))
> + setbit (toupper (c), ccl);
> + }
> + }
> + }
> +
> + regfree (&re);
> + }
> + }
> +#endif
>
> skip:
> ;
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
> _______________________________________________
> Bug-gnu-utils mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/bug-gnu-utils
>
--
au revoir, alain
----
Aussi haut que l'on soit assis, on n'est toujours assis que sur son cul !!!