Mercurial > emacs
changeset 19277:7ea957cd48e2
(encode_terminal_code): Use safe_terminal_coding if
terminal_coding seems to encode Emacs' internal code as is.
(write_glyphs): Likewise.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Sun, 10 Aug 1997 04:13:19 +0000 |
parents | b2c5e1bea50e |
children | 50f47ef6ce9a |
files | src/term.c |
diffstat | 1 files changed, 22 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/term.c Sun Aug 10 04:13:19 1997 +0000 +++ b/src/term.c Sun Aug 10 04:13:19 1997 +0000 @@ -828,8 +828,14 @@ buf = GLYPH_STRING (tbase, g); } - produced = encode_coding (&terminal_coding, buf, dst, - len, dst_end - dst, &processed); + if (CODING_MAY_REQUIRE_NO_CONVERSION (&terminal_coding)) + /* We had better avoid sending Emacs' internal code to + terminal. */ + produced = encode_coding (&safe_terminal_coding, buf, dst, + len, dst_end - dst, &processed); + else + produced = encode_coding (&terminal_coding, buf, dst, + len, dst_end - dst, &processed); if (processed < len) /* We get a carryover because the remaining output buffer is too short. We must break the loop here @@ -897,17 +903,21 @@ string += consumed; } /* We may have to output some codes to terminate the writing. */ - terminal_coding.last_block = 1; - produced = encode_coding (&terminal_coding, (char *)0, conversion_buffer, - 0, conversion_buffer_size, - &consumed); - if (produced > 0) + if (!CODING_MAY_REQUIRE_NO_CONVERSION (&terminal_coding)) { - fwrite (conversion_buffer, 1, produced, stdout); - if (ferror (stdout)) - clearerr (stdout); - if (termscript) - fwrite (conversion_buffer, 1, produced, termscript); + terminal_coding.last_block = 1; + produced = encode_coding (&terminal_coding, (char *)0, conversion_buffer, + 0, conversion_buffer_size, + &consumed); + + if (produced > 0) + { + fwrite (conversion_buffer, 1, produced, stdout); + if (ferror (stdout)) + clearerr (stdout); + if (termscript) + fwrite (conversion_buffer, 1, produced, termscript); + } } cmcheckmagic (); }