X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flog.cpp;h=1f6b882e0bce96bfeab2235b49a4208f8fc8b74b;hb=d239f761839f68e3171f51c35aea7b5c0bec3f33;hp=f748183ab1bfd3af24fd3a43072b9a8341bc1737;hpb=0031c06df2f7f099ca5ecf1632f46b92f6b0dd79;p=virtualjaguar diff --git a/src/log.cpp b/src/log.cpp index f748183..1f6b882 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -1,20 +1,28 @@ // // Log handler // -// by cal2 +// Originally by David Raingeard (Cal2) // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS) -// Cleanups by James L. Hammons +// Cleanups/new stuff by James L. Hammons // +#include +#include +#include "types.h" #include "log.h" -FILE * log_stream = NULL; +#define MAX_LOG_SIZE 10000000 // Maximum size of log file (10 MB) + +static FILE * log_stream = NULL; +static uint32 logSize = 0; int log_init(char * path) { log_stream = fopen(path, "wrt"); + if (log_stream == NULL) return 0; + return 1; } @@ -27,3 +35,25 @@ void log_done(void) { fclose(log_stream); } + +// +// This logger is used mainly to ensure that text gets written to the log file +// even if the program crashes. The performance hit is acceptable in this case! +// +void WriteLog(const char * text, ...) +{ + va_list arg; + + va_start(arg, text); + logSize += vfprintf(log_stream, text, arg); + + if (logSize > MAX_LOG_SIZE) + { + fflush(log_stream); + fclose(log_stream); + exit(1); + }//*/ + + va_end(arg); + fflush(log_stream); // Make sure that text is written! +}