aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2002-05-20 12:10:04 +0000
committerKenichi Handa2002-05-20 12:10:04 +0000
commit41cbe562e6f1eec39a045aa27f28e9e798fd56dd (patch)
treeecea32cdcb895b0e820b65caaea4325fc9b458f0 /src
parent0e56a02d6d03433723553151837b5ef6190a8026 (diff)
downloademacs-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.
Diffstat (limited to 'src')
-rw-r--r--src/coding.c44
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