New journal event output

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.
This commit is contained in:
Markus Armbruster 2008-07-29 20:38:48 -04:00
parent 1c1fa720d4
commit c4687e15d5
3 changed files with 20 additions and 1 deletions

View file

@ -34,12 +34,15 @@
#ifndef JOURNAL_H #ifndef JOURNAL_H
#define JOURNAL_H #define JOURNAL_H
struct player; /* FIXME temporary hack */
int journal_startup(void); int journal_startup(void);
void journal_shutdown(void); void journal_shutdown(void);
int journal_reopen(void); int journal_reopen(void);
void journal_login(void); void journal_login(void);
void journal_logout(void); void journal_logout(void);
void journal_prng(unsigned); void journal_prng(unsigned);
void journal_output(struct player *, int, char *);
void journal_input(char *); void journal_input(char *);
void journal_command(char *); void journal_command(char *);
void journal_update(int); void journal_update(int);

View file

@ -46,6 +46,7 @@
* logout CNUM * logout CNUM
* command NAME * command NAME
* input INPUT * input INPUT
* output THREAD ID OUTPUT
* update ETU * update ETU
*/ */
@ -99,6 +100,7 @@ journal_entry(char *fmt, ...)
fprintf(journal, "\\%03o", *p); fprintf(journal, "\\%03o", *p);
} }
fputs("\n", journal); fputs("\n", journal);
if (fmt[0] != 'o') /* FIXME disgusting hack */
fflush(journal); fflush(journal);
if (ferror(journal)) { if (ferror(journal)) {
logerror("Error writing journal (%s)", strerror(errno)); logerror("Error writing journal (%s)", strerror(errno));
@ -168,6 +170,17 @@ journal_logout(void)
journal_entry("logout %d", player->cnum); 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 void
journal_input(char *input) journal_input(char *input)
{ {

View file

@ -56,6 +56,7 @@
#include "com.h" #include "com.h"
#include "empio.h" #include "empio.h"
#include "file.h" #include "file.h"
#include "journal.h"
#include "misc.h" #include "misc.h"
#include "nat.h" #include "nat.h"
#include "player.h" #include "player.h"
@ -245,6 +246,7 @@ pr_player(struct player *pl, int id, char *buf)
bp += len; 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); io_puts(pl->iop, printbuf);
} }
} }
journal_output(pl, id, buf);
} }
/* /*