]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/log.cpp
First attempt at configuration dialog.
[virtualjaguar] / src / log.cpp
index 282898cc199c0fc090a841e766b8562458e64a13..76c0aa98cd83ca5d900d0113a0e8a83e2d1c3165 100644 (file)
@@ -1,16 +1,30 @@
 //
 // Log handler
 //
-// by cal2
+// Originally by David Raingeard (Cal2)
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Cleanups/new stuff by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
 #include "log.h"
 
-FILE * log_stream = NULL;
+#include <stdlib.h>
+#include <stdarg.h>
+#include "types.h"
+
+#define MAX_LOG_SIZE           10000000                                // Maximum size of log file (10 MB)
 
-int log_init(char * path)
+static FILE * log_stream = NULL;
+static uint32 logSize = 0;
+
+int LogInit(const char * path)
 {
        log_stream = fopen(path, "wrt");
 
@@ -20,12 +34,12 @@ int log_init(char * path)
        return 1;
 }
 
-FILE * log_get(void)
+FILE * LogGet(void)
 {
        return log_stream;
 }
 
-void log_done(void)
+void LogDone(void)
 {
        fclose(log_stream);
 }
@@ -39,7 +53,15 @@ void WriteLog(const char * text, ...)
        va_list arg;
 
        va_start(arg, text);
-       vfprintf(log_stream, text, arg);
+       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!
 }