diff options
Diffstat (limited to 'enc/iso_8859_16.c')
-rw-r--r-- | enc/iso_8859_16.c | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/enc/iso_8859_16.c b/enc/iso_8859_16.c index 2ed2f3c989..1374901e5b 100644 --- a/enc/iso_8859_16.c +++ b/enc/iso_8859_16.c @@ -231,47 +231,60 @@ case_map (OnigCaseFoldType* flagP, const OnigUChar** pp, OnigCodePoint code; OnigUChar *to_start = to; OnigCaseFoldType flags = *flagP; - + while (*pp<end && to<to_end) { code = *(*pp)++; if (code==SHARP_s) { if (flags&ONIGENC_CASE_UPCASE) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 'S'; - code = (flags&ONIGENC_CASE_TITLECASE) ? 's' : 'S'; + flags |= ONIGENC_CASE_MODIFIED; + *to++ = 'S'; + code = (flags&ONIGENC_CASE_TITLECASE) ? 's' : 'S'; } else if (flags&ONIGENC_CASE_FOLD) { - flags |= ONIGENC_CASE_MODIFIED; - *to++ = 's'; - code = 's'; + flags |= ONIGENC_CASE_MODIFIED; + *to++ = 's'; + code = 's'; } } - //else if (code==0xAA || code==0xBA) ; else if ((EncISO_8859_16_CtypeTable[code] & BIT_CTYPE_UPPER) && (flags & (ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_FOLD))) { - flags |= ONIGENC_CASE_MODIFIED; - if(code==0xA1 || code==0xBC) code++; - else if(code==0xA3 || code==0xAA || code==0xAF) code += 0x10; - else if(code==0xA6 || code==0xAC) code += 0x02; - else if(code==0xB2) code += 0x07; - else if(code==0xB4) code += 0x04; - else if(code==0xBE) code += 0x41; - else code += 0x20; + flags |= ONIGENC_CASE_MODIFIED; + if (code==0xA1 || code==0xBC) + code++; + else if (code==0xA3 || code==0xAA || code==0xAF) + code += 0x10; + else if (code==0xA6 || code==0xAC) + code += 0x02; + else if (code==0xB2) + code += 0x07; + else if (code==0xB4) + code += 0x04; + else if (code==0xBE) + code += 0x41; + else + code += 0x20; } else if ((EncISO_8859_16_CtypeTable[code]&BIT_CTYPE_LOWER) && (flags&ONIGENC_CASE_UPCASE)) { - flags |= ONIGENC_CASE_MODIFIED; - if(code==0xA2 || code==0xBD) code--; - else if(code==0xB3 || code==0xBA || code==0xBF) code -= 0x10; - else if(code==0xA8 || code==0xAE) code -= 0x02; - else if(code==0xB9) code -= 0x07; - else if(code==0xB8) code -= 0x04; - else if(code==0xFF) code -= 0x41; - else code -= 0x20; + flags |= ONIGENC_CASE_MODIFIED; + if (code==0xA2 || code==0xBD) + code--; + else if (code==0xB3 || code==0xBA || code==0xBF) + code -= 0x10; + else if (code==0xA8 || code==0xAE) + code -= 0x02; + else if (code==0xB9) + code -= 0x07; + else if (code==0xB8) + code -= 0x04; + else if (code==0xFF) + code -= 0x41; + else + code -= 0x20; } *to++ = code; - if (flags&ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE|ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_TITLECASE); + if (flags&ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ + flags ^= (ONIGENC_CASE_UPCASE|ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_TITLECASE); } *flagP = flags; return (int)(to-to_start); |