]> git.proxmox.com Git - qemu.git/commitdiff
mux-term: Fix timestamp association
authorJan Kiszka <jan.kiszka@web.de>
Mon, 15 Jun 2009 20:25:34 +0000 (22:25 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Tue, 16 Jun 2009 20:18:37 +0000 (15:18 -0500)
So far a new timestamp was generated *after* a full line had been
printed. Fix this.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
qemu-char.c

index d82a64fc57b83bdcea3fdf2c57b9d72f428f100f..287e0cd3263786491111781836564cbfb226b69b 100644 (file)
@@ -238,6 +238,7 @@ typedef struct {
     int prod[MAX_MUX];
     int cons[MAX_MUX];
     int timestamps;
+    int linestart;
     int64_t timestamps_start;
 } MuxDriver;
 
@@ -252,9 +253,8 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
         int i;
 
         ret = 0;
-        for(i = 0; i < len; i++) {
-            ret += d->drv->chr_write(d->drv, buf+i, 1);
-            if (buf[i] == '\n') {
+        for (i = 0; i < len; i++) {
+            if (d->linestart) {
                 char buf1[64];
                 int64_t ti;
                 int secs;
@@ -271,6 +271,11 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
                          secs % 60,
                          (int)(ti % 1000));
                 d->drv->chr_write(d->drv, (uint8_t *)buf1, strlen(buf1));
+                d->linestart = 0;
+            }
+            ret += d->drv->chr_write(d->drv, buf+i, 1);
+            if (buf[i] == '\n') {
+                d->linestart = 1;
             }
         }
     }
@@ -360,6 +365,7 @@ static int mux_proc_byte(CharDriverState *chr, MuxDriver *d, int ch)
         case 't':
             d->timestamps = !d->timestamps;
             d->timestamps_start = -1;
+            d->linestart = 0;
             break;
         }
     } else if (ch == term_escape_char) {