]> git.pond.sub.org Git - empserver/commitdiff
Fix journalling of output ids hvy-metal-2 hvy-metal-2.13
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 2 Aug 2008 13:04:16 +0000 (09:04 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 2 Aug 2008 13:04:16 +0000 (09:04 -0400)
include/journal.h
src/lib/subs/journal.c
src/lib/subs/pr.c

index 247e40c3e68966e6926898f48a8303dd56708fd6..7ef10ae1e230ace2f60579dc1a8717f853117947 100644 (file)
@@ -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);
index 85f68ce87b9d5ad3d7c10fa1ebc2b5caa1caf0f2..bc37262cb175cc73209109e2dd7dc2cc5ca2bbb5 100644 (file)
@@ -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
index 0b8146efecab309f222d8f8d45c960402218f95d..496bde49ba2901164b051a6435301d12ca34a74b 100644 (file)
@@ -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;
 }