From 05d33ff0f45fce64889b18bc95818fe1610839ad Mon Sep 17 00:00:00 2001
From: Bjørn Lindeijer <bjorn@lindeijer.nl>
Date: Sat, 11 Dec 2004 19:32:55 +0000
Subject: Added HACKING.txt and reverted the revertion of my changes to log.cpp
 ;)

---
 docs/HACKING.txt | 36 ++++++++++++++++++++++++++++++++++++
 src/log.cpp      | 40 +++++++++++++++++++++++++++++-----------
 2 files changed, 65 insertions(+), 11 deletions(-)
 create mode 100644 docs/HACKING.txt

diff --git a/docs/HACKING.txt b/docs/HACKING.txt
new file mode 100644
index 00000000..ba080f0f
--- /dev/null
+++ b/docs/HACKING.txt
@@ -0,0 +1,36 @@
+----------------------------
+The Mana World Hacking Guide
+----------------------------
+
+With multiple coders working on the same source files, there needs to be a
+standard specifying how code is written down. Not doing so can cause quite some
+annoyance for certain coders and easily creates more version conflicts than
+necessary.
+
+* Code is indented using 4 spaces, no tabs.
+
+* Control constructs like this:
+
+  if (condition) {
+  }
+
+  for (init; condition; step) {
+  }
+
+  while (condition) {
+  }
+
+  /*
+   * Documentation about behaviour
+   */
+  void function(param1, param2) {
+  }
+
+  Ending parenthesis may be on next line for clarity.
+
+* Use of whitespace example:
+
+  x = ((5 + 4) * 3) / 1.5;
+
+* Agreement on function/class/variable/method/member naming pending.
+
diff --git a/src/log.cpp b/src/log.cpp
index 710a1fc3..578fa957 100644
--- a/src/log.cpp
+++ b/src/log.cpp
@@ -21,36 +21,42 @@
 
 #include "log.h"
 
-int warning_n; // Keep warning number
 FILE* logfile;
 
 
 #define LOG_FILE "./docs/tmw.log"
 
 
-
+/*
+ * Initializes log file by opening it for writing.
+ */
 void init_log() {
     logfile = fopen(LOG_FILE, "w");
     if (!logfile) {
         printf("Warning: error while opening log file.\n");
     }
-    warning_n = 0;
 }
 
+/*
+ * Enter a message in the log with a certain category. The message will be
+ * timestamped.
+ */
 void log(const char *category, const char *log_text, ...) {
     if (logfile) {
         char* buf = new char[1024];
-
         va_list ap;
+        time_t t;
+
+        // Use a temporary buffer to fill in the variables
         va_start(ap, log_text);
         vsprintf(buf, log_text, ap);
         va_end(ap);
 
-        time_t t;
+        // Get the current system time
         time(&t);
 
-        fprintf(
-                logfile,
+        // Print the log entry
+        fprintf(logfile,
                 "[%s%d:%s%d:%s%d] %s: %s\n",
                 (((t / 60) / 60) % 24 < 10) ? "0" : "",
                 (int)(((t / 60) / 60) % 24),
@@ -60,28 +66,40 @@ void log(const char *category, const char *log_text, ...) {
                 (int)(t % 60),
                 category, buf
                );
+
+        // Flush the log file
         fflush(logfile);
 
+        // Delete temporary buffer
         delete[] buf;
     }
 }
 
-
-void error(string error_text) {
+/*
+ * Log an error and quit. The error will pop-up in Windows and will be printed
+ * to standard error everywhere else. 
+ */
+void error(const string error_text) {
     log("Error", error_text.c_str());
 
 #ifdef WIN32
     MessageBox(NULL, error_text.c_str(), "Error", MB_ICONERROR|MB_OK);
 #else
-    printf("Error: %s", error_text);
+    fprintf(stderr, "Error: %s\n", error_text);
 #endif
-    //exit(1);
+    exit(1);
 }
 
+/*
+ * Shortcut to log a warning.
+ */
 void warning(const char *warning_text) {
     log("Warning", warning_text);
 }
 
+/*
+ * Shortcut to log a status update, will only really be logged in debug mode.
+ */
 void status(const char *status_text) {
 #ifdef DEBUG
     log("Status", status_text);
-- 
cgit v1.2.3-70-g09d2