Journal output lines instead of chunks
Output often arrives in chunks other than lines. Hard to read in the journal. Delay journalling until we got a full line or our buffer is exhausted. This is less precise, but it'll do for now.
This commit is contained in:
parent
c4687e15d5
commit
87512fb644
3 changed files with 30 additions and 6 deletions
|
@ -69,6 +69,7 @@ static FILE *journal;
|
|||
|
||||
static void journal_entry(char *fmt, ...)
|
||||
ATTRIBUTE((format (printf, 1, 2)));
|
||||
static void journal_output_1(struct player *, char *, char *, int);
|
||||
|
||||
static FILE *
|
||||
journal_open(void)
|
||||
|
@ -171,14 +172,35 @@ journal_logout(void)
|
|||
}
|
||||
|
||||
void
|
||||
journal_output(struct player *pl, int id, char *output)
|
||||
journal_output(struct player *pl, char *output)
|
||||
{
|
||||
static char buf[1024];
|
||||
char *s, *e;
|
||||
|
||||
if (keep_journal < 2)
|
||||
return;
|
||||
|
||||
for (s = output; (e = strchr(s, '\n')); s = e + 1) {
|
||||
journal_output_1(pl, buf, s, (int)(e + 1 - s));
|
||||
buf[0] = 0;
|
||||
}
|
||||
if (strlen(buf) + strlen(s) < 1024)
|
||||
strcpy(buf + strlen(buf), s);
|
||||
else {
|
||||
journal_output_1(pl, buf, s, -1);
|
||||
buf[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
journal_output_1(struct player *pl, char *buf1, char *buf2, int buf2prec)
|
||||
{
|
||||
if (pl && pl->state == PS_PLAYING)
|
||||
journal_entry("output %d %d %s", pl->cnum, id, output);
|
||||
journal_entry("output %d %s%.*s",
|
||||
pl->cnum, buf1, buf2prec, buf2);
|
||||
else
|
||||
journal_entry("output %p %d %s", pl, id, output);
|
||||
journal_entry("output %p %s%.*s",
|
||||
pl, buf1, buf2prec, buf2);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue