the panic log

Add an optional paniclog file, controlled by a new PANICLOG macro that can
be used to log all panic and impossible messages.  Helpful when people
forget to send, or didn't see, the message.
This commit is contained in:
cohrs
2002-06-02 18:49:18 +00:00
parent ba734ebfa1
commit 2e2ce4effa
6 changed files with 35 additions and 3 deletions

View File

@@ -149,3 +149,4 @@ showrace option
travel option
mouse_support wincap option
debug mode: #panic routine to test panic() and panic save file generation
a new PANICLOG optional file to log the reason for panic and impossible messages

View File

@@ -131,9 +131,10 @@
/*
* Section 2: Some global parameters and filenames.
* Commenting out WIZARD, LOGFILE, or NEWS removes that feature
* from the game; otherwise set the appropriate wizard name.
* LOGFILE and NEWS refer to files in the playground.
* Commenting out WIZARD, LOGFILE, NEWS or PANICLOG removes that
* feature from the game; otherwise set the appropriate wizard
* name. LOGFILE, NEWS and PANICLOG refer to files in the
* playground.
*/
#ifndef WIZARD /* allow for compile-time or Makefile changes */
@@ -147,6 +148,7 @@
#define LOGFILE "logfile" /* larger file for debugging purposes */
#define NEWS "news" /* the file containing the latest hack news */
#define PANICLOG "paniclog" /* log of panic and impossible events */
/*
* If COMPRESS is defined, it should contain the full path name of your

View File

@@ -638,6 +638,7 @@ E void FDECL(check_recordfile, (const char *));
#if defined(WIZARD)
E void NDECL(read_wizkit);
#endif
E void FDECL(paniclog, (const char *, const char *));
/* ### fountain.c ### */

View File

@@ -294,6 +294,7 @@ panic VA_DECL(const char *, str)
char buf[BUFSZ];
Vsprintf(buf,str,VA_ARGS);
raw_print(buf);
paniclog("panic", buf);
}
#if defined(WIZARD) && (defined(UNIX) || defined(VMS) || defined(LATTICE) || defined(WIN32))
if (wizard)

View File

@@ -1782,4 +1782,26 @@ const char *dir;
/* ---------- END SCOREBOARD CREATION ----------- */
/* ---------- BEGIN PANIC/IMPOSSIBLE LOG ----------- */
/*ARGSUSED*/
void
paniclog(why, s)
const char* why;
const char* s;
{
#ifdef PANICLOG
FILE *lfile;
lfile = fopen_datafile(PANICLOG, "a", TRUE);
if (lfile) {
(void) fprintf(lfile, "%08ld: %s %s\n",
yyyymmdd((time_t)0L), why, s);
(void) fclose(lfile);
}
#endif /* PANICLOG */
}
/* ---------- END PANIC/IMPOSSIBLE LOG ----------- */
/*files.c*/

View File

@@ -248,6 +248,11 @@ void
impossible VA_DECL(const char *, s)
VA_START(s);
VA_INIT(s, const char *);
{
char pbuf[BUFSZ];
Vsprintf(pbuf,s,VA_ARGS);
paniclog("impossible", s);
}
vpline(s,VA_ARGS);
pline("Program in disorder - perhaps you'd better #quit.");
VA_END();