From 342ab5c22aad4de2a0f8ee338c1ae66125fe1b6a Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 2 Aug 2008 09:04:16 -0400 Subject: [PATCH] Fix journalling of output ids --- include/journal.h | 2 +- src/lib/subs/journal.c | 32 +++++++++++++++++++++----------- src/lib/subs/pr.c | 7 +++---- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/include/journal.h b/include/journal.h index 247e40c3e..7ef10ae1e 100644 --- a/include/journal.h +++ b/include/journal.h @@ -42,7 +42,7 @@ int journal_reopen(void); void journal_login(void); void journal_logout(void); void journal_prng(unsigned); -void journal_output(struct player *, char *); +void journal_output(struct player *, int, char *); void journal_input(char *); void journal_command(char *); void journal_update(int); diff --git a/src/lib/subs/journal.c b/src/lib/subs/journal.c index 85f68ce87..bc37262cb 100644 --- a/src/lib/subs/journal.c +++ b/src/lib/subs/journal.c @@ -67,7 +67,7 @@ static char journal_fname[] = "journal.log"; 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 void journal_output_1(struct player *, int, char *, char *, int); static FILE * journal_open(void) @@ -173,35 +173,45 @@ journal_logout(void) } void -journal_output(struct player *pl, char *output) +journal_output(struct player *pl, int id, char *output) { static char buf[1024]; + static struct player *bpl; + static int bid; char *s, *e; if (keep_journal < 2) return; + if (buf[0] && (pl != bpl && id != bid)) { + journal_output_1(bpl, bid, buf, "", -1); + buf[0] = 0; + } + for (s = output; (e = strchr(s, '\n')); s = e + 1) { - journal_output_1(pl, buf, s, (int)(e + 1 - s)); + journal_output_1(pl, id, buf, s, (int)(e + 1 - s)); buf[0] = 0; } - if (strlen(buf) + strlen(s) < 1024) + if (strlen(buf) + strlen(s) < 1024) { strcpy(buf + strlen(buf), s); - else { - journal_output_1(pl, buf, s, -1); + bpl = pl; + bid = id; + } else { + journal_output_1(pl, id, buf, s, -1); buf[0] = 0; } } void -journal_output_1(struct player *pl, char *buf1, char *buf2, int buf2prec) +journal_output_1(struct player *pl, int id, + char *buf1, char *buf2, int buf2prec) { if (pl && pl->state == PS_PLAYING) - journal_entry("output %d %s%.*s", - pl->cnum, buf1, buf2prec, buf2); + journal_entry("output %d %d %s%.*s", + pl->cnum, id, buf1, buf2prec, buf2); else - journal_entry("output %p %s%.*s", - pl, buf1, buf2prec, buf2); + journal_entry("output %p %id %s%.*s", + pl, id, buf1, buf2prec, buf2); } void diff --git a/src/lib/subs/pr.c b/src/lib/subs/pr.c index 0b8146efe..496bde49b 100644 --- a/src/lib/subs/pr.c +++ b/src/lib/subs/pr.c @@ -125,7 +125,7 @@ pr_id(struct player *p, int id, char *format, ...) if (p->curid >= 0) { io_puts(p->iop, "\n"); - journal_output(p, "\n"); + journal_output(p, p->curid, "\n"); p->curid = -1; } va_start(ap, format); @@ -247,7 +247,7 @@ pr_player(struct player *pl, int id, char *buf) bp += len; } } - journal_output(pl, buf); + journal_output(pl, id, buf); } /* @@ -302,7 +302,7 @@ upr_player(struct player *pl, int id, char *buf) io_puts(pl->iop, printbuf); } } - journal_output(pl, buf); + journal_output(pl, id, buf); } /* @@ -324,7 +324,6 @@ outid(struct player *pl, int n) buf[1] = ' '; buf[2] = '\0'; io_puts(pl->iop, buf); - journal_output(pl, buf); pl->curid = n; } -- 2.43.0