diff options
author | Tomas Heinrich <heinrich.tomas@gmail.com> | 2010-04-29 13:43:39 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-04-29 13:43:39 +0200 |
commit | a659b81dfa435aa19130a8c7dd1bfe8fa9a22131 (patch) | |
tree | 6e42922ad325142290898143818bcd819f799c27 /libbb/unicode.c | |
parent | 25b10d97e66a74d4e5a5571afb1b8369c31eefca (diff) | |
download | busybox-w32-a659b81dfa435aa19130a8c7dd1bfe8fa9a22131.tar.gz busybox-w32-a659b81dfa435aa19130a8c7dd1bfe8fa9a22131.tar.bz2 busybox-w32-a659b81dfa435aa19130a8c7dd1bfe8fa9a22131.zip |
libbb/lineedit: add support for preserving "broken" (non-unicode) chars
Signed-off-by: Tomas Heinrich <heinrich.tomas@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/unicode.c')
-rw-r--r-- | libbb/unicode.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/libbb/unicode.c b/libbb/unicode.c index 83e70b412..d1c6167c7 100644 --- a/libbb/unicode.c +++ b/libbb/unicode.c | |||
@@ -423,7 +423,6 @@ static int wcwidth(unsigned ucs) | |||
423 | # if LAST_SUPPORTED_WCHAR >= 0x300 | 423 | # if 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 | static const struct interval combining[] = { | ||
427 | # define BIG_(a,b) { a, b }, | 426 | # define BIG_(a,b) { a, b }, |
428 | # define PAIR(a,b) | 427 | # define PAIR(a,b) |
429 | # define ARRAY /* PAIR if < 0x4000 and no more than 4 chars big */ \ | 428 | # define ARRAY /* PAIR if < 0x4000 and no more than 4 chars big */ \ |
@@ -557,10 +556,9 @@ static int wcwidth(unsigned ucs) | |||
557 | BIG_(0xFE20, 0xFE23) \ | 556 | BIG_(0xFE20, 0xFE23) \ |
558 | BIG_(0xFEFF, 0xFEFF) \ | 557 | BIG_(0xFEFF, 0xFEFF) \ |
559 | BIG_(0xFFF9, 0xFFFB) | 558 | BIG_(0xFFF9, 0xFFFB) |
560 | ARRAY | 559 | static const struct interval combining[] = { ARRAY }; |
561 | # undef BIG_ | 560 | # undef BIG_ |
562 | # undef PAIR | 561 | # undef PAIR |
563 | }; | ||
564 | # define BIG_(a,b) | 562 | # define BIG_(a,b) |
565 | # define PAIR(a,b) (a << 2) | (b-a), | 563 | # define PAIR(a,b) (a << 2) | (b-a), |
566 | static const uint16_t combining1[] = { ARRAY }; | 564 | static const uint16_t combining1[] = { ARRAY }; |
@@ -668,7 +666,6 @@ int FAST_FUNC unicode_bidi_isrtl(wint_t wc) | |||
668 | * http://www.unicode.org/Public/5.2.0/ucd/extracted/DerivedBidiClass.txt | 666 | * http://www.unicode.org/Public/5.2.0/ucd/extracted/DerivedBidiClass.txt |
669 | * Bidi_Class=Left_To_Right | Bidi_Class=Arabic_Letter | 667 | * Bidi_Class=Left_To_Right | Bidi_Class=Arabic_Letter |
670 | */ | 668 | */ |
671 | static const struct interval rtl_b[] = { | ||
672 | # define BIG_(a,b) { a, b }, | 669 | # define BIG_(a,b) { a, b }, |
673 | # define PAIR(a,b) | 670 | # define PAIR(a,b) |
674 | # define ARRAY \ | 671 | # define ARRAY \ |
@@ -723,10 +720,9 @@ int FAST_FUNC unicode_bidi_isrtl(wint_t wc) | |||
723 | {0x10E7F, 0x10FFF}, | 720 | {0x10E7F, 0x10FFF}, |
724 | {0x1E800, 0x1EFFF} | 721 | {0x1E800, 0x1EFFF} |
725 | */ | 722 | */ |
726 | ARRAY | 723 | static const struct interval rtl_b[] = { ARRAY }; |
727 | # undef BIG_ | 724 | # undef BIG_ |
728 | # undef PAIR | 725 | # undef PAIR |
729 | }; | ||
730 | # define BIG_(a,b) | 726 | # define BIG_(a,b) |
731 | # define PAIR(a,b) (a << 2) | (b-a), | 727 | # define PAIR(a,b) (a << 2) | (b-a), |
732 | static const uint16_t rtl_p[] = { ARRAY }; | 728 | static const uint16_t rtl_p[] = { ARRAY }; |
@@ -755,7 +751,6 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc) | |||
755 | * White_Space, Other_Neutral, European_Number, European_Separator, | 751 | * White_Space, Other_Neutral, European_Number, European_Separator, |
756 | * European_Terminator, Arabic_Number, Common_Separator | 752 | * European_Terminator, Arabic_Number, Common_Separator |
757 | */ | 753 | */ |
758 | static const struct interval neutral_b[] = { | ||
759 | # define BIG_(a,b) { a, b }, | 754 | # define BIG_(a,b) { a, b }, |
760 | # define PAIR(a,b) | 755 | # define PAIR(a,b) |
761 | # define ARRAY \ | 756 | # define ARRAY \ |
@@ -929,10 +924,9 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc) | |||
929 | {0x1F030, 0x1F093}, | 924 | {0x1F030, 0x1F093}, |
930 | {0x1F100, 0x1F10A} | 925 | {0x1F100, 0x1F10A} |
931 | */ | 926 | */ |
932 | ARRAY | 927 | static const struct interval neutral_b[] = { ARRAY }; |
933 | # undef BIG_ | 928 | # undef BIG_ |
934 | # undef PAIR | 929 | # undef PAIR |
935 | }; | ||
936 | # define BIG_(a,b) | 930 | # define BIG_(a,b) |
937 | # define PAIR(a,b) (a << 2) | (b-a), | 931 | # define PAIR(a,b) (a << 2) | (b-a), |
938 | static const uint16_t neutral_p[] = { ARRAY }; | 932 | static const uint16_t neutral_p[] = { ARRAY }; |