Mercurial > emacs
comparison src/coding.c @ 89780:a53cb5864a40
(detect_coding_iso_2022): Fix handling of SS2 and SS3.
(detect_coding): Treat '\0' as normal ASCII byte..
(detect_coding_system): Likewise.
| author | Kenichi Handa <handa@m17n.org> |
|---|---|
| date | Thu, 29 Jan 2004 01:25:50 +0000 |
| parents | 74c503490829 |
| children | b5f22f538c1f |
comparison
equal
deleted
inserted
replaced
| 89779:74c503490829 | 89780:a53cb5864a40 |
|---|---|
| 2614 single_shifting = 0; | 2614 single_shifting = 0; |
| 2615 rejected |= CATEGORY_MASK_ISO_7BIT | CATEGORY_MASK_ISO_7_ELSE; | 2615 rejected |= CATEGORY_MASK_ISO_7BIT | CATEGORY_MASK_ISO_7_ELSE; |
| 2616 found |= CATEGORY_MASK_ISO_8_ELSE; | 2616 found |= CATEGORY_MASK_ISO_8_ELSE; |
| 2617 goto check_extra_latin; | 2617 goto check_extra_latin; |
| 2618 | 2618 |
| 2619 | |
| 2620 case ISO_CODE_SS2: | 2619 case ISO_CODE_SS2: |
| 2621 case ISO_CODE_SS3: | 2620 case ISO_CODE_SS3: |
| 2622 /* Single shift. */ | 2621 /* Single shift. */ |
| 2623 if (inhibit_iso_escape_detection) | 2622 if (inhibit_iso_escape_detection) |
| 2624 break; | 2623 break; |
| 2625 single_shifting = 1; | 2624 single_shifting = 0; |
| 2626 rejected |= CATEGORY_MASK_ISO_7BIT; | 2625 rejected |= CATEGORY_MASK_ISO_7BIT; |
| 2627 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_1]) | 2626 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_1]) |
| 2628 & CODING_ISO_FLAG_SINGLE_SHIFT) | 2627 & CODING_ISO_FLAG_SINGLE_SHIFT) |
| 2629 found |= CATEGORY_MASK_ISO_8_1; | 2628 found |= CATEGORY_MASK_ISO_8_1, single_shifting = 1; |
| 2630 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_2]) | 2629 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_2]) |
| 2631 & CODING_ISO_FLAG_SINGLE_SHIFT) | 2630 & CODING_ISO_FLAG_SINGLE_SHIFT) |
| 2632 found |= CATEGORY_MASK_ISO_8_2; | 2631 found |= CATEGORY_MASK_ISO_8_2, single_shifting = 1; |
| 2632 if (single_shifting) | |
| 2633 break; | |
| 2633 goto check_extra_latin; | 2634 goto check_extra_latin; |
| 2634 | 2635 |
| 2635 default: | 2636 default: |
| 2636 if (c < 0) | 2637 if (c < 0) |
| 2637 continue; | 2638 continue; |
| 2678 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_1]) | 2679 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_1]) |
| 2679 & CODING_ISO_FLAG_LATIN_EXTRA) | 2680 & CODING_ISO_FLAG_LATIN_EXTRA) |
| 2680 found |= CATEGORY_MASK_ISO_8_1; | 2681 found |= CATEGORY_MASK_ISO_8_1; |
| 2681 else | 2682 else |
| 2682 rejected |= CATEGORY_MASK_ISO_8_1; | 2683 rejected |= CATEGORY_MASK_ISO_8_1; |
| 2683 if (CODING_ISO_FLAGS (&coding_categories[coding_category_iso_8_2]) | 2684 rejected |= CATEGORY_MASK_ISO_8_2; |
| 2684 & CODING_ISO_FLAG_LATIN_EXTRA) | |
| 2685 found |= CATEGORY_MASK_ISO_8_2; | |
| 2686 else | |
| 2687 rejected |= CATEGORY_MASK_ISO_8_2; | |
| 2688 } | 2685 } |
| 2689 } | 2686 } |
| 2690 detect_info->rejected |= CATEGORY_MASK_ISO; | 2687 detect_info->rejected |= CATEGORY_MASK_ISO; |
| 2691 return 0; | 2688 return 0; |
| 2692 | 2689 |
| 5347 int c, i; | 5344 int c, i; |
| 5348 | 5345 |
| 5349 for (i = 0, src = coding->source; src < src_end; i++, src++) | 5346 for (i = 0, src = coding->source; src < src_end; i++, src++) |
| 5350 { | 5347 { |
| 5351 c = *src; | 5348 c = *src; |
| 5352 if (c & 0x80 || (c < 0x20 && (c == 0 | 5349 if (c & 0x80 || (c < 0x20 && (c == ISO_CODE_ESC |
| 5353 || c == ISO_CODE_ESC | |
| 5354 || c == ISO_CODE_SI | 5350 || c == ISO_CODE_SI |
| 5355 || c == ISO_CODE_SO))) | 5351 || c == ISO_CODE_SO))) |
| 5356 break; | 5352 break; |
| 5357 } | 5353 } |
| 5358 coding->head_ascii = src - (coding->source + coding->consumed); | 5354 coding->head_ascii = src - (coding->source + coding->consumed); |
| 6876 | 6872 |
| 6877 /* Skip all ASCII bytes except for a few ISO2022 controls. */ | 6873 /* Skip all ASCII bytes except for a few ISO2022 controls. */ |
| 6878 for (i = 0; src < src_end; i++, src++) | 6874 for (i = 0; src < src_end; i++, src++) |
| 6879 { | 6875 { |
| 6880 c = *src; | 6876 c = *src; |
| 6881 if (c & 0x80 || (c < 0x20 && (c == 0 | 6877 if (c & 0x80 || (c < 0x20 && (c == ISO_CODE_ESC |
| 6882 || c == ISO_CODE_ESC | |
| 6883 || c == ISO_CODE_SI | 6878 || c == ISO_CODE_SI |
| 6884 || c == ISO_CODE_SO))) | 6879 || c == ISO_CODE_SO))) |
| 6885 break; | 6880 break; |
| 6886 } | 6881 } |
| 6887 coding.head_ascii = src - coding.source; | 6882 coding.head_ascii = src - coding.source; |
