@@ -45,19 +45,12 @@ static int mbfl_filt_conv_cp5022x_wchar_flush(mbfl_convert_filter *filter);
45
45
* This was just CP50220, but the implementation was less strict regarding
46
46
* invalid characters; it would silently pass some through
47
47
* This 'encoding' only existed in mbstring. In case some poor, lost soul is
48
- * still using it, retain minimal support by aliasing it to CP50220 */
49
- static const char * cp50220_aliases [] = {"cp50220raw" , "cp50220-raw" , NULL };
50
-
51
- const mbfl_encoding mbfl_encoding_jis_ms = {
52
- mbfl_no_encoding_jis_ms ,
53
- "JIS-ms" ,
54
- "ISO-2022-JP" ,
55
- NULL ,
56
- NULL ,
57
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE ,
58
- & vtbl_jis_ms_wchar ,
59
- & vtbl_wchar_jis_ms
60
- };
48
+ * still using it, retain minimal support by aliasing it to CP50220
49
+ *
50
+ * Further, mbstring also had a made-up encoding called "JIS-ms"
51
+ * This was the same as CP5022{0,1,2}, but without their special ways of
52
+ * handling conversion of Unicode half-width katakana */
53
+ static const char * cp50220_aliases [] = {"cp50220raw" , "cp50220-raw" , "JIS-ms" , NULL };
61
54
62
55
const mbfl_encoding mbfl_encoding_cp50220 = {
63
56
mbfl_no_encoding_cp50220 ,
@@ -92,32 +85,12 @@ const mbfl_encoding mbfl_encoding_cp50222 = {
92
85
& vtbl_wchar_cp50222
93
86
};
94
87
95
- const struct mbfl_convert_vtbl vtbl_jis_ms_wchar = {
96
- mbfl_no_encoding_jis_ms ,
97
- mbfl_no_encoding_wchar ,
98
- mbfl_filt_conv_common_ctor ,
99
- NULL ,
100
- mbfl_filt_conv_jis_ms_wchar ,
101
- mbfl_filt_conv_common_flush ,
102
- NULL ,
103
- };
104
-
105
- const struct mbfl_convert_vtbl vtbl_wchar_jis_ms = {
106
- mbfl_no_encoding_wchar ,
107
- mbfl_no_encoding_jis_ms ,
108
- mbfl_filt_conv_common_ctor ,
109
- NULL ,
110
- mbfl_filt_conv_wchar_jis_ms ,
111
- mbfl_filt_conv_any_jis_flush ,
112
- NULL ,
113
- };
114
-
115
88
const struct mbfl_convert_vtbl vtbl_cp50220_wchar = {
116
89
mbfl_no_encoding_cp50220 ,
117
90
mbfl_no_encoding_wchar ,
118
91
mbfl_filt_conv_common_ctor ,
119
92
NULL ,
120
- mbfl_filt_conv_jis_ms_wchar ,
93
+ mbfl_filt_conv_cp5022x_wchar ,
121
94
mbfl_filt_conv_cp5022x_wchar_flush ,
122
95
NULL ,
123
96
};
@@ -137,7 +110,7 @@ const struct mbfl_convert_vtbl vtbl_cp50221_wchar = {
137
110
mbfl_no_encoding_wchar ,
138
111
mbfl_filt_conv_common_ctor ,
139
112
NULL ,
140
- mbfl_filt_conv_jis_ms_wchar ,
113
+ mbfl_filt_conv_cp5022x_wchar ,
141
114
mbfl_filt_conv_cp5022x_wchar_flush ,
142
115
NULL ,
143
116
};
@@ -157,7 +130,7 @@ const struct mbfl_convert_vtbl vtbl_cp50222_wchar = {
157
130
mbfl_no_encoding_wchar ,
158
131
mbfl_filt_conv_common_ctor ,
159
132
NULL ,
160
- mbfl_filt_conv_jis_ms_wchar ,
133
+ mbfl_filt_conv_cp5022x_wchar ,
161
134
mbfl_filt_conv_cp5022x_wchar_flush ,
162
135
NULL ,
163
136
};
@@ -174,11 +147,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_cp50222 = {
174
147
175
148
#define CK (statement ) do { if ((statement) < 0) return (-1); } while (0)
176
149
177
- /*
178
- * JIS-ms => wchar
179
- */
180
- int
181
- mbfl_filt_conv_jis_ms_wchar (int c , mbfl_convert_filter * filter )
150
+ int mbfl_filt_conv_cp5022x_wchar (int c , mbfl_convert_filter * filter )
182
151
{
183
152
int c1 , s , w ;
184
153
@@ -355,154 +324,6 @@ static int mbfl_filt_conv_cp5022x_wchar_flush(mbfl_convert_filter *filter)
355
324
return 0 ;
356
325
}
357
326
358
- /*
359
- * wchar => JIS
360
- */
361
- int
362
- mbfl_filt_conv_wchar_jis_ms (int c , mbfl_convert_filter * filter )
363
- {
364
- int s = 0 ;
365
-
366
- if (c >= ucs_a1_jis_table_min && c < ucs_a1_jis_table_max ) {
367
- s = ucs_a1_jis_table [c - ucs_a1_jis_table_min ];
368
- } else if (c >= ucs_a2_jis_table_min && c < ucs_a2_jis_table_max ) {
369
- s = ucs_a2_jis_table [c - ucs_a2_jis_table_min ];
370
- } else if (c >= ucs_i_jis_table_min && c < ucs_i_jis_table_max ) {
371
- s = ucs_i_jis_table [c - ucs_i_jis_table_min ];
372
- } else if (c >= ucs_r_jis_table_min && c < ucs_r_jis_table_max ) {
373
- s = ucs_r_jis_table [c - ucs_r_jis_table_min ];
374
- } else if (c >= 0xe000 && c < (0xe000 + 10 * 94 )) {
375
- /* PUE => Microsoft extended (pseudo 95ku - 114ku) */
376
- /* See http://www.opengroup.or.jp/jvc/cde/ucs-conv.html#ch4_2 */
377
- s = c - 0xe000 ;
378
- s = ((s / 94 ) + 0x7F ) << 8 | ((s % 94 ) + 0x21 );
379
- } else if (c >= (0xe000 + 10 * 94 ) && c <= (0xe000 + 20 * 94 )) {
380
- /* PUE => JISX0212 user-defined (G3 85ku - 94ku) */
381
- /* See http://www.opengroup.or.jp/jvc/cde/ucs-conv.html#ch4_2 */
382
- s = c - (0xe000 + 10 * 94 );
383
- s = (s / 94 + 0xf5 ) << 8 | (s % 94 + 0xa1 );
384
- }
385
-
386
- /* do some transliteration */
387
- if (s <= 0 ) {
388
- if (c == 0xa5 ) { /* YEN SIGN */
389
- s = 0x1005c ;
390
- } else if (c == 0x203e ) { /* OVER LINE */
391
- s = 0x1007e ;
392
- } else if (c == 0xff3c ) { /* FULLWIDTH REVERSE SOLIDUS */
393
- s = 0x2140 ;
394
- } else if (c == 0x2225 ) { /* PARALLEL TO */
395
- s = 0x2142 ;
396
- } else if (c == 0xff0d ) { /* FULLWIDTH HYPHEN-MINUS */
397
- s = 0x215d ;
398
- } else if (c == 0xffe0 ) { /* FULLWIDTH CENT SIGN */
399
- s = 0x2171 ;
400
- } else if (c == 0xffe1 ) { /* FULLWIDTH POUND SIGN */
401
- s = 0x2172 ;
402
- } else if (c == 0xffe2 ) { /* FULLWIDTH NOT SIGN */
403
- s = 0x224c ;
404
- }
405
- }
406
- if (s <= 0 || (s >= 0x8080 && s < 0x10000 )) {
407
- int i ;
408
- s = -1 ;
409
-
410
- for (i = 0 ;
411
- i < cp932ext1_ucs_table_max - cp932ext1_ucs_table_min ; i ++ ) {
412
- const int oh = cp932ext1_ucs_table_min / 94 ;
413
-
414
- if (c == cp932ext1_ucs_table [i ]) {
415
- s = ((i / 94 + oh + 0x21 ) << 8 ) + (i % 94 + 0x21 );
416
- break ;
417
- }
418
- }
419
-
420
- if (s < 0 ) {
421
- const int oh = cp932ext2_ucs_table_min / 94 ;
422
- const int cp932ext2_ucs_table_size =
423
- cp932ext2_ucs_table_max - cp932ext2_ucs_table_min ;
424
- for (i = 0 ; i < cp932ext2_ucs_table_size ; i ++ ) {
425
- if (c == cp932ext2_ucs_table [i ]) {
426
- s = ((i / 94 + oh + 0x21 ) << 8 ) + (i % 94 + 0x21 );
427
- break ;
428
- }
429
- }
430
- }
431
-
432
- if (s < 0 ) {
433
- const int cp932ext3_ucs_table_size =
434
- cp932ext3_ucs_table_max - cp932ext3_ucs_table_min ;
435
- const int limit = cp932ext3_ucs_table_size >
436
- cp932ext3_eucjp_table_size ?
437
- cp932ext3_eucjp_table_size :
438
- cp932ext3_ucs_table_size ;
439
- for (i = 0 ; i < limit ; i ++ ) {
440
- if (c == cp932ext3_ucs_table [i ]) {
441
- s = cp932ext3_eucjp_table [i ];
442
- break ;
443
- }
444
- }
445
- }
446
-
447
- if (c == 0 ) {
448
- s = 0 ;
449
- } else if (s <= 0 ) {
450
- s = -1 ;
451
- }
452
- }
453
-
454
- if (s >= 0 ) {
455
- if (s < 0x80 ) { /* ASCII */
456
- if ((filter -> status & 0xff00 ) != 0 ) {
457
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
458
- CK ((* filter -> output_function )(0x28 , filter -> data )); /* '(' */
459
- CK ((* filter -> output_function )(0x42 , filter -> data )); /* 'B' */
460
- }
461
- filter -> status = 0 ;
462
- CK ((* filter -> output_function )(s , filter -> data ));
463
- } else if (s < 0x100 ) { /* kana */
464
- if ((filter -> status & 0xff00 ) != 0x100 ) {
465
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
466
- CK ((* filter -> output_function )(0x28 , filter -> data )); /* '(' */
467
- CK ((* filter -> output_function )(0x49 , filter -> data )); /* 'I' */
468
- }
469
- filter -> status = 0x100 ;
470
- CK ((* filter -> output_function )(s & 0x7f , filter -> data ));
471
- } else if (s < 0x8080 ) { /* X 0208 */
472
- if ((filter -> status & 0xff00 ) != 0x200 ) {
473
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
474
- CK ((* filter -> output_function )(0x24 , filter -> data )); /* '$' */
475
- CK ((* filter -> output_function )(0x42 , filter -> data )); /* 'B' */
476
- }
477
- filter -> status = 0x200 ;
478
- CK ((* filter -> output_function )((s >> 8 ) & 0xff , filter -> data ));
479
- CK ((* filter -> output_function )(s & 0xff , filter -> data ));
480
- } else if (s < 0x10000 ) { /* X 0212 */
481
- if ((filter -> status & 0xff00 ) != 0x300 ) {
482
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
483
- CK ((* filter -> output_function )(0x24 , filter -> data )); /* '$' */
484
- CK ((* filter -> output_function )(0x28 , filter -> data )); /* '(' */
485
- CK ((* filter -> output_function )(0x44 , filter -> data )); /* 'D' */
486
- }
487
- filter -> status = 0x300 ;
488
- CK ((* filter -> output_function )((s >> 8 ) & 0x7f , filter -> data ));
489
- CK ((* filter -> output_function )(s & 0x7f , filter -> data ));
490
- } else { /* X 0201 latin */
491
- if ((filter -> status & 0xff00 ) != 0x400 ) {
492
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
493
- CK ((* filter -> output_function )(0x28 , filter -> data )); /* '(' */
494
- CK ((* filter -> output_function )(0x4a , filter -> data )); /* 'J' */
495
- }
496
- filter -> status = 0x400 ;
497
- CK ((* filter -> output_function )(s & 0x7f , filter -> data ));
498
- }
499
- } else {
500
- CK (mbfl_filt_conv_illegal_output (c , filter ));
501
- }
502
-
503
- return c ;
504
- }
505
-
506
327
/*
507
328
* wchar => CP50220
508
329
*/
@@ -843,8 +664,8 @@ mbfl_filt_conv_wchar_cp50222_flush(mbfl_convert_filter *filter)
843
664
}
844
665
filter -> status &= 0xff ;
845
666
846
- if (filter -> flush_function != NULL ) {
847
- return (* filter -> flush_function )(filter -> data );
667
+ if (filter -> flush_function ) {
668
+ (* filter -> flush_function )(filter -> data );
848
669
}
849
670
850
671
return 0 ;
0 commit comments