diff options
| author | Kenichi Handa | 2003-05-22 05:53:23 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2003-05-22 05:53:23 +0000 |
| commit | 0eecad4333fc4bb4223e6c9b577e376a002aba48 (patch) | |
| tree | 5011efe567881aeb3da7795401528adb017075c0 /src/coding.c | |
| parent | cbb76662ea2dfe92eb141bde926336f2cdc0be60 (diff) | |
| download | emacs-0eecad4333fc4bb4223e6c9b577e376a002aba48.tar.gz emacs-0eecad4333fc4bb4223e6c9b577e376a002aba48.zip | |
(ENCODE_UNSAFE_CHARACTER): Adjusted for the name change
of CODING_REPLACEMENT_CHARACTER.
(decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set
CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and
check this flag on encoding.
(encode_coding_sjis_big5): Check
CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode.
(Fset_terminal_coding_system_internal): Set
CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode
instead of setting CODING_FLAG_ISO_SAFE flag in
terminal_coding.flags.
Diffstat (limited to 'src/coding.c')
| -rw-r--r-- | src/coding.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/coding.c b/src/coding.c index 2867a0dc233..b19ceda532e 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -2301,11 +2301,11 @@ decode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) | |||
| 2301 | 2301 | ||
| 2302 | /* Instead of encoding character C, produce one or two `?'s. */ | 2302 | /* Instead of encoding character C, produce one or two `?'s. */ |
| 2303 | 2303 | ||
| 2304 | #define ENCODE_UNSAFE_CHARACTER(c) \ | 2304 | #define ENCODE_UNSAFE_CHARACTER(c) \ |
| 2305 | do { \ | 2305 | do { \ |
| 2306 | ENCODE_ISO_CHARACTER (CODING_INHIBIT_CHARACTER_SUBSTITUTION); \ | 2306 | ENCODE_ISO_CHARACTER (CODING_REPLACEMENT_CHARACTER); \ |
| 2307 | if (CHARSET_WIDTH (CHAR_CHARSET (c)) > 1) \ | 2307 | if (CHARSET_WIDTH (CHAR_CHARSET (c)) > 1) \ |
| 2308 | ENCODE_ISO_CHARACTER (CODING_INHIBIT_CHARACTER_SUBSTITUTION); \ | 2308 | ENCODE_ISO_CHARACTER (CODING_REPLACEMENT_CHARACTER); \ |
| 2309 | } while (0) | 2309 | } while (0) |
| 2310 | 2310 | ||
| 2311 | 2311 | ||
| @@ -2534,6 +2534,9 @@ encode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) | |||
| 2534 | Lisp_Object translation_table; | 2534 | Lisp_Object translation_table; |
| 2535 | Lisp_Object safe_chars; | 2535 | Lisp_Object safe_chars; |
| 2536 | 2536 | ||
| 2537 | if (coding->flags & CODING_FLAG_ISO_SAFE) | ||
| 2538 | coding->mode |= CODING_MODE_INHIBIT_UNENCODABLE_CHAR; | ||
| 2539 | |||
| 2537 | safe_chars = coding_safe_chars (coding->symbol); | 2540 | safe_chars = coding_safe_chars (coding->symbol); |
| 2538 | 2541 | ||
| 2539 | if (NILP (Venable_character_translation)) | 2542 | if (NILP (Venable_character_translation)) |
| @@ -2601,7 +2604,7 @@ encode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) | |||
| 2601 | } | 2604 | } |
| 2602 | else | 2605 | else |
| 2603 | { | 2606 | { |
| 2604 | if (coding->flags & CODING_FLAG_ISO_SAFE | 2607 | if (coding->mode & CODING_MODE_INHIBIT_UNENCODABLE_CHAR |
| 2605 | && ! CODING_SAFE_CHAR_P (safe_chars, c)) | 2608 | && ! CODING_SAFE_CHAR_P (safe_chars, c)) |
| 2606 | ENCODE_UNSAFE_CHARACTER (c); | 2609 | ENCODE_UNSAFE_CHARACTER (c); |
| 2607 | else | 2610 | else |
| @@ -2670,7 +2673,7 @@ encode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) | |||
| 2670 | *dst++ = c; | 2673 | *dst++ = c; |
| 2671 | coding->errors++; | 2674 | coding->errors++; |
| 2672 | } | 2675 | } |
| 2673 | else if (coding->flags & CODING_FLAG_ISO_SAFE | 2676 | else if (coding->mode & CODING_MODE_INHIBIT_UNENCODABLE_CHAR |
| 2674 | && ! CODING_SAFE_CHAR_P (safe_chars, c)) | 2677 | && ! CODING_SAFE_CHAR_P (safe_chars, c)) |
| 2675 | ENCODE_UNSAFE_CHARACTER (c); | 2678 | ENCODE_UNSAFE_CHARACTER (c); |
| 2676 | else | 2679 | else |
| @@ -3113,6 +3116,12 @@ encode_coding_sjis_big5 (coding, source, destination, | |||
| 3113 | EMIT_ONE_BYTE (c1 | 0x80); | 3116 | EMIT_ONE_BYTE (c1 | 0x80); |
| 3114 | else if (charset == charset_latin_jisx0201) | 3117 | else if (charset == charset_latin_jisx0201) |
| 3115 | EMIT_ONE_BYTE (c1); | 3118 | EMIT_ONE_BYTE (c1); |
| 3119 | else if (coding->mode & CODING_MODE_INHIBIT_UNENCODABLE_CHAR) | ||
| 3120 | { | ||
| 3121 | EMIT_ONE_BYTE (CODING_REPLACEMENT_CHARACTER); | ||
| 3122 | if (CHARSET_WIDTH (charset) > 1) | ||
| 3123 | EMIT_ONE_BYTE (CODING_REPLACEMENT_CHARACTER); | ||
| 3124 | } | ||
| 3116 | else | 3125 | else |
| 3117 | /* There's no way other than producing the internal | 3126 | /* There's no way other than producing the internal |
| 3118 | codes as is. */ | 3127 | codes as is. */ |
| @@ -3125,6 +3134,12 @@ encode_coding_sjis_big5 (coding, source, destination, | |||
| 3125 | ENCODE_BIG5 (charset, c1, c2, c1, c2); | 3134 | ENCODE_BIG5 (charset, c1, c2, c1, c2); |
| 3126 | EMIT_TWO_BYTES (c1, c2); | 3135 | EMIT_TWO_BYTES (c1, c2); |
| 3127 | } | 3136 | } |
| 3137 | else if (coding->mode & CODING_MODE_INHIBIT_UNENCODABLE_CHAR) | ||
| 3138 | { | ||
| 3139 | EMIT_ONE_BYTE (CODING_REPLACEMENT_CHARACTER); | ||
| 3140 | if (CHARSET_WIDTH (charset) > 1) | ||
| 3141 | EMIT_ONE_BYTE (CODING_REPLACEMENT_CHARACTER); | ||
| 3142 | } | ||
| 3128 | else | 3143 | else |
| 3129 | /* There's no way other than producing the internal | 3144 | /* There's no way other than producing the internal |
| 3130 | codes as is. */ | 3145 | codes as is. */ |
| @@ -7023,7 +7038,7 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern | |||
| 7023 | CHECK_SYMBOL (coding_system); | 7038 | CHECK_SYMBOL (coding_system); |
| 7024 | setup_coding_system (Fcheck_coding_system (coding_system), &terminal_coding); | 7039 | setup_coding_system (Fcheck_coding_system (coding_system), &terminal_coding); |
| 7025 | /* We had better not send unsafe characters to terminal. */ | 7040 | /* We had better not send unsafe characters to terminal. */ |
| 7026 | terminal_coding.flags |= CODING_FLAG_ISO_SAFE; | 7041 | terminal_coding.mode |= CODING_MODE_INHIBIT_UNENCODABLE_CHAR; |
| 7027 | /* Character composition should be disabled. */ | 7042 | /* Character composition should be disabled. */ |
| 7028 | terminal_coding.composing = COMPOSITION_DISABLED; | 7043 | terminal_coding.composing = COMPOSITION_DISABLED; |
| 7029 | /* Error notification should be suppressed. */ | 7044 | /* Error notification should be suppressed. */ |