Loading src/tool_cb_wrt.c +30 −1 Original line number Diff line number Diff line Loading @@ -156,6 +156,35 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) } } #ifdef _WIN32 if(isatty(fileno(outs->stream))) { DWORD in_len = (DWORD)(sz * nmemb); wchar_t* wc_buf; DWORD wc_len; /* calculate buffer size for wide characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, NULL, 0); wc_buf = (wchar_t*) malloc(wc_len * sizeof(wchar_t)); if(!wc_buf) return failure; /* calculate buffer size for multi-byte characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, wc_buf, wc_len); if(!WriteConsoleW( (HANDLE) _get_osfhandle(fileno(outs->stream)), wc_buf, wc_len, &wc_len, NULL)) { free(wc_buf); return failure; } free(wc_buf); rc = bytes; } else #endif rc = fwrite(buffer, sz, nmemb, outs->stream); if(bytes == rc) Loading src/tool_main.c +1 −6 Original line number Diff line number Diff line Loading @@ -241,13 +241,12 @@ static void main_free(struct GlobalConfig *config) static struct TerminalSettings { HANDLE hStdOut; DWORD dwOutputMode; UINT nCodepage; } TerminalSettings; static void configure_terminal(void) { /* * If we're running Windows, enable VT output & set codepage to UTF-8. * If we're running Windows, enable VT output. * Note: VT mode flag can be set on any version of Windows, but VT * processing only performed on Win10 >= Creators Update) */ Loading @@ -257,10 +256,7 @@ static void configure_terminal(void) #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #endif /* Cache current codepage (will restore on exit) & set codepage to UTF-8 */ memset(&TerminalSettings, 0, sizeof(TerminalSettings)); TerminalSettings.nCodepage = GetConsoleOutputCP(); SetConsoleOutputCP(65001); /* Enable VT output */ TerminalSettings.hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); Loading @@ -282,7 +278,6 @@ static void restore_terminal(void) /* Restore Console output mode and codepage to whatever they were * when Curl started */ SetConsoleMode(TerminalSettings.hStdOut, TerminalSettings.dwOutputMode); SetConsoleOutputCP(TerminalSettings.nCodepage); #endif } Loading Loading
src/tool_cb_wrt.c +30 −1 Original line number Diff line number Diff line Loading @@ -156,6 +156,35 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) } } #ifdef _WIN32 if(isatty(fileno(outs->stream))) { DWORD in_len = (DWORD)(sz * nmemb); wchar_t* wc_buf; DWORD wc_len; /* calculate buffer size for wide characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, NULL, 0); wc_buf = (wchar_t*) malloc(wc_len * sizeof(wchar_t)); if(!wc_buf) return failure; /* calculate buffer size for multi-byte characters */ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, wc_buf, wc_len); if(!WriteConsoleW( (HANDLE) _get_osfhandle(fileno(outs->stream)), wc_buf, wc_len, &wc_len, NULL)) { free(wc_buf); return failure; } free(wc_buf); rc = bytes; } else #endif rc = fwrite(buffer, sz, nmemb, outs->stream); if(bytes == rc) Loading
src/tool_main.c +1 −6 Original line number Diff line number Diff line Loading @@ -241,13 +241,12 @@ static void main_free(struct GlobalConfig *config) static struct TerminalSettings { HANDLE hStdOut; DWORD dwOutputMode; UINT nCodepage; } TerminalSettings; static void configure_terminal(void) { /* * If we're running Windows, enable VT output & set codepage to UTF-8. * If we're running Windows, enable VT output. * Note: VT mode flag can be set on any version of Windows, but VT * processing only performed on Win10 >= Creators Update) */ Loading @@ -257,10 +256,7 @@ static void configure_terminal(void) #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #endif /* Cache current codepage (will restore on exit) & set codepage to UTF-8 */ memset(&TerminalSettings, 0, sizeof(TerminalSettings)); TerminalSettings.nCodepage = GetConsoleOutputCP(); SetConsoleOutputCP(65001); /* Enable VT output */ TerminalSettings.hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); Loading @@ -282,7 +278,6 @@ static void restore_terminal(void) /* Restore Console output mode and codepage to whatever they were * when Curl started */ SetConsoleMode(TerminalSettings.hStdOut, TerminalSettings.dwOutputMode); SetConsoleOutputCP(TerminalSettings.nCodepage); #endif } Loading