@@ -69,62 +69,31 @@ const struct mbfl_convert_vtbl vtbl_koi8u_wchar = {
69
69
70
70
#define CK (statement ) do { if ((statement) < 0) return (-1); } while (0)
71
71
72
- /*
73
- * koi8u => wchar
74
- */
75
- int
76
- mbfl_filt_conv_koi8u_wchar (int c , mbfl_convert_filter * filter )
72
+ int mbfl_filt_conv_koi8u_wchar (int c , mbfl_convert_filter * filter )
77
73
{
78
74
int s ;
79
75
80
- if (c >= 0 && c < koi8u_ucs_table_min ) {
76
+ if (c < koi8u_ucs_table_min ) {
81
77
s = c ;
82
- } else if (c >= koi8u_ucs_table_min && c < 0x100 ) {
83
- s = koi8u_ucs_table [c - koi8u_ucs_table_min ];
84
- if (s <= 0 ) {
85
- s = c ;
86
- s &= MBFL_WCSPLANE_MASK ;
87
- s |= MBFL_WCSPLANE_KOI8U ;
88
- }
89
78
} else {
90
- s = c ;
91
- s &= MBFL_WCSGROUP_MASK ;
92
- s |= MBFL_WCSGROUP_THROUGH ;
79
+ s = koi8u_ucs_table [c - koi8u_ucs_table_min ];
93
80
}
94
81
95
82
CK ((* filter -> output_function )(s , filter -> data ));
96
-
97
83
return c ;
98
84
}
99
85
100
- /*
101
- * wchar => koi8u
102
- */
103
- int
104
- mbfl_filt_conv_wchar_koi8u (int c , mbfl_convert_filter * filter )
86
+ int mbfl_filt_conv_wchar_koi8u (int c , mbfl_convert_filter * filter )
105
87
{
106
- int s , n ;
107
-
108
88
if (c < 0x80 ) {
109
- s = c ;
89
+ CK (( * filter -> output_function )( c , filter -> data )) ;
110
90
} else {
111
- s = -1 ;
112
- n = koi8u_ucs_table_len - 1 ;
113
- while (n >= 0 ) {
91
+ for (int n = 0 ; n < koi8u_ucs_table_len ; n ++ ) {
114
92
if (c == koi8u_ucs_table [n ]) {
115
- s = koi8u_ucs_table_min + n ;
116
- break ;
93
+ CK (( * filter -> output_function )( koi8u_ucs_table_min + n , filter -> data )) ;
94
+ return c ;
117
95
}
118
- n -- ;
119
- }
120
- if (s <= 0 && (c & ~MBFL_WCSPLANE_MASK ) == MBFL_WCSPLANE_KOI8U ) {
121
- s = c & MBFL_WCSPLANE_MASK ;
122
96
}
123
- }
124
-
125
- if (s >= 0 ) {
126
- CK ((* filter -> output_function )(s , filter -> data ));
127
- } else {
128
97
CK (mbfl_filt_conv_illegal_output (c , filter ));
129
98
}
130
99
0 commit comments