Crash/desync logs: Include non-default settings section
This commit is contained in:
@@ -37,6 +37,8 @@
|
|||||||
#include "event_logs.h"
|
#include "event_logs.h"
|
||||||
#include "scope.h"
|
#include "scope.h"
|
||||||
#include "progress.h"
|
#include "progress.h"
|
||||||
|
#include "settings_type.h"
|
||||||
|
#include "settings_internal.h"
|
||||||
|
|
||||||
#include "ai/ai_info.hpp"
|
#include "ai/ai_info.hpp"
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
@@ -508,6 +510,31 @@ char *CrashLog::LogCommandLog(char *buffer, const char *last) const
|
|||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes the non-default settings to the buffer.
|
||||||
|
* @param buffer The begin where to write at.
|
||||||
|
* @param last The last position in the buffer to write to.
|
||||||
|
* @return the position of the \c '\0' character after the buffer.
|
||||||
|
*/
|
||||||
|
char *CrashLog::LogSettings(char *buffer, const char *last) const
|
||||||
|
{
|
||||||
|
buffer += seprintf(buffer, last, "Non-default settings:");
|
||||||
|
|
||||||
|
IterateSettingsTables([&](const SettingTable &table, void *object) {
|
||||||
|
for (auto &sd : table) {
|
||||||
|
/* Skip any old settings we no longer save/load. */
|
||||||
|
if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to, sd->save.ext_feature_test)) continue;
|
||||||
|
|
||||||
|
if (sd->IsDefaultValue(object)) continue;
|
||||||
|
buffer += seprintf(buffer, last, "\n %s: ", sd->name);
|
||||||
|
buffer = sd->FormatValue(buffer, last, object);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
buffer += seprintf(buffer, last, "\n\n");
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill the crash log buffer with all data of a crash log.
|
* Fill the crash log buffer with all data of a crash log.
|
||||||
* @param buffer The begin where to write at.
|
* @param buffer The begin where to write at.
|
||||||
@@ -618,6 +645,9 @@ char *CrashLog::FillCrashLog(char *buffer, const char *last)
|
|||||||
buffer = this->TryCrashLogFaultSection(buffer, last, "command log", [](CrashLog *self, char *buffer, const char *last) -> char * {
|
buffer = this->TryCrashLogFaultSection(buffer, last, "command log", [](CrashLog *self, char *buffer, const char *last) -> char * {
|
||||||
return self->LogCommandLog(buffer, last);
|
return self->LogCommandLog(buffer, last);
|
||||||
});
|
});
|
||||||
|
buffer = this->TryCrashLogFaultSection(buffer, last, "settings", [](CrashLog *self, char *buffer, const char *last) -> char * {
|
||||||
|
return self->LogSettings(buffer, last);
|
||||||
|
});
|
||||||
|
|
||||||
buffer += seprintf(buffer, last, "*** End of OpenTTD Crash Report ***\n");
|
buffer += seprintf(buffer, last, "*** End of OpenTTD Crash Report ***\n");
|
||||||
this->StopCrashLogFaultHandler();
|
this->StopCrashLogFaultHandler();
|
||||||
@@ -682,6 +712,7 @@ char *CrashLog::FillDesyncCrashLog(char *buffer, const char *last, const DesyncE
|
|||||||
buffer = this->LogGamelog(buffer, last);
|
buffer = this->LogGamelog(buffer, last);
|
||||||
buffer = this->LogRecentNews(buffer, last);
|
buffer = this->LogRecentNews(buffer, last);
|
||||||
buffer = this->LogCommandLog(buffer, last);
|
buffer = this->LogCommandLog(buffer, last);
|
||||||
|
buffer = this->LogSettings(buffer, last);
|
||||||
buffer = DumpDesyncMsgLog(buffer, last);
|
buffer = DumpDesyncMsgLog(buffer, last);
|
||||||
|
|
||||||
bool have_cache_log = false;
|
bool have_cache_log = false;
|
||||||
@@ -744,6 +775,7 @@ char *CrashLog::FillInconsistencyLog(char *buffer, const char *last, const Incon
|
|||||||
buffer = this->LogGamelog(buffer, last);
|
buffer = this->LogGamelog(buffer, last);
|
||||||
buffer = this->LogRecentNews(buffer, last);
|
buffer = this->LogRecentNews(buffer, last);
|
||||||
buffer = this->LogCommandLog(buffer, last);
|
buffer = this->LogCommandLog(buffer, last);
|
||||||
|
buffer = this->LogSettings(buffer, last);
|
||||||
buffer = DumpDesyncMsgLog(buffer, last);
|
buffer = DumpDesyncMsgLog(buffer, last);
|
||||||
|
|
||||||
if (!info.check_caches_result.empty()) {
|
if (!info.check_caches_result.empty()) {
|
||||||
|
@@ -134,6 +134,7 @@ protected:
|
|||||||
char *LogGamelog(char *buffer, const char *last) const;
|
char *LogGamelog(char *buffer, const char *last) const;
|
||||||
char *LogRecentNews(char *buffer, const char *list) const;
|
char *LogRecentNews(char *buffer, const char *list) const;
|
||||||
char *LogCommandLog(char *buffer, const char *last) const;
|
char *LogCommandLog(char *buffer, const char *last) const;
|
||||||
|
char *LogSettings(char *buffer, const char *last) const;
|
||||||
|
|
||||||
virtual void StartCrashLogFaultHandler();
|
virtual void StartCrashLogFaultHandler();
|
||||||
virtual void StopCrashLogFaultHandler();
|
virtual void StopCrashLogFaultHandler();
|
||||||
|
Reference in New Issue
Block a user