Commit 4ab312f793fe9202299966de98d67d9574c572d4

Authored by Jan Kiszka
Committed by Anthony Liguori
1 parent 2d22959d

mux-term: Fix timestamp association

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>
Showing 1 changed file with 9 additions and 3 deletions
qemu-char.c
@@ -238,6 +238,7 @@ typedef struct { @@ -238,6 +238,7 @@ typedef struct {
238 int prod[MAX_MUX]; 238 int prod[MAX_MUX];
239 int cons[MAX_MUX]; 239 int cons[MAX_MUX];
240 int timestamps; 240 int timestamps;
  241 + int linestart;
241 int64_t timestamps_start; 242 int64_t timestamps_start;
242 } MuxDriver; 243 } MuxDriver;
243 244
@@ -252,9 +253,8 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len) @@ -252,9 +253,8 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
252 int i; 253 int i;
253 254
254 ret = 0; 255 ret = 0;
255 - for(i = 0; i < len; i++) {  
256 - ret += d->drv->chr_write(d->drv, buf+i, 1);  
257 - if (buf[i] == '\n') { 256 + for (i = 0; i < len; i++) {
  257 + if (d->linestart) {
258 char buf1[64]; 258 char buf1[64];
259 int64_t ti; 259 int64_t ti;
260 int secs; 260 int secs;
@@ -271,6 +271,11 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len) @@ -271,6 +271,11 @@ static int mux_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
271 secs % 60, 271 secs % 60,
272 (int)(ti % 1000)); 272 (int)(ti % 1000));
273 d->drv->chr_write(d->drv, (uint8_t *)buf1, strlen(buf1)); 273 d->drv->chr_write(d->drv, (uint8_t *)buf1, strlen(buf1));
  274 + d->linestart = 0;
  275 + }
  276 + ret += d->drv->chr_write(d->drv, buf+i, 1);
  277 + if (buf[i] == '\n') {
  278 + d->linestart = 1;
274 } 279 }
275 } 280 }
276 } 281 }
@@ -360,6 +365,7 @@ static int mux_proc_byte(CharDriverState *chr, MuxDriver *d, int ch) @@ -360,6 +365,7 @@ static int mux_proc_byte(CharDriverState *chr, MuxDriver *d, int ch)
360 case 't': 365 case 't':
361 d->timestamps = !d->timestamps; 366 d->timestamps = !d->timestamps;
362 d->timestamps_start = -1; 367 d->timestamps_start = -1;
  368 + d->linestart = 0;
363 break; 369 break;
364 } 370 }
365 } else if (ch == term_escape_char) { 371 } else if (ch == term_escape_char) {