debug.c
changeset 1847 47703af63895
parent 1678 838dd6f46081
child 1891 92a3b0aa0946
--- a/debug.c	Thu May 19 17:40:26 2005 +0000
+++ b/debug.c	Fri May 20 17:59:24 2005 +0000
@@ -4,6 +4,7 @@
 #include "ttd.h"
 #include "console.h"
 #include "debug.h"
+#include "string.h"
 
 int _debug_ai_level;
 int _debug_grf_level;
@@ -28,6 +29,24 @@
 	IConsoleDebug(buf);
 }
 
+typedef struct DebugLevel {
+	const char *name;
+	int *level;
+} DebugLevel;
+
+#define DEBUG_LEVEL(x) { #x, &_debug_##x##_level }
+	static const DebugLevel debug_level[] = {
+	DEBUG_LEVEL(ai),
+	DEBUG_LEVEL(grf),
+	DEBUG_LEVEL(map),
+	DEBUG_LEVEL(misc),
+	DEBUG_LEVEL(ms),
+	DEBUG_LEVEL(net),
+	DEBUG_LEVEL(spritecache),
+	DEBUG_LEVEL(oldloader),
+	DEBUG_LEVEL(npf)
+	};
+#undef DEBUG_LEVEL
 
 void SetDebugString(const char *s)
 {
@@ -35,25 +54,6 @@
 	char *end;
 	const char *t;
 
-	typedef struct DebugLevel {
-		const char* name;
-		int* level;
-	} DebugLevel;
-
-	#define DEBUG_LEVEL(x) { #x, &_debug_##x##_level }
-	static const DebugLevel debug_level[] = {
-		DEBUG_LEVEL(ai),
-		DEBUG_LEVEL(grf),
-		DEBUG_LEVEL(map),
-		DEBUG_LEVEL(misc),
-		DEBUG_LEVEL(ms),
-		DEBUG_LEVEL(net),
-		DEBUG_LEVEL(spritecache),
-		DEBUG_LEVEL(oldloader),
-		DEBUG_LEVEL(npf)
-	};
-	#undef DEBUG_LEVEL
-
 	// global debugging level?
 	if (*s >= '0' && *s <= '9') {
 		const DebugLevel *i;
@@ -96,3 +96,25 @@
 		}
 	}
 }
+
+/** Print out the current debug-level
+ * Just return a string with the values of all the debug categorites
+ * @return string with debug-levels
+ */
+const char *GetDebugString(void)
+{
+	const DebugLevel *i;
+	static char dbgstr[100];
+	char dbgval[20];
+
+	memset(dbgstr, 0, sizeof(dbgstr));
+	i = debug_level;
+	snprintf(dbgstr, sizeof(dbgstr), "%s=%d", i->name, *i->level);
+
+	for (i++; i != endof(debug_level); i++) {
+		snprintf(dbgval, sizeof(dbgval), ", %s=%d", i->name, *i->level);
+		ttd_strlcat(dbgstr, dbgval, sizeof(dbgstr));
+	}
+
+	return dbgstr;
+}