diff options
author | Kenichi Handa <handa@m17n.org> | 2002-05-20 12:10:04 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2002-05-20 12:10:04 +0000 |
commit | 41cbe562e6f1eec39a045aa27f28e9e798fd56dd (patch) | |
tree | ecea32cdcb895b0e820b65caaea4325fc9b458f0 /src/coding.c | |
parent | 0e56a02d6d03433723553151837b5ef6190a8026 (diff) | |
download | emacs-41cbe562e6f1eec39a045aa27f28e9e798fd56dd.tar.gz emacs-41cbe562e6f1eec39a045aa27f28e9e798fd56dd.tar.bz2 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.
Diffstat (limited to 'src/coding.c')
-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) if (!charset) { - c = coding->default_char; - charset = char_charset (c, charset_list, NULL); + if (coding->mode & CODING_MODE_SAFE_ENCODING) + { + c = CODING_INHIBIT_CHARACTER_SUBSTITUTION; + charset = CHARSET_FROM_ID (charset_ascii); + } + else + { + c = coding->default_char; + charset = char_charset (c, charset_list, NULL); + } } ENCODE_ISO_CHARACTER (charset, c); } @@ -3851,8 +3859,16 @@ encode_coding_sjis (coding) if (!charset) { - c = coding->default_char; - charset = char_charset (c, charset_list, &code); + if (coding->mode & CODING_MODE_SAFE_ENCODING) + { + code = CODING_INHIBIT_CHARACTER_SUBSTITUTION; + charset = CHARSET_FROM_ID (charset_ascii); + } + else + { + c = coding->default_char; + charset = char_charset (c, charset_list, &code); + } } if (code == CHARSET_INVALID_CODE (charset)) abort (); @@ -3911,8 +3927,16 @@ encode_coding_big5 (coding) if (! charset) { - c = coding->default_char; - charset = char_charset (c, charset_list, &code); + if (coding->mode & CODING_MODE_SAFE_ENCODING) + { + code = CODING_INHIBIT_CHARACTER_SUBSTITUTION; + charset = CHARSET_FROM_ID (charset_ascii); + } + else + { + c = coding->default_char; + charset = char_charset (c, charset_list, &code); + } } if (code == CHARSET_INVALID_CODE (charset)) abort (); @@ -4372,7 +4396,13 @@ encode_coding_charset (coding) (code >> 8) & 0xFF, code & 0xFF); } else - EMIT_ONE_BYTE (coding->default_char); + { + if (coding->mode & CODING_MODE_SAFE_ENCODING) + c = CODING_INHIBIT_CHARACTER_SUBSTITUTION; + else + c = coding->default_char; + EMIT_ONE_BYTE (c); + } } } |