summaryrefslogtreecommitdiff
path: root/src/coding.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2002-05-20 12:10:04 +0000
committerKenichi Handa <handa@m17n.org>2002-05-20 12:10:04 +0000
commit41cbe562e6f1eec39a045aa27f28e9e798fd56dd (patch)
treeecea32cdcb895b0e820b65caaea4325fc9b458f0 /src/coding.c
parent0e56a02d6d03433723553151837b5ef6190a8026 (diff)
downloademacs-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.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)
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);
+ }
}
}