diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index b80eb75703..80bc1899c5 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -3141,6 +3141,18 @@ DEF_CONSOLE_CMD(ConSpriteCacheStats) return true; } +DEF_CONSOLE_CMD(ConDumpVersion) +{ + if (argc == 0) { + IConsoleHelp("Dump version info"); + } + + char buffer[65536]; + CrashLog::VersionInfoLog(buffer, lastof(buffer)); + PrintLineByLine(buffer); + return true; +} + DEF_CONSOLE_CMD(ConCheckCaches) { if (argc == 0) { @@ -3969,6 +3981,7 @@ void IConsoleStdLibRegister() IConsole::CmdRegister("dump_grf_cargo_tables", ConDumpGrfCargoTables, nullptr, true); IConsole::CmdRegister("dump_signal_styles", ConDumpSignalStyles, nullptr, true); IConsole::CmdRegister("dump_sprite_cache_stats", ConSpriteCacheStats, nullptr, true); + IConsole::CmdRegister("dump_version", ConDumpVersion, nullptr, true); IConsole::CmdRegister("check_caches", ConCheckCaches, nullptr, true); IConsole::CmdRegister("show_town_window", ConShowTownWindow, nullptr, true); IConsole::CmdRegister("show_station_window", ConShowStationWindow, nullptr, true); diff --git a/src/crashlog.cpp b/src/crashlog.cpp index c871b3dd08..cc3b1800bf 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -1136,18 +1136,6 @@ void CrashLog::MakeInconsistencyLog(const InconsistencyExtraInfo &info) const _save_DBGC_data = false; } -/** - * Makes a version info log, writes it to a file. It uses DEBUG to write - * information like paths to the console. - * @return true when everything is made successfully. - */ -void CrashLog::MakeVersionInfoLog() const -{ - char buffer[65536]; - this->FillVersionInfoLog(buffer, lastof(buffer)); - printf("%s\n", buffer); -} - /** * Makes a crash dump and crash savegame. It uses DEBUG to write * information like paths to the console. diff --git a/src/crashlog.h b/src/crashlog.h index 2790a08524..bb5a5e59e3 100644 --- a/src/crashlog.h +++ b/src/crashlog.h @@ -189,7 +189,6 @@ public: void MakeDesyncCrashLog(const std::string *log_in, std::string *log_out, const DesyncExtraInfo &info) const; static bool WriteDesyncSavegame(const char *log_data, const char *name_buffer); void MakeInconsistencyLog(const InconsistencyExtraInfo &info) const; - void MakeVersionInfoLog() const; void MakeCrashSavegameAndScreenshot(); void SendSurvey() const; @@ -209,7 +208,7 @@ public: static void DesyncCrashLog(const std::string *log_in, std::string *log_out, const DesyncExtraInfo &info); static void InconsistencyLog(const InconsistencyExtraInfo &info); - static void VersionInfoLog(); + static void VersionInfoLog(char *buffer, const char *last); static void RegisterCrashed() { CrashLog::have_crashed = true; } static bool HaveAlreadyCrashed() { return CrashLog::have_crashed; } diff --git a/src/openttd.cpp b/src/openttd.cpp index 922e592b48..9fef58734a 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -899,7 +899,9 @@ int openttd_main(int argc, char *argv[]) case 'x': scanner->save_config = false; break; case 'J': _quit_after_days = Clamp(atoi(mgo.opt), 0, INT_MAX); break; case 'Z': { - CrashLog::VersionInfoLog(); + char buffer[65536]; + CrashLog::VersionInfoLog(buffer, lastof(buffer)); + fputs(buffer, stdout); return ret; } case 'X': only_local_path = true; break; diff --git a/src/os/macosx/crashlog_osx.cpp b/src/os/macosx/crashlog_osx.cpp index c09cc6230e..d6e1e6575d 100644 --- a/src/os/macosx/crashlog_osx.cpp +++ b/src/os/macosx/crashlog_osx.cpp @@ -490,8 +490,8 @@ void CDECL HandleCrash(int signum, siginfo_t *si, void *context) } -/* static */ void CrashLog::VersionInfoLog() +/* static */ void CrashLog::VersionInfoLog(char *buffer, const char *last) { CrashLogOSX log(CrashLogOSX::DesyncTag{}); - log.MakeVersionInfoLog(); + log.FillVersionInfoLog(buffer, last); } diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp index b0cb303a4e..c1caca3e0c 100644 --- a/src/os/unix/crashlog_unix.cpp +++ b/src/os/unix/crashlog_unix.cpp @@ -850,8 +850,8 @@ static void CDECL HandleCrash(int signum) log.MakeInconsistencyLog(info); } -/* static */ void CrashLog::VersionInfoLog() +/* static */ void CrashLog::VersionInfoLog(char *buffer, const char *last) { CrashLogUnix log(CrashLogUnix::DesyncTag{}); - log.MakeVersionInfoLog(); + log.FillVersionInfoLog(buffer, last); } diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp index cc97ba9ae8..e43729b9fb 100644 --- a/src/os/windows/crashlog_win.cpp +++ b/src/os/windows/crashlog_win.cpp @@ -801,10 +801,10 @@ static void CDECL CustomAbort(int) log.MakeInconsistencyLog(info); } -/* static */ void CrashLog::VersionInfoLog() +/* static */ void CrashLog::VersionInfoLog(char *buffer, const char *last) { CrashLogWindows log(nullptr); - log.MakeVersionInfoLog(); + log.FillVersionInfoLog(buffer, last); } /* The crash log GUI */