#include "termchar.h"
#include "termopts.h"
#include "lisp.h"
+#include "buffer.h"
+#include "character.h"
#include "charset.h"
#include "coding.h"
#include "keyboard.h"
}
}
- result = encode_coding (coding, buf, dst, len, dst_end - dst);
+ coding->source = buf;
+ coding->destination = dst;
+ coding->dst_bytes = dst_end - dst;
+ encode_coding_object (coding, Qnil, 0, 0, 1, len, Qnil);
len -= coding->consumed;
dst += coding->produced;
- if (result == CODING_FINISH_INSUFFICIENT_DST
- || (result == CODING_FINISH_INSUFFICIENT_SRC
- && len > dst_end - dst))
+ if (coding->result == CODING_RESULT_INSUFFICIENT_DST)
/* The remaining output buffer is too short. We must
break the loop here without increasing SRC so that the
next call of this function starts from the same glyph. */
if (CODING_REQUIRE_FLUSHING (&terminal_coding))
{
terminal_coding.mode |= CODING_MODE_LAST_BLOCK;
- encode_coding (&terminal_coding, "", conversion_buffer,
- 0, conversion_buffer_size);
+ terminal_coding.source = (unsigned char *) "";
+ terminal_coding.destination = conversion_buffer;
+ terminal_coding.dst_bytes = conversion_buffer_size;
+ encode_coding_object (&terminal_coding, Qnil, 0, 0, 0, 0, Qnil);
if (terminal_coding.produced > 0)
{
fwrite (conversion_buffer, 1, terminal_coding.produced, stdout);
}
else
{
- /* A multi-byte character. The display width is fixed for all
- characters of the set. Some of the glyphs may have to be
- ignored because they are already displayed in a continued
- line. */
- int charset = CHAR_CHARSET (it->c);
-
- it->pixel_width = CHARSET_WIDTH (charset);
+ it->pixel_width = CHAR_WIDTH (it->c);
it->nglyphs = it->pixel_width;
if (it->glyph_row)