Lines Matching refs:filter

40 static int mbfl_filt_ident_jis(int c, mbfl_identify_filter *filter);
41 static int mbfl_filt_ident_2022jp(int c, mbfl_identify_filter *filter);
117 mbfl_filt_conv_jis_wchar(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_jis_wchar() argument
122 switch (filter->status & 0xf) { in mbfl_filt_conv_jis_wchar()
130 filter->status += 2; in mbfl_filt_conv_jis_wchar()
132 filter->status = 0x20; in mbfl_filt_conv_jis_wchar()
134 filter->status = 0; in mbfl_filt_conv_jis_wchar()
135 } else if (filter->status == 0x10 && c == 0x5c) { /* YEN SIGN */ in mbfl_filt_conv_jis_wchar()
136 CK((*filter->output_function)(0xa5, filter->data)); in mbfl_filt_conv_jis_wchar()
137 } else if (filter->status == 0x10 && c == 0x7e) { /* OVER LINE */ in mbfl_filt_conv_jis_wchar()
138 CK((*filter->output_function)(0x203e, filter->data)); in mbfl_filt_conv_jis_wchar()
139 } else if (filter->status == 0x20 && c > 0x20 && c < 0x60) { /* kana */ in mbfl_filt_conv_jis_wchar()
140 CK((*filter->output_function)(0xff40 + c, filter->data)); in mbfl_filt_conv_jis_wchar()
141 …} else if ((filter->status == 0x80 || filter->status == 0x90) && c > 0x20 && c < 0x7f) { /* kanji… in mbfl_filt_conv_jis_wchar()
142 filter->cache = c; in mbfl_filt_conv_jis_wchar()
143 filter->status += 1; in mbfl_filt_conv_jis_wchar()
145 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_jis_wchar()
147 CK((*filter->output_function)(0xfec0 + c, filter->data)); in mbfl_filt_conv_jis_wchar()
151 CK((*filter->output_function)(w, filter->data)); in mbfl_filt_conv_jis_wchar()
158 filter->status &= ~0xf; in mbfl_filt_conv_jis_wchar()
159 c1 = filter->cache; in mbfl_filt_conv_jis_wchar()
162 if (filter->status == 0x80) { in mbfl_filt_conv_jis_wchar()
185 CK((*filter->output_function)(w, filter->data)); in mbfl_filt_conv_jis_wchar()
187 filter->status += 2; in mbfl_filt_conv_jis_wchar()
189 CK((*filter->output_function)(c, filter->data)); in mbfl_filt_conv_jis_wchar()
194 CK((*filter->output_function)(w, filter->data)); in mbfl_filt_conv_jis_wchar()
206 filter->status++; in mbfl_filt_conv_jis_wchar()
208 filter->status += 3; in mbfl_filt_conv_jis_wchar()
210 filter->status &= ~0xf; in mbfl_filt_conv_jis_wchar()
211 CK((*filter->output_function)(0x1b, filter->data)); in mbfl_filt_conv_jis_wchar()
224 filter->status = 0x80; in mbfl_filt_conv_jis_wchar()
226 filter->status++; in mbfl_filt_conv_jis_wchar()
228 filter->status &= ~0xf; in mbfl_filt_conv_jis_wchar()
229 CK((*filter->output_function)(0x1b, filter->data)); in mbfl_filt_conv_jis_wchar()
230 CK((*filter->output_function)(0x24, filter->data)); in mbfl_filt_conv_jis_wchar()
243 filter->status = 0x80; in mbfl_filt_conv_jis_wchar()
245 filter->status = 0x90; in mbfl_filt_conv_jis_wchar()
247 filter->status &= ~0xf; in mbfl_filt_conv_jis_wchar()
248 CK((*filter->output_function)(0x1b, filter->data)); in mbfl_filt_conv_jis_wchar()
249 CK((*filter->output_function)(0x24, filter->data)); in mbfl_filt_conv_jis_wchar()
250 CK((*filter->output_function)(0x28, filter->data)); in mbfl_filt_conv_jis_wchar()
263 filter->status = 0; in mbfl_filt_conv_jis_wchar()
265 filter->status = 0x10; in mbfl_filt_conv_jis_wchar()
267 filter->status = 0x20; in mbfl_filt_conv_jis_wchar()
269 filter->status &= ~0xf; in mbfl_filt_conv_jis_wchar()
270 CK((*filter->output_function)(0x1b, filter->data)); in mbfl_filt_conv_jis_wchar()
271 CK((*filter->output_function)(0x28, filter->data)); in mbfl_filt_conv_jis_wchar()
277 filter->status = 0; in mbfl_filt_conv_jis_wchar()
288 mbfl_filt_conv_wchar_jis(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_wchar_jis() argument
336 if ((filter->status & 0xff00) != 0) { in mbfl_filt_conv_wchar_jis()
337 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_jis()
338 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_jis()
339 CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ in mbfl_filt_conv_wchar_jis()
341 filter->status = 0; in mbfl_filt_conv_wchar_jis()
342 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_wchar_jis()
344 if ((filter->status & 0xff00) != 0x100) { in mbfl_filt_conv_wchar_jis()
345 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_jis()
346 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_jis()
347 CK((*filter->output_function)(0x49, filter->data)); /* 'I' */ in mbfl_filt_conv_wchar_jis()
349 filter->status = 0x100; in mbfl_filt_conv_wchar_jis()
350 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
352 if ((filter->status & 0xff00) != 0x200) { in mbfl_filt_conv_wchar_jis()
353 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_jis()
354 CK((*filter->output_function)(0x24, filter->data)); /* '$' */ in mbfl_filt_conv_wchar_jis()
355 CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ in mbfl_filt_conv_wchar_jis()
357 filter->status = 0x200; in mbfl_filt_conv_wchar_jis()
358 CK((*filter->output_function)((s >> 8) & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
359 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
361 if ((filter->status & 0xff00) != 0x300) { in mbfl_filt_conv_wchar_jis()
362 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_jis()
363 CK((*filter->output_function)(0x24, filter->data)); /* '$' */ in mbfl_filt_conv_wchar_jis()
364 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_jis()
365 CK((*filter->output_function)(0x44, filter->data)); /* 'D' */ in mbfl_filt_conv_wchar_jis()
367 filter->status = 0x300; in mbfl_filt_conv_wchar_jis()
368 CK((*filter->output_function)((s >> 8) & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
369 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
371 if ((filter->status & 0xff00) != 0x400) { in mbfl_filt_conv_wchar_jis()
372 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_jis()
373 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_jis()
374 CK((*filter->output_function)(0x4a, filter->data)); /* 'J' */ in mbfl_filt_conv_wchar_jis()
376 filter->status = 0x400; in mbfl_filt_conv_wchar_jis()
377 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_jis()
380 if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { in mbfl_filt_conv_wchar_jis()
381 CK(mbfl_filt_conv_illegal_output(c, filter)); in mbfl_filt_conv_wchar_jis()
393 mbfl_filt_conv_wchar_2022jp(int c, mbfl_convert_filter *filter) in mbfl_filt_conv_wchar_2022jp() argument
437 if ((filter->status & 0xff00) != 0) { in mbfl_filt_conv_wchar_2022jp()
438 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_2022jp()
439 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_2022jp()
440 CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ in mbfl_filt_conv_wchar_2022jp()
442 filter->status = 0; in mbfl_filt_conv_wchar_2022jp()
443 CK((*filter->output_function)(s, filter->data)); in mbfl_filt_conv_wchar_2022jp()
445 if ((filter->status & 0xff00) != 0x200) { in mbfl_filt_conv_wchar_2022jp()
446 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_2022jp()
447 CK((*filter->output_function)(0x24, filter->data)); /* '$' */ in mbfl_filt_conv_wchar_2022jp()
448 CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ in mbfl_filt_conv_wchar_2022jp()
450 filter->status = 0x200; in mbfl_filt_conv_wchar_2022jp()
451 CK((*filter->output_function)((s >> 8) & 0x7f, filter->data)); in mbfl_filt_conv_wchar_2022jp()
452 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_2022jp()
454 if ((filter->status & 0xff00) != 0x400) { in mbfl_filt_conv_wchar_2022jp()
455 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_wchar_2022jp()
456 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_wchar_2022jp()
457 CK((*filter->output_function)(0x4a, filter->data)); /* 'J' */ in mbfl_filt_conv_wchar_2022jp()
459 filter->status = 0x400; in mbfl_filt_conv_wchar_2022jp()
460 CK((*filter->output_function)(s & 0x7f, filter->data)); in mbfl_filt_conv_wchar_2022jp()
463 if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { in mbfl_filt_conv_wchar_2022jp()
464 CK(mbfl_filt_conv_illegal_output(c, filter)); in mbfl_filt_conv_wchar_2022jp()
472 mbfl_filt_conv_any_jis_flush(mbfl_convert_filter *filter) in mbfl_filt_conv_any_jis_flush() argument
475 if ((filter->status & 0xff00) != 0) { in mbfl_filt_conv_any_jis_flush()
476 CK((*filter->output_function)(0x1b, filter->data)); /* ESC */ in mbfl_filt_conv_any_jis_flush()
477 CK((*filter->output_function)(0x28, filter->data)); /* '(' */ in mbfl_filt_conv_any_jis_flush()
478 CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ in mbfl_filt_conv_any_jis_flush()
480 filter->status &= 0xff; in mbfl_filt_conv_any_jis_flush()
482 if (filter->flush_function != NULL) { in mbfl_filt_conv_any_jis_flush()
483 return (*filter->flush_function)(filter->data); in mbfl_filt_conv_any_jis_flush()
489 static int mbfl_filt_ident_jis(int c, mbfl_identify_filter *filter) in mbfl_filt_ident_jis() argument
492 switch (filter->status & 0xf) { in mbfl_filt_ident_jis()
500 filter->status += 2; in mbfl_filt_ident_jis()
502 filter->status = 0x20; in mbfl_filt_ident_jis()
504 filter->status = 0; in mbfl_filt_ident_jis()
505 …} else if ((filter->status == 0x80 || filter->status == 0x90) && c > 0x20 && c < 0x7f) { /* kanji… in mbfl_filt_ident_jis()
506 filter->status += 1; in mbfl_filt_ident_jis()
510 filter->flag = 1; /* bad */ in mbfl_filt_ident_jis()
517 filter->status &= ~0xf; in mbfl_filt_ident_jis()
521 filter->flag = 1; in mbfl_filt_ident_jis()
528 filter->status++; in mbfl_filt_ident_jis()
530 filter->status += 3; in mbfl_filt_ident_jis()
532 filter->flag = 1; /* bad */ in mbfl_filt_ident_jis()
533 filter->status &= ~0xf; in mbfl_filt_ident_jis()
541 filter->status = 0x80; in mbfl_filt_ident_jis()
543 filter->status++; in mbfl_filt_ident_jis()
545 filter->flag = 1; /* bad */ in mbfl_filt_ident_jis()
546 filter->status &= ~0xf; in mbfl_filt_ident_jis()
554 filter->status = 0x80; in mbfl_filt_ident_jis()
556 filter->status = 0x90; in mbfl_filt_ident_jis()
558 filter->flag = 1; /* bad */ in mbfl_filt_ident_jis()
559 filter->status &= ~0xf; in mbfl_filt_ident_jis()
567 filter->status = 0; in mbfl_filt_ident_jis()
569 filter->status = 0x10; in mbfl_filt_ident_jis()
571 filter->status = 0x20; in mbfl_filt_ident_jis()
573 filter->flag = 1; /* bad */ in mbfl_filt_ident_jis()
574 filter->status &= ~0xf; in mbfl_filt_ident_jis()
580 filter->status = 0; in mbfl_filt_ident_jis()
587 static int mbfl_filt_ident_2022jp(int c, mbfl_identify_filter *filter) in mbfl_filt_ident_2022jp() argument
590 switch (filter->status & 0xf) { in mbfl_filt_ident_2022jp()
596 filter->status += 2; in mbfl_filt_ident_2022jp()
597 } else if (filter->status == 0x80 && c > 0x20 && c < 0x7f) { /* kanji first char */ in mbfl_filt_ident_2022jp()
598 filter->status += 1; in mbfl_filt_ident_2022jp()
602 filter->flag = 1; /* bad */ in mbfl_filt_ident_2022jp()
609 filter->status++; in mbfl_filt_ident_2022jp()
611 filter->status &= ~0xf; in mbfl_filt_ident_2022jp()
613 filter->flag = 1; in mbfl_filt_ident_2022jp()
621 filter->status++; in mbfl_filt_ident_2022jp()
623 filter->status += 3; in mbfl_filt_ident_2022jp()
625 filter->flag = 1; /* bad */ in mbfl_filt_ident_2022jp()
626 filter->status &= ~0xf; in mbfl_filt_ident_2022jp()
634 filter->status = 0x80; in mbfl_filt_ident_2022jp()
636 filter->flag = 1; /* bad */ in mbfl_filt_ident_2022jp()
637 filter->status &= ~0xf; in mbfl_filt_ident_2022jp()
645 filter->status = 0; in mbfl_filt_ident_2022jp()
647 filter->status = 0x10; in mbfl_filt_ident_2022jp()
649 filter->flag = 1; /* bad */ in mbfl_filt_ident_2022jp()
650 filter->status &= ~0xf; in mbfl_filt_ident_2022jp()
656 filter->status = 0; in mbfl_filt_ident_2022jp()