rpcsx/rpcs3/util/console.cpp
DH 62ad27d1e2 split rpcs3 and hle libraries
merge rpcs3 utilities
2025-04-08 19:46:57 +03:00

62 lines
1 KiB
C++

#include "console.h"
#ifdef _WIN32
#include <windows.h>
#include <stdio.h>
#endif
#include <iostream>
namespace utils
{
void attach_console([[maybe_unused]] int stream, [[maybe_unused]] bool open_console)
{
#ifdef _WIN32
if (!stream)
{
return;
}
if (!(AttachConsole(ATTACH_PARENT_PROCESS) || (open_console && AllocConsole())))
{
return;
}
if (stream & console_stream::std_out)
{
[[maybe_unused]] const auto con_out = freopen("CONOUT$", "w", stdout);
}
if (stream & console_stream::std_err)
{
[[maybe_unused]] const auto con_err = freopen("CONOUT$", "w", stderr);
}
if (stream & console_stream::std_in)
{
[[maybe_unused]] const auto con_in = freopen("CONIN$", "r", stdin);
}
#endif
}
void output_stderr(std::string_view str, bool with_endline)
{
if (with_endline)
{
#ifdef _WIN32
std::clog << str;
#else
std::cerr << str;
#endif
str = "\n";
}
#ifdef _WIN32
// Flush seems broken on Windows (deadlocks)
std::clog << str;
#else
std::cerr << str;
#endif
}
} // namespace utils