1 |
--- ./src/dfa.c.orig 2004-10-20 02:13:43.000000000 +0900 |
2 |
+++ ./src/dfa.c 2004-10-20 02:14:14.000000000 +0900 |
3 |
@@ -658,6 +658,29 @@ |
4 |
REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t, |
5 |
range_ends_al, work_mbc->nranges + 1); |
6 |
work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)wc2; |
7 |
+ if (case_fold |
8 |
+ && (iswlower((wint_t)wc) || iswupper((wint_t)wc)) |
9 |
+ && (iswlower((wint_t)wc2) || iswupper((wint_t)wc2))) { |
10 |
+ wint_t altcase; |
11 |
+ altcase = wc; |
12 |
+ if (iswlower((wint_t)wc)) |
13 |
+ altcase = towupper((wint_t)wc); |
14 |
+ else |
15 |
+ altcase = towlower((wint_t)wc); |
16 |
+ REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t, |
17 |
+ range_sts_al, work_mbc->nranges + 1); |
18 |
+ work_mbc->range_sts[work_mbc->nranges] = (wchar_t)altcase; |
19 |
+ |
20 |
+ altcase = wc2; |
21 |
+ if (iswlower((wint_t)wc2)) |
22 |
+ altcase = towupper((wint_t)wc2); |
23 |
+ else |
24 |
+ altcase = towlower((wint_t)wc2); |
25 |
+ REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t, |
26 |
+ range_ends_al, work_mbc->nranges + 1); |
27 |
+ work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)altcase; |
28 |
+ |
29 |
+ } |
30 |
} |
31 |
else if (wc != WEOF) |
32 |
/* build normal characters. */ |