diff options
| author | Mikhail Paulyshka <me@mixaill.tk> | 2017-08-23 00:48:39 +0300 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-08-25 17:27:11 -0700 |
| commit | af017922974c4612517fe9c512df7cdd1ac79b43 (patch) | |
| tree | 3bae43e6dbd4f9d969c80a922fb07e95cc5b004a /toolsrc/src/vcpkg.cpp | |
| parent | 98ee8a949ad4bfdfa9bf0411b552a23c923eaff7 (diff) | |
| download | vcpkg-af017922974c4612517fe9c512df7cdd1ac79b43.tar.gz vcpkg-af017922974c4612517fe9c512df7cdd1ac79b43.zip | |
[vcpkg] use UTF-8 for console input/output
Diffstat (limited to 'toolsrc/src/vcpkg.cpp')
| -rw-r--r-- | toolsrc/src/vcpkg.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp index 9da501ec0..fc9b1a016 100644 --- a/toolsrc/src/vcpkg.cpp +++ b/toolsrc/src/vcpkg.cpp @@ -18,6 +18,30 @@ using namespace vcpkg; +UINT console_cp_input; +UINT console_cp_output; + +void console_cp_set() +{ + console_cp_input = GetConsoleCP(); + console_cp_output = GetConsoleOutputCP(); + + SetConsoleCP(CP_UTF8); + SetConsoleOutputCP(CP_UTF8); +} + +void console_cp_reset() +{ + SetConsoleCP(console_cp_input); + SetConsoleOutputCP(console_cp_output); +} + +BOOL console_ctrl_handler(DWORD fdwCtrlType) +{ + console_cp_reset(); + return TRUE; +} + void invalid_command(const std::string& cmd) { System::println(System::Color::error, "invalid command: %s", cmd); @@ -192,6 +216,10 @@ int wmain(const int argc, const wchar_t* const* const argv) { if (argc == 0) std::abort(); + console_cp_set(); + SetConsoleCtrlHandler(PHANDLER_ROUTINE(console_ctrl_handler), TRUE); + atexit(console_cp_reset); + *GlobalState::timer.lock() = ElapsedTime::create_started(); // Checks::register_console_ctrl_handler(); |
