mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04:00
Introduce WindowsScopedCodePage
RAII class
This commit is contained in:
parent
5744db77b2
commit
ce7f41c01b
6 changed files with 28 additions and 0 deletions
|
@ -1315,6 +1315,7 @@ MAIN_FUNCTION
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
common::WinCmdLineArgs winArgs;
|
common::WinCmdLineArgs winArgs;
|
||||||
std::tie(argc, argv) = winArgs.get();
|
std::tie(argc, argv) = winArgs.get();
|
||||||
|
common::WindowsScopedCodePage windows_terminal_output_code_page{CP_UTF8};
|
||||||
#endif
|
#endif
|
||||||
SetupEnvironment();
|
SetupEnvironment();
|
||||||
if (!SetupNetworking()) {
|
if (!SetupNetworking()) {
|
||||||
|
|
|
@ -100,6 +100,7 @@ MAIN_FUNCTION
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
common::WinCmdLineArgs winArgs;
|
common::WinCmdLineArgs winArgs;
|
||||||
std::tie(argc, argv) = winArgs.get();
|
std::tie(argc, argv) = winArgs.get();
|
||||||
|
common::WindowsScopedCodePage windows_terminal_output_code_page{CP_UTF8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int exit_status;
|
int exit_status;
|
||||||
|
|
|
@ -257,6 +257,7 @@ MAIN_FUNCTION
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
common::WinCmdLineArgs winArgs;
|
common::WinCmdLineArgs winArgs;
|
||||||
std::tie(argc, argv) = winArgs.get();
|
std::tie(argc, argv) = winArgs.get();
|
||||||
|
common::WindowsScopedCodePage windows_terminal_output_code_page{CP_UTF8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NodeContext node;
|
NodeContext node;
|
||||||
|
|
|
@ -889,5 +889,16 @@ std::pair<int, char**> WinCmdLineArgs::get()
|
||||||
{
|
{
|
||||||
return std::make_pair(argc, argv);
|
return std::make_pair(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WindowsScopedCodePage::WindowsScopedCodePage(UINT new_console_outp_code_page)
|
||||||
|
: m_original_code_page{GetConsoleOutputCP()}
|
||||||
|
{
|
||||||
|
SetConsoleOutputCP(new_console_outp_code_page);
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowsScopedCodePage::~WindowsScopedCodePage()
|
||||||
|
{
|
||||||
|
SetConsoleOutputCP(m_original_code_page);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
} // namespace common
|
} // namespace common
|
||||||
|
|
|
@ -492,6 +492,19 @@ private:
|
||||||
char** argv;
|
char** argv;
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A RAII-style class for temporarily changing the terminal output code page during runtime.
|
||||||
|
*/
|
||||||
|
class WindowsScopedCodePage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WindowsScopedCodePage(UINT new_console_outp_code_page);
|
||||||
|
~WindowsScopedCodePage();
|
||||||
|
|
||||||
|
private:
|
||||||
|
UINT m_original_code_page;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
} // namespace common
|
} // namespace common
|
||||||
|
|
||||||
|
|
|
@ -481,6 +481,7 @@ int GuiMain(int argc, char* argv[])
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
common::WinCmdLineArgs winArgs;
|
common::WinCmdLineArgs winArgs;
|
||||||
std::tie(argc, argv) = winArgs.get();
|
std::tie(argc, argv) = winArgs.get();
|
||||||
|
common::WindowsScopedCodePage windows_terminal_output_code_page{CP_UTF8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::unique_ptr<interfaces::Init> init = interfaces::MakeGuiInit(argc, argv);
|
std::unique_ptr<interfaces::Init> init = interfaces::MakeGuiInit(argc, argv);
|
||||||
|
|
Loading…
Add table
Reference in a new issue