diff --git a/src/multibyte/internal.c b/src/multibyte/internal.c index e9b938dd9f2ee2e65fcb264a2aa739c98f950997..11b9818fc479e6c7148ab3ced563233352f04ce8 100644 --- a/src/multibyte/internal.c +++ b/src/multibyte/internal.c @@ -15,27 +15,6 @@ R(0x80,0xc0) ) \ | ( R(0x80,0xc0) >> 6 ) \ | x ) -#ifdef I_FAILED_TO_RTFM_RFC3629 -#define F0(x) (( x==0 ? R(0x90,0xc0) : \ - R(0x80,0xc0) ) \ - | ( R(0x80,0xc0) >> 6 ) \ - | ( R(0x80,0xc0) >> 12 ) \ - | x ) -#define F8(x) (( x==0 ? R(0xa0,0xc0) : \ - R(0x80,0xc0) ) \ - | ( R(0x80,0xc0) >> 6 ) \ - | ( R(0x80,0xc0) >> 12 ) \ - | ( R(0x80,0xc0) >> 18 ) \ - | x ) -#define FC(x) (( x==0 ? R(0x88,0xc0) : \ - R(0x80,0xc0) ) \ - | ( R(0x80,0xc0) >> 6 ) \ - | ( R(0x80,0xc0) >> 12 ) \ - | ( R(0x80,0xc0) >> 18 ) \ - | ( R(0x80,0xc0) >> 24 ) \ - | x ) -#define F(x) ( x<8 ? F0(x) : x<12 ? F8((x&3)) : x<14 ? FC((x&1)) : -1 ) -#else #define F(x) ( ( x>=5 ? 0 : \ x==0 ? R(0x90,0xc0) : \ x==4 ? R(0x80,0xa0) : \ @@ -43,7 +22,6 @@ | ( R(0x80,0xc0) >> 6 ) \ | ( R(0x80,0xc0) >> 12 ) \ | x ) -#endif const uint32_t bittab[] = { C(0x2),C(0x3),C(0x4),C(0x5),C(0x6),C(0x7), @@ -52,9 +30,5 @@ const uint32_t bittab[] = { D(0x8),D(0x9),D(0xa),D(0xb),D(0xc),D(0xd),D(0xe),D(0xf), E(0x0),E(0x1),E(0x2),E(0x3),E(0x4),E(0x5),E(0x6),E(0x7), E(0x8),E(0x9),E(0xa),E(0xb),E(0xc),E(0xd),E(0xe),E(0xf), - F(0x0),F(0x1),F(0x2),F(0x3),F(0x4), -#ifdef I_FAILED_TO_RTFM_RFC3629 - F(0x5),F(0x6),F(0x7), - F(0x8),F(0x9),F(0xa),F(0xb),F(0xc),F(0xd) -#endif + F(0x0),F(0x1),F(0x2),F(0x3),F(0x4) }; diff --git a/src/multibyte/internal.h b/src/multibyte/internal.h index ec52bdfad268ce3ea56c1bd405fba5fba20b6076..df47331e11b215db6b67cef434a24c3be7702d2d 100644 --- a/src/multibyte/internal.h +++ b/src/multibyte/internal.h @@ -4,45 +4,13 @@ * unnecessary. */ -#define LIBC -#ifndef LIBC -/* rename functions not to conflict with libc */ -#ifndef myprefix -#define myprefix fsmu8_ -#endif -#define concat2(a,b) a ## b -#define concat(a,b) concat2(a,b) -#define prefix(b) concat(myprefix,b) - -#undef mblen -#undef mbrlen -#undef mbrtowc -#undef mbsinit -#undef mbsnrtowcs -#undef mbsrtowcs -#undef wcrtomb -#undef wcsrtombs -#undef wcstombs -#undef wctomb -#define mblen prefix(mblen) -#define mbrlen prefix(mbrlen) -#define mbrtowc prefix(mbrtowc) -#define mbsinit prefix(mbsinit) -#define mbsnrtowcs prefix(mbsnrtowcs) -#define mbsrtowcs prefix(mbsrtowcs) -#define mbstowcs prefix(mbstowcs) -#define wcrtomb prefix(wcrtomb) -#define wcsnrtombs prefix(wcsnrtombs) -#define wcsrtombs prefix(wcsrtombs) -#define wcstombs prefix(wcstombs) -#define wctomb prefix(wctomb) - -#define bittab prefix(bittab) -#else #define bittab __fsmu8 -#endif +#if 100*__GNUC__+__GNUC_MINOR__ >= 303 || defined(__PCC__) || defined(__TINYC__) +extern const uint32_t bittab[] __attribute__((visibility("hidden"))); +#else extern const uint32_t bittab[]; +#endif /* Upper 6 state bits are a negative integer offset to bound-check next byte */ /* equivalent to: ( (b-0x80) | (b+offset) ) & ~0x3f */ @@ -52,10 +20,5 @@ extern const uint32_t bittab[]; #define R(a,b) ((uint32_t)((a==0x80 ? 0x40-b : -a) << 23)) #define FAILSTATE R(0x80,0x80) -#ifdef I_FAILED_TO_RTFM_RFC3629 -#define SA 0xc2u -#define SB 0xfeu -#else #define SA 0xc2u #define SB 0xf5u -#endif diff --git a/src/multibyte/mbsrtowcs.c b/src/multibyte/mbsrtowcs.c index 64399cf2896d6e0cd0f53d86d8060b5ee5eac874..ebf0d6c9711c261726f77172ee68ce0df5263cb8 100644 --- a/src/multibyte/mbsrtowcs.c +++ b/src/multibyte/mbsrtowcs.c @@ -42,12 +42,6 @@ size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) resume0: if (OOB(c,*s)) goto ilseq2; s++; c <<= 6; if (!(c&(1U<<31))) break; -#ifdef I_FAILED_TO_RTFM_RFC3629 - if (*s++-0x80u >= 0x40) goto ilseq2; - c <<= 6; if (!(c&(1U<<31))) break; - if (*s++-0x80u >= 0x40) goto ilseq2; - c <<= 6; if (!(c&(1U<<31))) break; -#endif if (*s++-0x80u >= 0x40) goto ilseq2; c <<= 6; if (!(c&(1U<<31))) break; if (*s++-0x80u >= 0x40) goto ilseq2; @@ -89,16 +83,6 @@ resume: c = (c<<6) | *s++-0x80; if (!(c&(1U<<31))) break; -#ifdef I_FAILED_TO_RTFM_RFC3629 - if (*s-0x80u >= 0x40) goto ilseq; - c = (c<<6) | *s++-0x80; - if (!(c&(1U<<31))) break; - - if (*s-0x80u >= 0x40) goto ilseq; - c = (c<<6) | *s++-0x80; - if (!(c&(1U<<31))) break; -#endif - if (*s-0x80u >= 0x40) goto ilseq; c = (c<<6) | *s++-0x80; if (!(c&(1U<<31))) break;