aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-05-16 21:15:03 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-05-16 21:15:03 +0200
commit26e2c1db0df35df1affa558efc12d2bcfd7718e2 (patch)
tree7b1b65e1aafd93ab4c7d0681ff45c28de154b4af
parentb8909c52fe850d2731326534822164c2f5258bf5 (diff)
downloadbusybox-w32-26e2c1db0df35df1affa558efc12d2bcfd7718e2.tar.gz
busybox-w32-26e2c1db0df35df1affa558efc12d2bcfd7718e2.tar.bz2
busybox-w32-26e2c1db0df35df1affa558efc12d2bcfd7718e2.zip
stop using LAST_SUPPORTED_WCHAR and CONFIG_LAST_SUPPORTED_WCHAR, it's confusing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--include/unicode.h11
-rw-r--r--libbb/lineedit.c5
-rw-r--r--libbb/unicode.c26
3 files changed, 20 insertions, 22 deletions
diff --git a/include/unicode.h b/include/unicode.h
index 747026abe..eaf67c833 100644
--- a/include/unicode.h
+++ b/include/unicode.h
@@ -30,22 +30,21 @@ enum {
30#else 30#else
31 31
32# if CONFIG_LAST_SUPPORTED_WCHAR < 126 || CONFIG_LAST_SUPPORTED_WCHAR >= 0x30000 32# if CONFIG_LAST_SUPPORTED_WCHAR < 126 || CONFIG_LAST_SUPPORTED_WCHAR >= 0x30000
33# define LAST_SUPPORTED_WCHAR 0x2ffff 33# undef CONFIG_LAST_SUPPORTED_WCHAR
34# else 34# define CONFIG_LAST_SUPPORTED_WCHAR 0x2ffff
35# define LAST_SUPPORTED_WCHAR CONFIG_LAST_SUPPORTED_WCHAR
36# endif 35# endif
37 36
38# if LAST_SUPPORTED_WCHAR < 0x300 37# if CONFIG_LAST_SUPPORTED_WCHAR < 0x300
39# undef ENABLE_UNICODE_COMBINING_WCHARS 38# undef ENABLE_UNICODE_COMBINING_WCHARS
40# define ENABLE_UNICODE_COMBINING_WCHARS 0 39# define ENABLE_UNICODE_COMBINING_WCHARS 0
41# endif 40# endif
42 41
43# if LAST_SUPPORTED_WCHAR < 0x1100 42# if CONFIG_LAST_SUPPORTED_WCHAR < 0x1100
44# undef ENABLE_UNICODE_WIDE_WCHARS 43# undef ENABLE_UNICODE_WIDE_WCHARS
45# define ENABLE_UNICODE_WIDE_WCHARS 0 44# define ENABLE_UNICODE_WIDE_WCHARS 0
46# endif 45# endif
47 46
48# if LAST_SUPPORTED_WCHAR < 0x590 47# if CONFIG_LAST_SUPPORTED_WCHAR < 0x590
49# undef ENABLE_UNICODE_BIDI_SUPPORT 48# undef ENABLE_UNICODE_BIDI_SUPPORT
50# define ENABLE_UNICODE_BIDI_SUPPORT 0 49# define ENABLE_UNICODE_BIDI_SUPPORT 0
51# endif 50# endif
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 9f2d65717..72a1786ff 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -282,9 +282,8 @@ static wchar_t adjust_width_and_validate_wc(wchar_t wc)
282 int w = 1; 282 int w = 1;
283 283
284 if (unicode_status == UNICODE_ON) { 284 if (unicode_status == UNICODE_ON) {
285 if (unicode_is_raw_byte(wc) 285 if (wc > CONFIG_LAST_SUPPORTED_WCHAR) {
286 || (CONFIG_LAST_SUPPORTED_WCHAR && wc > CONFIG_LAST_SUPPORTED_WCHAR) 286 /* note: also true for unicode_is_raw_byte(wc) */
287 ) {
288 goto subst; 287 goto subst;
289 } 288 }
290 w = wcwidth(wc); 289 w = wcwidth(wc);
diff --git a/libbb/unicode.c b/libbb/unicode.c
index eb0ea6129..b2c28239b 100644
--- a/libbb/unicode.c
+++ b/libbb/unicode.c
@@ -240,7 +240,7 @@ int FAST_FUNC iswpunct(wint_t wc)
240} 240}
241 241
242 242
243# if LAST_SUPPORTED_WCHAR >= 0x300 243# if CONFIG_LAST_SUPPORTED_WCHAR >= 0x300
244struct interval { 244struct interval {
245 uint16_t first; 245 uint16_t first;
246 uint16_t last; 246 uint16_t last;
@@ -420,7 +420,7 @@ static int in_uint16_table(unsigned ucs, const uint16_t *table, unsigned max)
420 */ 420 */
421int FAST_FUNC wcwidth(unsigned ucs) 421int FAST_FUNC wcwidth(unsigned ucs)
422{ 422{
423# if LAST_SUPPORTED_WCHAR >= 0x300 423# if CONFIG_LAST_SUPPORTED_WCHAR >= 0x300
424 /* sorted list of non-overlapping intervals of non-spacing characters */ 424 /* sorted list of non-overlapping intervals of non-spacing characters */
425 /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */ 425 /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
426# define BIG_(a,b) { a, b }, 426# define BIG_(a,b) { a, b },
@@ -579,14 +579,14 @@ int FAST_FUNC wcwidth(unsigned ucs)
579 if ((ucs & ~0x80) < 0x20 || ucs == 0x7f) 579 if ((ucs & ~0x80) < 0x20 || ucs == 0x7f)
580 return -1; 580 return -1;
581 /* Quick abort if it is an obviously invalid char */ 581 /* Quick abort if it is an obviously invalid char */
582 if (ucs > LAST_SUPPORTED_WCHAR) 582 if (ucs > CONFIG_LAST_SUPPORTED_WCHAR)
583 return -1; 583 return -1;
584 584
585 /* Optimization: no combining chars below 0x300 */ 585 /* Optimization: no combining chars below 0x300 */
586 if (LAST_SUPPORTED_WCHAR < 0x300 || ucs < 0x300) 586 if (CONFIG_LAST_SUPPORTED_WCHAR < 0x300 || ucs < 0x300)
587 return 1; 587 return 1;
588 588
589# if LAST_SUPPORTED_WCHAR >= 0x300 589# if CONFIG_LAST_SUPPORTED_WCHAR >= 0x300
590 /* Binary search in table of non-spacing characters */ 590 /* Binary search in table of non-spacing characters */
591 if (in_interval_table(ucs, combining, ARRAY_SIZE(combining) - 1)) 591 if (in_interval_table(ucs, combining, ARRAY_SIZE(combining) - 1))
592 return 0; 592 return 0;
@@ -594,25 +594,25 @@ int FAST_FUNC wcwidth(unsigned ucs)
594 return 0; 594 return 0;
595 595
596 /* Optimization: all chars below 0x1100 are not double-width */ 596 /* Optimization: all chars below 0x1100 are not double-width */
597 if (LAST_SUPPORTED_WCHAR < 0x1100 || ucs < 0x1100) 597 if (CONFIG_LAST_SUPPORTED_WCHAR < 0x1100 || ucs < 0x1100)
598 return 1; 598 return 1;
599 599
600# if LAST_SUPPORTED_WCHAR >= 0x1100 600# if CONFIG_LAST_SUPPORTED_WCHAR >= 0x1100
601 /* Invalid code points: */ 601 /* Invalid code points: */
602 /* High (d800..dbff) and low (dc00..dfff) surrogates (valid only in UTF16) */ 602 /* High (d800..dbff) and low (dc00..dfff) surrogates (valid only in UTF16) */
603 /* Private Use Area (e000..f8ff) */ 603 /* Private Use Area (e000..f8ff) */
604 /* Noncharacters fdd0..fdef */ 604 /* Noncharacters fdd0..fdef */
605 if ((LAST_SUPPORTED_WCHAR >= 0xd800 && ucs >= 0xd800 && ucs <= 0xf8ff) 605 if ((CONFIG_LAST_SUPPORTED_WCHAR >= 0xd800 && ucs >= 0xd800 && ucs <= 0xf8ff)
606 || (LAST_SUPPORTED_WCHAR >= 0xfdd0 && ucs >= 0xfdd0 && ucs <= 0xfdef) 606 || (CONFIG_LAST_SUPPORTED_WCHAR >= 0xfdd0 && ucs >= 0xfdd0 && ucs <= 0xfdef)
607 ) { 607 ) {
608 return -1; 608 return -1;
609 } 609 }
610 /* 0xfffe and 0xffff in every plane are invalid */ 610 /* 0xfffe and 0xffff in every plane are invalid */
611 if (LAST_SUPPORTED_WCHAR >= 0xfffe && ((ucs & 0xfffe) == 0xfffe)) { 611 if (CONFIG_LAST_SUPPORTED_WCHAR >= 0xfffe && ((ucs & 0xfffe) == 0xfffe)) {
612 return -1; 612 return -1;
613 } 613 }
614 614
615# if LAST_SUPPORTED_WCHAR >= 0x10000 615# if CONFIG_LAST_SUPPORTED_WCHAR >= 0x10000
616 if (ucs >= 0x10000) { 616 if (ucs >= 0x10000) {
617 /* Combining chars in Supplementary Multilingual Plane 0x1xxxx */ 617 /* Combining chars in Supplementary Multilingual Plane 0x1xxxx */
618 static const struct interval combining0x10000[] = { 618 static const struct interval combining0x10000[] = {
@@ -625,7 +625,7 @@ int FAST_FUNC wcwidth(unsigned ucs)
625 if (in_interval_table(ucs ^ 0x10000, combining0x10000, ARRAY_SIZE(combining0x10000) - 1)) 625 if (in_interval_table(ucs ^ 0x10000, combining0x10000, ARRAY_SIZE(combining0x10000) - 1))
626 return 0; 626 return 0;
627 /* Check a few non-spacing chars in Supplementary Special-purpose Plane 0xExxxx */ 627 /* Check a few non-spacing chars in Supplementary Special-purpose Plane 0xExxxx */
628 if (LAST_SUPPORTED_WCHAR >= 0xE0001 628 if (CONFIG_LAST_SUPPORTED_WCHAR >= 0xE0001
629 && ( ucs == 0xE0001 629 && ( ucs == 0xE0001
630 || (ucs >= 0xE0020 && ucs <= 0xE007F) 630 || (ucs >= 0xE0020 && ucs <= 0xE007F)
631 || (ucs >= 0xE0100 && ucs <= 0xE01EF) 631 || (ucs >= 0xE0100 && ucs <= 0xE01EF)
@@ -644,7 +644,7 @@ int FAST_FUNC wcwidth(unsigned ucs)
644 || ucs == 0x2329 /* left-pointing angle bracket; also CJK punct. char */ 644 || ucs == 0x2329 /* left-pointing angle bracket; also CJK punct. char */
645 || ucs == 0x232a /* right-pointing angle bracket; also CJK punct. char */ 645 || ucs == 0x232a /* right-pointing angle bracket; also CJK punct. char */
646 || (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f) /* CJK ... Yi */ 646 || (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f) /* CJK ... Yi */
647# if LAST_SUPPORTED_WCHAR >= 0xac00 647# if CONFIG_LAST_SUPPORTED_WCHAR >= 0xac00
648 || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */ 648 || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */
649 || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */ 649 || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */
650 || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */ 650 || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */