summaryrefslogtreecommitdiff
path: root/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c')
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c117
1 files changed, 3 insertions, 114 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
index 1e9757eae6..1127f8e629 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
@@ -34,27 +34,19 @@
#include "unicode_table_jis.h"
#include "cp932_table.h"
-int mbfl_filt_ident_2022jpms(int c, mbfl_identify_filter *filter);
-
static const char *mbfl_encoding_2022jpms_aliases[] = {"ISO2022JPMS", NULL};
const mbfl_encoding mbfl_encoding_2022jpms = {
mbfl_no_encoding_2022jpms,
"ISO-2022-JP-MS",
"ISO-2022-JP",
- (const char *(*)[])&mbfl_encoding_2022jpms_aliases,
+ mbfl_encoding_2022jpms_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ MBFL_ENCTYPE_GL_UNSAFE,
&vtbl_2022jpms_wchar,
&vtbl_wchar_2022jpms
};
-const struct mbfl_identify_vtbl vtbl_identify_2022jpms = {
- mbfl_no_encoding_2022jpms,
- mbfl_filt_ident_common_ctor,
- mbfl_filt_ident_2022jpms
-};
-
const struct mbfl_convert_vtbl vtbl_2022jpms_wchar = {
mbfl_no_encoding_2022jpms,
mbfl_no_encoding_wchar,
@@ -310,16 +302,7 @@ mbfl_filt_conv_wchar_2022jpms(int c, mbfl_convert_filter *filter)
s1 = (c1 << 8) | c2;
}
if (s1 <= 0) {
- c1 = c & ~MBFL_WCSPLANE_MASK;
- if (c1 == MBFL_WCSPLANE_WINCP932) {
- s1 = c & MBFL_WCSPLANE_MASK;
- s2 = 1;
- } else if (c1 == MBFL_WCSPLANE_JIS0208) {
- s1 = c & MBFL_WCSPLANE_MASK;
- } else if (c1 == MBFL_WCSPLANE_JIS0212) {
- s1 = c & MBFL_WCSPLANE_MASK;
- s1 |= 0x8080;
- } else if (c == 0xa5) { /* YEN SIGN */
+ if (c == 0xa5) { /* YEN SIGN */
s1 = 0x216f; /* FULLWIDTH YEN SIGN */
} else if (c == 0x203e) { /* OVER LINE */
s1 = 0x2131; /* FULLWIDTH MACRON */
@@ -429,97 +412,3 @@ mbfl_filt_conv_any_2022jpms_flush(mbfl_convert_filter *filter)
return 0;
}
-
-int mbfl_filt_ident_2022jpms(int c, mbfl_identify_filter *filter)
-{
-retry:
- switch (filter->status & 0xf) {
-/* case 0x00: ASCII */
-/* case 0x10: X 0201 latin */
-/* case 0x20: X 0201 kana */
-/* case 0x80: X 0208 */
-/* case 0xa0: X UDC */
- case 0:
- if (c == 0x1b) {
- filter->status += 2;
- } else if ((filter->status == 0x80 || filter->status == 0xa0) && c > 0x20 && c < 0x80) { /* kanji first char */
- filter->status += 1;
- } else if (c >= 0 && c < 0x80) { /* latin, CTLs */
- ;
- } else {
- filter->flag = 1; /* bad */
- }
- break;
-
-/* case 0x81: X 0208 second char */
-/* case 0xa1: UDC second char */
- case 1:
- filter->status &= ~0xf;
- if (c == 0x1b) {
- goto retry;
- } else if (c < 0x21 || c > 0x7e) { /* bad */
- filter->flag = 1;
- }
- break;
-
- /* ESC */
- case 2:
- if (c == 0x24) { /* '$' */
- filter->status++;
- } else if (c == 0x28) { /* '(' */
- filter->status += 3;
- } else {
- filter->flag = 1; /* bad */
- filter->status &= ~0xf;
- goto retry;
- }
- break;
-
- /* ESC $ */
- case 3:
- if (c == 0x40 || c == 0x42) { /* '@' or 'B' */
- filter->status = 0x80;
- } else if (c == 0x28) { /* '(' */
- filter->status++;
- } else {
- filter->flag = 1; /* bad */
- filter->status &= ~0xf;
- goto retry;
- }
- break;
-
- /* ESC $ ( */
- case 4:
- if (c == 0x40 || c == 0x42) { /* '@' or 'B' */
- filter->status = 0x80;
- } else if (c == 0x3f) { /* '?' */
- filter->status = 0xa0;
- } else {
- filter->flag = 1; /* bad */
- filter->status &= ~0xf;
- goto retry;
- }
- break;
-
- /* ESC ( */
- case 5:
- if (c == 0x42) { /* 'B' */
- filter->status = 0;
- } else if (c == 0x4a) { /* 'J' */
- filter->status = 0;
- } else if (c == 0x49) { /* 'I' */
- filter->status = 0x20;
- } else {
- filter->flag = 1; /* bad */
- filter->status &= ~0xf;
- goto retry;
- }
- break;
-
- default:
- filter->status = 0;
- break;
- }
-
- return c;
-}