]> git.pond.sub.org Git - empserver/commitdiff
New journal event output hvy-metal-2.10
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 30 Jul 2008 00:38:48 +0000 (20:38 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 30 Jul 2008 00:38:48 +0000 (20:38 -0400)
To enable, set econfig key keep_journal to at least 2.  Output events
are *not* flushed to disk immediately.

Put it in Hvy Metal II now to gather real data for future testing of a
journal replay tool.

include/journal.h
src/lib/subs/journal.c
src/lib/subs/pr.c

index eed66ff253f24622c2cffd70120ef7a99113263c..7ef10ae1e230ace2f60579dc1a8717f853117947 100644 (file)
 #ifndef JOURNAL_H
 #define JOURNAL_H
 
+struct player;                 /* FIXME temporary hack */
+
 int journal_startup(void);
 void journal_shutdown(void);
 int journal_reopen(void);
 void journal_login(void);
 void journal_logout(void);
 void journal_prng(unsigned);
+void journal_output(struct player *, int, char *);
 void journal_input(char *);
 void journal_command(char *);
 void journal_update(int);
index 20d325681035b2f6bf8434d366e60693a6fe2aca..d2521f12902f6aec1879abc49bbeb26bace10703 100644 (file)
@@ -45,6 +45,7 @@
  *     logout CNUM
  *     command NAME
  *     input INPUT
+ *     output THREAD ID OUTPUT
  *     update ETU
  */
 
@@ -98,7 +99,8 @@ journal_entry(char *fmt, ...)
                fprintf(journal, "\\%03o", *p);
        }
        fputs("\n", journal);
-       fflush(journal);
+       if (fmt[0] != 'o')      /* FIXME disgusting hack */
+           fflush(journal);
        if (ferror(journal)) {
            logerror("Error writing journal (%s)", strerror(errno));
            clearerr(journal);
@@ -167,6 +169,17 @@ journal_logout(void)
     journal_entry("logout %d", player->cnum);
 }
 
+void
+journal_output(struct player *pl, int id, char *output)
+{
+    if (keep_journal < 2)
+       return;
+    if (pl && pl->state == PS_PLAYING)
+       journal_entry("output %d %d %s", pl->cnum, id, output);
+    else
+       journal_entry("output %p %d %s", pl, id, output);
+}
+
 void
 journal_input(char *input)
 {
index 711dd3f4a3c00e68e0adc7d9c30d089e01b218c5..44f5aee762b7417bcd762fe01baa0ddc6d33e72c 100644 (file)
@@ -56,6 +56,7 @@
 #include "com.h"
 #include "empio.h"
 #include "file.h"
+#include "journal.h"
 #include "misc.h"
 #include "nat.h"
 #include "player.h"
@@ -245,6 +246,7 @@ pr_player(struct player *pl, int id, char *buf)
            bp += len;
        }
     }
+    journal_output(pl, id, buf);
 }
 
 /*
@@ -299,6 +301,7 @@ upr_player(struct player *pl, int id, char *buf)
            io_puts(pl->iop, printbuf);
        }
     }
+    journal_output(pl, id, buf);
 }
 
 /*