From f41a3914a55cd61223418a019cb23e6aee173098 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Fri, 23 Oct 2009 17:16:25 +0000 Subject: Sync OpenBSD patchset 421: Try to reduce the UTF-8 mess. Get rid of passing around u_char[4]s and define a struct utf8_data which has character data, size (sequence length) and width. Move UTF-8 character collection into two functions utf8_open/utf8_append in utf8.c which fill in this struct and use these functions from input.c and the various functions in screen-write.c. Space for rather more data than is necessary for one UTF-8 sequence is in the utf8_data struct because screen_write_copy is still nasty and needs to reinject the character (after combining) into screen_write_cell. --- tty.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'tty.c') diff --git a/tty.c b/tty.c index 8d04f348..a6dac18d 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.157 2009-10-23 17:13:10 tcunha Exp $ */ +/* $Id: tty.c,v 1.158 2009-10-23 17:16:24 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -347,7 +347,7 @@ tty_putc(struct tty *tty, u_char ch) void tty_pututf8(struct tty *tty, const struct grid_utf8 *gu) { - u_int i, width; + u_int i; for (i = 0; i < UTF8_SIZE; i++) { if (gu->data[i] == 0xff) @@ -357,8 +357,7 @@ tty_pututf8(struct tty *tty, const struct grid_utf8 *gu) write(tty->log_fd, &gu->data[i], 1); } - width = utf8_width(gu->data); - tty->cx += width; + tty->cx += gu->width; } void -- cgit