Commit 5bbf78c1 authored by Kenichi Handa's avatar Kenichi Handa

Include "character.h" instead of "charset.h".

(read_process_output): Adjusted for the new code-conversion API.
(send_process): Likewise.
parent 8b4b4467
......@@ -98,7 +98,7 @@ Boston, MA 02111-1307, USA. */
#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 @@ read_process_output (proc, channel)
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 @@ read_process_output (proc, channel)
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 @@ read_process_output (proc, channel)
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 @@ send_process (proc, buf, len, object)
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);
encode_coding_string (coding, object, 1);
}
if (coding->composing != COMPOSITION_DISABLED)
else
{
if (from_byte >= 0)
coding_save_composition (coding, from, to, object);
else
coding->composing = COMPOSITION_DISABLED;
coding->dst_object = make_unibyte_string (buf, len);
coding->produced = len;
}
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)));
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 @@ The value takes effect when `start-process' is called. */);
#include "lisp.h"
#include "systime.h"
#include "charset.h"
#include "character.h"
#include "coding.h"
#include "termopts.h"
#include "sysselect.h"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment