Re: [PATCH] wildmatch: properly fold case everywhere
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- May 30, 2013, 08:52 UTC
- Message-ID
- <CACsJy8DpJKPgc2h0yV3ZHOV6mhEGs=j1NZJ2WQBWG7hAk_iuBw@mail.gmail.com>
- In-Reply-To
- <1369903506-72731-1-git-send-email-n.oxyde@gmail.com>
On Thu, May 30, 2013 at 3:45 PM, Anthony Ramine <n.oxyde@gmail.com> wrote:
Show 14 quoted lines
> Case folding is not done correctly when matching against the [:upper:] > character class and uppercased character ranges (e.g. A-Z). > Specifically, an uppercase letter fails to match against any of them > when case folding is requested because plain characters in the pattern > and the whole string and preemptively lowercased to handle the base case > fast. > > That optimization is kept and ISLOWER() is used in the [:upper:] case > when case folding is requested, while matching against a character range > is retried with toupper() if the character was lowercase, as the bounds > of the range itself cannot be modified (in a case-insensitive context, > [A-_] is not equivalent to [a-_]). > > Signed-off-by: Anthony Ramine <n.oxyde@gmail.com>
Reviewed-by: Duy Nguyen <pclouds@gmail.com>
If you have time, you may want to send a similar patch to rsync, which contains original wildmatch implementation. It does not look much different from this one, except that (flags & WM_CASEFOLD) is replaced with force_lower_case. Thanks. -- Duy