diff options
Diffstat (limited to 'src/env.cpp')
| -rw-r--r-- | src/env.cpp | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/src/env.cpp b/src/env.cpp index 2862aa95..bf75c9fa 100644 --- a/src/env.cpp +++ b/src/env.cpp @@ -16,9 +16,15 @@ using namespace MOBase; Console::Console() : m_hasConsole(false), m_in(nullptr), m_out(nullptr), m_err(nullptr) { - // open a console - if (!AllocConsole()) { - // failed, ignore + // try to attach to parent + if (!AttachConsole(ATTACH_PARENT_PROCESS)) { + if (GetLastError() != ERROR_ACCESS_DENIED) { + // parent has no console, create one + if (!AllocConsole()) { + // failed, ignore + return; + } + } } m_hasConsole = true; @@ -1032,6 +1038,36 @@ HandlePtr dumpFile() return {}; } + +CoreDumpTypes coreDumpTypeFromString(const std::string& s) +{ + if (s == "data") + return env::CoreDumpTypes::Data; + else if (s == "full") + return env::CoreDumpTypes::Full; + else + return env::CoreDumpTypes::Mini; +} + +std::string toString(CoreDumpTypes type) +{ + switch (type) + { + case CoreDumpTypes::Mini: + return "mini"; + + case CoreDumpTypes::Data: + return "data"; + + case CoreDumpTypes::Full: + return "full"; + + default: + return "?"; + } +} + + bool createMiniDump(HANDLE process, CoreDumpTypes type) { const DWORD pid = GetProcessId(process); |
