diff options
-rw-r--r-- | docs/HACKING.txt | 36 | ||||
-rw-r--r-- | src/log.cpp | 40 |
2 files changed, 65 insertions, 11 deletions
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); |