Mercurial > emacs
changeset 88385:c60e206fcf58
Include "character.h" instead of "charset.h".
(read_process_output): Adjusted for the new code-conversion API.
(send_process): Likewise.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 01 Mar 2002 01:45:23 +0000 |
parents | 4bff91d684f4 |
children | 3ba2c6782b10 |
files | src/process.c |
diffstat | 1 files changed, 48 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/src/process.c Fri Mar 01 01:45:03 2002 +0000 +++ b/src/process.c Fri Mar 01 01:45:23 2002 +0000 @@ -98,7 +98,7 @@ #include "lisp.h" #include "window.h" #include "buffer.h" -#include "charset.h" +#include "character.h" #include "coding.h" #include "process.h" #include "termhooks.h" @@ -3011,17 +3011,17 @@ save the match data in a special nonrecursive fashion. */ running_asynch_code = 1; - text = decode_coding_string (make_unibyte_string (chars, nbytes), - coding, 0); + decode_coding_c_string (coding, chars, nbytes, Qt); + text = coding->dst_object; if (NILP (buffer_defaults.enable_multibyte_characters)) /* We had better return unibyte string. */ text = string_make_unibyte (text); - Vlast_coding_system_used = coding->symbol; + Vlast_coding_system_used = CODING_ID_NAME (coding->id); /* A new coding system might be found. */ - if (!EQ (p->decode_coding_system, coding->symbol)) + if (!EQ (p->decode_coding_system, Vlast_coding_system_used)) { - p->decode_coding_system = coding->symbol; + p->decode_coding_system = Vlast_coding_system_used; /* Don't call setup_coding_system for proc_decode_coding_system[channel] here. It is done in @@ -3037,8 +3037,8 @@ if (NILP (p->encode_coding_system) && proc_encode_coding_system[XINT (p->outfd)]) { - p->encode_coding_system = coding->symbol; - setup_coding_system (coding->symbol, + p->encode_coding_system = Vlast_coding_system_used; + setup_coding_system (p->encode_coding_system, proc_encode_coding_system[XINT (p->outfd)]); } } @@ -3128,19 +3128,19 @@ if (! (BEGV <= PT && PT <= ZV)) Fwiden (); - text = decode_coding_string (make_unibyte_string (chars, nbytes), - coding, 0); - Vlast_coding_system_used = coding->symbol; + decode_coding_c_string (coding, chars, nbytes, Qt); + text = coding->dst_object; + Vlast_coding_system_used = CODING_ID_NAME (coding->id); /* A new coding system might be found. See the comment in the similar code in the previous `if' block. */ - if (!EQ (p->decode_coding_system, coding->symbol)) + if (!EQ (p->decode_coding_system, Vlast_coding_system_used)) { - p->decode_coding_system = coding->symbol; + p->decode_coding_system = Vlast_coding_system_used; if (NILP (p->encode_coding_system) && proc_encode_coding_system[XINT (p->outfd)]) { - p->encode_coding_system = coding->symbol; - setup_coding_system (coding->symbol, + p->encode_coding_system = Vlast_coding_system_used; + setup_coding_system (p->encode_coding_system, proc_encode_coding_system[XINT (p->outfd)]); } } @@ -3269,86 +3269,77 @@ XSTRING (XPROCESS (proc)->name)->data); coding = proc_encode_coding_system[XINT (XPROCESS (proc)->outfd)]; - Vlast_coding_system_used = coding->symbol; + Vlast_coding_system_used = CODING_ID_NAME (coding->id); if ((STRINGP (object) && STRING_MULTIBYTE (object)) || (BUFFERP (object) && !NILP (XBUFFER (object)->enable_multibyte_characters)) || EQ (object, Qt)) { - if (!EQ (coding->symbol, XPROCESS (proc)->encode_coding_system)) + if (!EQ (Vlast_coding_system_used, + XPROCESS (proc)->encode_coding_system)) /* The coding system for encoding was changed to raw-text because we sent a unibyte text previously. Now we are sending a multibyte text, thus we must encode it by the original coding system specified for the current process. */ setup_coding_system (XPROCESS (proc)->encode_coding_system, coding); - /* src_multibyte should be set to 1 _after_ a call to - setup_coding_system, since it resets src_multibyte to - zero. */ - coding->src_multibyte = 1; } else { /* For sending a unibyte text, character code conversion should not take place but EOL conversion should. So, setup raw-text or one of the subsidiary if we have not yet done it. */ - if (coding->type != coding_type_raw_text) + if (CODING_REQUIRE_ENCODING (coding)) { if (CODING_REQUIRE_FLUSHING (coding)) { /* But, before changing the coding, we must flush out data. */ coding->mode |= CODING_MODE_LAST_BLOCK; send_process (proc, "", 0, Qt); + coding->mode &= ~CODING_MODE_LAST_BLOCK; } coding->src_multibyte = 0; - setup_raw_text_coding_system (coding); + setup_coding_system (raw_text_coding_system + (Vlast_coding_system_used), + coding); } } coding->dst_multibyte = 0; if (CODING_REQUIRE_ENCODING (coding)) { - int require = encoding_buffer_size (coding, len); - int from_byte = -1, from = -1, to = -1; - unsigned char *temp_buf = NULL; - + coding->dst_object = Qt; if (BUFFERP (object)) { - from_byte = BUF_PTR_BYTE_POS (XBUFFER (object), buf); - from = buf_bytepos_to_charpos (XBUFFER (object), from_byte); - to = buf_bytepos_to_charpos (XBUFFER (object), from_byte + len); + int from_byte, from, to; + int save_pt, save_pt_byte; + struct buffer *cur = current_buffer; + + set_buffer_internal (XBUFFER (object)); + save_pt = PT, save_pt_byte = PT_BYTE; + + from_byte = PTR_BYTE_POS (buf); + from = BYTE_TO_CHAR (from_byte); + to = BYTE_TO_CHAR (from_byte + len); + TEMP_SET_PT_BOTH (from, from_byte); + encode_coding_object (coding, object, from, from_byte, + to, from_byte + len, Qt); + TEMP_SET_PT_BOTH (save_pt, save_pt_byte); + set_buffer_internal (cur); } else if (STRINGP (object)) { - from_byte = buf - XSTRING (object)->data; - from = string_byte_to_char (object, from_byte); - to = string_byte_to_char (object, from_byte + len); - } - - if (coding->composing != COMPOSITION_DISABLED) - { - if (from_byte >= 0) - coding_save_composition (coding, from, to, object); - else - coding->composing = COMPOSITION_DISABLED; + encode_coding_string (coding, object, 1); } - - if (STRING_BYTES (XSTRING (XPROCESS (proc)->encoding_buf)) < require) - XPROCESS (proc)->encoding_buf = make_uninit_string (require); - - if (from_byte >= 0) - buf = (BUFFERP (object) - ? BUF_BYTE_ADDRESS (XBUFFER (object), from_byte) - : XSTRING (object)->data + from_byte); - - object = XPROCESS (proc)->encoding_buf; - encode_coding (coding, (char *) buf, XSTRING (object)->data, - len, STRING_BYTES (XSTRING (object))); + else + { + coding->dst_object = make_unibyte_string (buf, len); + coding->produced = len; + } + len = coding->produced; - buf = XSTRING (object)->data; - if (temp_buf) - xfree (temp_buf); + buf = XSTRING (coding->dst_object)->data; } #ifdef VMS @@ -4726,7 +4717,7 @@ #include "lisp.h" #include "systime.h" -#include "charset.h" +#include "character.h" #include "coding.h" #include "termopts.h" #include "sysselect.h"