summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--console_cmds.c10
-rw-r--r--debug.c60
-rw-r--r--debug.h1
3 files changed, 49 insertions, 22 deletions
diff --git a/console_cmds.c b/console_cmds.c
index d10c36ebf..fb68c01b5 100644
--- a/console_cmds.c
+++ b/console_cmds.c
@@ -833,13 +833,17 @@ DEF_CONSOLE_CMD(ConInfoCmd)
DEF_CONSOLE_CMD(ConDebugLevel)
{
if (argc == 0) {
- IConsoleHelp("Set the default debugging level for the game. Usage: 'debug_level <level>'");
+ IConsoleHelp("Get/set the default debugging level for the game. Usage: 'debug_level [<level>]'");
IConsoleHelp("Level can be any combination of names, levels. Eg 'net=5 ms=4'. Remember to enclose it in \"'s");
return true;
}
- if (argc < 2) return false;
- SetDebugString(argv[1]);
+ if (argc > 2) return false;
+
+ if (argc == 1) {
+ IConsolePrintF(_icolour_def, "Current debug-level: '%s'", GetDebugString());
+ } else SetDebugString(argv[1]);
+
return true;
}
diff --git a/debug.c b/debug.c
index 025a182ea..2ac39fde4 100644
--- a/debug.c
+++ b/debug.c
@@ -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 @@ void CDECL debug(const char *s, ...)
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 @@ void SetDebugString(const char *s)
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 @@ void SetDebugString(const char *s)
}
}
}
+
+/** 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;
+}
diff --git a/debug.h b/debug.h
index b11b3afa8..44237feca 100644
--- a/debug.h
+++ b/debug.h
@@ -20,5 +20,6 @@
void CDECL debug(const char *s, ...);
void SetDebugString(const char *s);
+const char *GetDebugString(void);
#endif