---
 tools/flterm.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/tools/flterm.c b/tools/flterm.c
index 4a496aa..3de00ad 100644
--- a/tools/flterm.c
+++ b/tools/flterm.c
@@ -385,6 +385,7 @@ static void do_terminal(char *serial_port,
        FILE *logfd = NULL;
        struct termios my_termios;
        char c;
+       char utf8;
        int recognized;
        struct pollfd fds[3];
        int flags;
@@ -492,8 +493,18 @@ static void do_terminal(char *serial_port,
                if(fds[1].revents & POLLIN) {
                        if(read(serialfd, &c, 1) <= 0) break;
 
-                       fwrite(&c, sizeof(c), 1, logfd);
-                       fflush(logfd);
+                       if(logfd != NULL) {
+                               if(c >= 0x80) {
+                                       utf8 = 0xc2 + (c > 0xbf);
+                                       fwrite(&utf8, sizeof(utf8), 1, logfd);
+                                       utf8 = (c & 0x3f) + 0x80;
+                                       fwrite(&utf8, sizeof(utf8), 1, logfd);
+                               } else if(c) {
+                                       fwrite(&c, sizeof(c), 1, logfd);
+                               }
+
+                               if(c == '\n') fflush(logfd);
+                       }
 
                        if(gdbfd != -1 && rsp_pending && (c == '+' || c == 
'-')) {
                                rsp_pending = 0;
-- 
1.7.4.1

_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to