Lines Matching refs:filter

37 static int mbfl_filt_ident_utf7(int c, mbfl_identify_filter *filter);
94 int mbfl_filt_conv_utf7_wchar(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_utf7_wchar() argument
99 if (filter->status != 0) { /* Modified Base64 */ in mbfl_filt_conv_utf7_wchar()
113 if (filter->status == 1) { /* "+-" -> "+" */ in mbfl_filt_conv_utf7_wchar()
114 CK((*filter->output_function)(0x2b, filter->data)); in mbfl_filt_conv_utf7_wchar()
117 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_utf7_wchar()
121 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
123 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
124 filter->status = 0; in mbfl_filt_conv_utf7_wchar()
129 switch (filter->status) { in mbfl_filt_conv_utf7_wchar()
133 filter->status = 1; in mbfl_filt_conv_utf7_wchar()
135 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_utf7_wchar()
139 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
146 filter->cache |= n << 10; in mbfl_filt_conv_utf7_wchar()
147 filter->status = 3; in mbfl_filt_conv_utf7_wchar()
150 filter->cache |= n << 4; in mbfl_filt_conv_utf7_wchar()
151 filter->status = 4; in mbfl_filt_conv_utf7_wchar()
154 s = ((n >> 2) & 0xf) | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
156 filter->status = 5; in mbfl_filt_conv_utf7_wchar()
159 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
162 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
163 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
165 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
169 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
172 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
173 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
178 filter->cache |= n << 8; in mbfl_filt_conv_utf7_wchar()
179 filter->status = 6; in mbfl_filt_conv_utf7_wchar()
182 filter->cache |= n << 2; in mbfl_filt_conv_utf7_wchar()
183 filter->status = 7; in mbfl_filt_conv_utf7_wchar()
186 s = ((n >> 4) & 0x3) | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
188 filter->status = 8; in mbfl_filt_conv_utf7_wchar()
191 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
194 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
195 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
197 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
201 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
204 filter->cache = n; in mbfl_filt_conv_utf7_wchar()
205 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
210 filter->cache |= n << 6; in mbfl_filt_conv_utf7_wchar()
211 filter->status = 9; in mbfl_filt_conv_utf7_wchar()
214 s = n | (filter->cache & 0xffff); in mbfl_filt_conv_utf7_wchar()
215 filter->status = 2; in mbfl_filt_conv_utf7_wchar()
218 filter->cache = s; in mbfl_filt_conv_utf7_wchar()
221 s |= (filter->cache & 0xfff0000) >> 6; in mbfl_filt_conv_utf7_wchar()
222 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
224 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
228 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
231 filter->cache = 0; in mbfl_filt_conv_utf7_wchar()
232 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_utf7_wchar()
237 filter->status = 0; in mbfl_filt_conv_utf7_wchar()
247 int mbfl_filt_conv_wchar_utf7(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_wchar_utf7() argument
292 CK((*filter->filter_function)(s, filter)); in mbfl_filt_conv_wchar_utf7()
294 CK((*filter->filter_function)(s, filter)); in mbfl_filt_conv_wchar_utf7()
297 if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { in mbfl_filt_conv_wchar_utf7()
298 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()