Lines Matching refs:filter

37 static int mbfl_filt_ident_utf7(int c, mbfl_identify_filter *filter);
96 int mbfl_filt_conv_utf7_wchar(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_utf7_wchar() argument
101 if (filter->status != 0) { /* Modified Base64 */ in mbfl_filt_conv_utf7_wchar()
115 if (filter->status == 1) { /* "+-" -> "+" */ in mbfl_filt_conv_utf7_wchar()
116 CK((*filter->output_function)(0x2b, filter->data)); in mbfl_filt_conv_utf7_wchar()
119 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_utf7_wchar()
123 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
125 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
126 filter->status = 0; in mbfl_filt_conv_utf7_wchar()
131 switch (filter->status) { in mbfl_filt_conv_utf7_wchar()
135 filter->status = 1; in mbfl_filt_conv_utf7_wchar()
137 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_utf7_wchar()
141 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
148 filter->cache |= n << 10; in mbfl_filt_conv_utf7_wchar()
149 filter->status = 3; in mbfl_filt_conv_utf7_wchar()
152 filter->cache |= n << 4; in mbfl_filt_conv_utf7_wchar()
153 filter->status = 4; in mbfl_filt_conv_utf7_wchar()
156 s = ((n >> 2) & 0xf) | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
158 filter->status = 5; in mbfl_filt_conv_utf7_wchar()
161 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
164 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
165 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
167 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
171 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
174 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
175 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
180 filter->cache |= n << 8; in mbfl_filt_conv_utf7_wchar()
181 filter->status = 6; in mbfl_filt_conv_utf7_wchar()
184 filter->cache |= n << 2; in mbfl_filt_conv_utf7_wchar()
185 filter->status = 7; in mbfl_filt_conv_utf7_wchar()
188 s = ((n >> 4) & 0x3) | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
190 filter->status = 8; in mbfl_filt_conv_utf7_wchar()
193 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
196 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
197 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
199 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
203 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
206 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
207 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
212 filter->cache |= n << 6; in mbfl_filt_conv_utf7_wchar()
213 filter->status = 9; in mbfl_filt_conv_utf7_wchar()
216 s = n | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
217 filter->status = 2; in mbfl_filt_conv_utf7_wchar()
220 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
223 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
224 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
226 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
230 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
233 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
234 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
239 filter->status = 0; in mbfl_filt_conv_utf7_wchar()
249 int mbfl_filt_conv_wchar_utf7(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_wchar_utf7() argument
294 CK((*filter->filter_function)(s, filter)); in mbfl_filt_conv_wchar_utf7()
296 CK((*filter->filter_function)(s, filter)); in mbfl_filt_conv_wchar_utf7()
299 CK(mbfl_filt_conv_illegal_output(c, filter)); in mbfl_filt_conv_wchar_utf7()
303 switch (filter->status) { in mbfl_filt_conv_wchar_utf7()
306 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_wchar_utf7()
308 CK((*filter->output_function)(0x2b, filter->data)); /* '+' */ in mbfl_filt_conv_wchar_utf7()
309 filter->status++; in mbfl_filt_conv_wchar_utf7()
310 filter->cache = c; in mbfl_filt_conv_wchar_utf7()
316 s = filter->cache; in mbfl_filt_conv_wchar_utf7()
317 CK((*filter->output_function)(mbfl_base64_table[(s >> 10) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
318 CK((*filter->output_function)(mbfl_base64_table[(s >> 4) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
320 CK((*filter->output_function)(mbfl_base64_table[(s << 2) & 0x3c], filter->data)); in mbfl_filt_conv_wchar_utf7()
322 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7()
324 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_wchar_utf7()
325 filter->status = 0; in mbfl_filt_conv_wchar_utf7()
327 filter->status++; in mbfl_filt_conv_wchar_utf7()
328 filter->cache = ((s & 0xf) << 16) | c; in mbfl_filt_conv_wchar_utf7()
333 s = filter->cache; in mbfl_filt_conv_wchar_utf7()
334 CK((*filter->output_function)(mbfl_base64_table[(s >> 14) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
335 CK((*filter->output_function)(mbfl_base64_table[(s >> 8) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
336 CK((*filter->output_function)(mbfl_base64_table[(s >> 2) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
338 CK((*filter->output_function)(mbfl_base64_table[(s << 4) & 0x30], filter->data)); in mbfl_filt_conv_wchar_utf7()
340 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7()
342 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_wchar_utf7()
343 filter->status = 0; in mbfl_filt_conv_wchar_utf7()
345 filter->status++; in mbfl_filt_conv_wchar_utf7()
346 filter->cache = ((s & 0x3) << 16) | c; in mbfl_filt_conv_wchar_utf7()
351 s = filter->cache; in mbfl_filt_conv_wchar_utf7()
352 CK((*filter->output_function)(mbfl_base64_table[(s >> 12) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
353 CK((*filter->output_function)(mbfl_base64_table[(s >> 6) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
354 CK((*filter->output_function)(mbfl_base64_table[s & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7()
357 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7()
359 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_wchar_utf7()
360 filter->status = 0; in mbfl_filt_conv_wchar_utf7()
362 filter->status = 1; in mbfl_filt_conv_wchar_utf7()
363 filter->cache = c; in mbfl_filt_conv_wchar_utf7()
368 filter->status = 0; in mbfl_filt_conv_wchar_utf7()
376 int mbfl_filt_conv_wchar_utf7_flush(mbfl_convert_filter *filter) in mbfl_filt_conv_wchar_utf7_flush() argument
380 status = filter->status; in mbfl_filt_conv_wchar_utf7_flush()
381 cache = filter->cache; in mbfl_filt_conv_wchar_utf7_flush()
382 filter->status = 0; in mbfl_filt_conv_wchar_utf7_flush()
383 filter->cache = 0; in mbfl_filt_conv_wchar_utf7_flush()
387 CK((*filter->output_function)(mbfl_base64_table[(cache >> 10) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
388 CK((*filter->output_function)(mbfl_base64_table[(cache >> 4) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
389 CK((*filter->output_function)(mbfl_base64_table[(cache << 2) & 0x3c], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
390 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7_flush()
394 CK((*filter->output_function)(mbfl_base64_table[(cache >> 14) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
395 CK((*filter->output_function)(mbfl_base64_table[(cache >> 8) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
396 CK((*filter->output_function)(mbfl_base64_table[(cache >> 2) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
397 CK((*filter->output_function)(mbfl_base64_table[(cache << 4) & 0x30], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
398 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7_flush()
402 CK((*filter->output_function)(mbfl_base64_table[(cache >> 12) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
403 CK((*filter->output_function)(mbfl_base64_table[(cache >> 6) & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
404 CK((*filter->output_function)(mbfl_base64_table[cache & 0x3f], filter->data)); in mbfl_filt_conv_wchar_utf7_flush()
405 CK((*filter->output_function)(0x2d, filter->data)); /* '-' */ in mbfl_filt_conv_wchar_utf7_flush()
409 if (filter->flush_function != NULL) { in mbfl_filt_conv_wchar_utf7_flush()
410 (*filter->flush_function)(filter->data); in mbfl_filt_conv_wchar_utf7_flush()
416 static int mbfl_filt_ident_utf7(int c, mbfl_identify_filter *filter) in mbfl_filt_ident_utf7() argument
420 switch (filter->status) { in mbfl_filt_ident_utf7()
424 filter->status++; in mbfl_filt_ident_utf7()
426 filter->flag = 1; /* bad */ in mbfl_filt_ident_utf7()
446 if (filter->status == 1 && c != 0x2d) { in mbfl_filt_ident_utf7()
447 filter->flag = 1; /* bad */ in mbfl_filt_ident_utf7()
449 filter->flag = 1; /* bad */ in mbfl_filt_ident_utf7()
451 filter->status = 0; in mbfl_filt_ident_utf7()
453 filter->status = 2; in mbfl_filt_ident_utf7()
458 filter->status = 0; in mbfl_filt_ident_utf7()