diff options
| author | Kenichi Handa | 2002-05-20 12:10:04 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2002-05-20 12:10:04 +0000 |
| commit | 41cbe562e6f1eec39a045aa27f28e9e798fd56dd (patch) | |
| tree | ecea32cdcb895b0e820b65caaea4325fc9b458f0 | |
| parent | 0e56a02d6d03433723553151837b5ef6190a8026 (diff) | |
| download | emacs-41cbe562e6f1eec39a045aa27f28e9e798fd56dd.tar.gz emacs-41cbe562e6f1eec39a045aa27f28e9e798fd56dd.zip | |
(encode_coding_iso_2022): If coding requires safe
encoding, produce a character specified by
CODING_INHIBIT_CHARACTER_SUBSTITUTION.
(encode_coding_sjis): Likewise.
(encode_coding_big5): Likewise.
(encode_coding_charset): Likewise.
| -rw-r--r-- | src/coding.c | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/coding.c b/src/coding.c index 9bdc985108a..11ccc61984e 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -3488,8 +3488,16 @@ encode_coding_iso_2022 (coding) | |||
| 3488 | 3488 | ||
| 3489 | if (!charset) | 3489 | if (!charset) |
| 3490 | { | 3490 | { |
| 3491 | c = coding->default_char; | 3491 | if (coding->mode & CODING_MODE_SAFE_ENCODING) |
| 3492 | charset = char_charset (c, charset_list, NULL); | 3492 | { |
| 3493 | c = CODING_INHIBIT_CHARACTER_SUBSTITUTION; | ||
| 3494 | charset = CHARSET_FROM_ID (charset_ascii); | ||
| 3495 | } | ||
| 3496 | else | ||
| 3497 | { | ||
| 3498 | c = coding->default_char; | ||
| 3499 | charset = char_charset (c, charset_list, NULL); | ||
| 3500 | } | ||
| 3493 | } | 3501 | } |
| 3494 | ENCODE_ISO_CHARACTER (charset, c); | 3502 | ENCODE_ISO_CHARACTER (charset, c); |
| 3495 | } | 3503 | } |
| @@ -3851,8 +3859,16 @@ encode_coding_sjis (coding) | |||
| 3851 | 3859 | ||
| 3852 | if (!charset) | 3860 | if (!charset) |
| 3853 | { | 3861 | { |
| 3854 | c = coding->default_char; | 3862 | if (coding->mode & CODING_MODE_SAFE_ENCODING) |
| 3855 | charset = char_charset (c, charset_list, &code); | 3863 | { |
| 3864 | code = CODING_INHIBIT_CHARACTER_SUBSTITUTION; | ||
| 3865 | charset = CHARSET_FROM_ID (charset_ascii); | ||
| 3866 | } | ||
| 3867 | else | ||
| 3868 | { | ||
| 3869 | c = coding->default_char; | ||
| 3870 | charset = char_charset (c, charset_list, &code); | ||
| 3871 | } | ||
| 3856 | } | 3872 | } |
| 3857 | if (code == CHARSET_INVALID_CODE (charset)) | 3873 | if (code == CHARSET_INVALID_CODE (charset)) |
| 3858 | abort (); | 3874 | abort (); |
| @@ -3911,8 +3927,16 @@ encode_coding_big5 (coding) | |||
| 3911 | 3927 | ||
| 3912 | if (! charset) | 3928 | if (! charset) |
| 3913 | { | 3929 | { |
| 3914 | c = coding->default_char; | 3930 | if (coding->mode & CODING_MODE_SAFE_ENCODING) |
| 3915 | charset = char_charset (c, charset_list, &code); | 3931 | { |
| 3932 | code = CODING_INHIBIT_CHARACTER_SUBSTITUTION; | ||
| 3933 | charset = CHARSET_FROM_ID (charset_ascii); | ||
| 3934 | } | ||
| 3935 | else | ||
| 3936 | { | ||
| 3937 | c = coding->default_char; | ||
| 3938 | charset = char_charset (c, charset_list, &code); | ||
| 3939 | } | ||
| 3916 | } | 3940 | } |
| 3917 | if (code == CHARSET_INVALID_CODE (charset)) | 3941 | if (code == CHARSET_INVALID_CODE (charset)) |
| 3918 | abort (); | 3942 | abort (); |
| @@ -4372,7 +4396,13 @@ encode_coding_charset (coding) | |||
| 4372 | (code >> 8) & 0xFF, code & 0xFF); | 4396 | (code >> 8) & 0xFF, code & 0xFF); |
| 4373 | } | 4397 | } |
| 4374 | else | 4398 | else |
| 4375 | EMIT_ONE_BYTE (coding->default_char); | 4399 | { |
| 4400 | if (coding->mode & CODING_MODE_SAFE_ENCODING) | ||
| 4401 | c = CODING_INHIBIT_CHARACTER_SUBSTITUTION; | ||
| 4402 | else | ||
| 4403 | c = coding->default_char; | ||
| 4404 | EMIT_ONE_BYTE (c); | ||
| 4405 | } | ||
| 4376 | } | 4406 | } |
| 4377 | } | 4407 | } |
| 4378 | 4408 | ||