mirror of
https://github.com/moparisthebest/curl
synced 2025-01-10 21:48:10 -05:00
curl: enabled Windows VT Support and UTF-8 output
Enabled Console VT support (if running OS supports VT) in tool_main.c. Fixes #3008 Closes #3011
This commit is contained in:
parent
454fa3fd7b
commit
becfe1233f
@ -236,6 +236,56 @@ static void main_free(struct GlobalConfig *config)
|
|||||||
config->last = NULL;
|
config->last = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
/* TerminalSettings for Windows */
|
||||||
|
struct TerminalSettings {
|
||||||
|
HANDLE hStdOut;
|
||||||
|
DWORD dwOutputMode;
|
||||||
|
UINT nCodepage;
|
||||||
|
}TerminalSettings;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void configure_terminal(void)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
/*
|
||||||
|
* If we're running Windows, enable VT output & set codepage to UTF-8.
|
||||||
|
* Note: VT mode flag can be set on any version of Windows, but VT
|
||||||
|
* processing only performed on Win10 >= Creators Update)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define the VT flags in case we're building with an older SDK */
|
||||||
|
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
|
||||||
|
#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);
|
||||||
|
if((TerminalSettings.hStdOut != INVALID_HANDLE_VALUE)
|
||||||
|
&& (GetConsoleMode(TerminalSettings.hStdOut,
|
||||||
|
&TerminalSettings.dwOutputMode))) {
|
||||||
|
SetConsoleMode(TerminalSettings.hStdOut,
|
||||||
|
TerminalSettings.dwOutputMode
|
||||||
|
| ENABLE_VIRTUAL_TERMINAL_PROCESSING);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void restore_terminal(void)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
/* Restore Console output mode and codepage to whatever they were
|
||||||
|
* when Curl started */
|
||||||
|
SetConsoleMode(TerminalSettings.hStdOut, TerminalSettings.dwOutputMode);
|
||||||
|
SetConsoleOutputCP(TerminalSettings.nCodepage);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** curl tool main function.
|
** curl tool main function.
|
||||||
*/
|
*/
|
||||||
@ -245,6 +295,9 @@ int main(int argc, char *argv[])
|
|||||||
struct GlobalConfig global;
|
struct GlobalConfig global;
|
||||||
memset(&global, 0, sizeof(global));
|
memset(&global, 0, sizeof(global));
|
||||||
|
|
||||||
|
/* Perform any platform-specific terminal configuration */
|
||||||
|
configure_terminal();
|
||||||
|
|
||||||
main_checkfds();
|
main_checkfds();
|
||||||
|
|
||||||
#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
|
#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
|
||||||
@ -270,6 +323,9 @@ int main(int argc, char *argv[])
|
|||||||
main_free(&global);
|
main_free(&global);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the terminal to its original state */
|
||||||
|
restore_terminal();
|
||||||
|
|
||||||
#ifdef __NOVELL_LIBC__
|
#ifdef __NOVELL_LIBC__
|
||||||
if(getenv("_IN_NETWARE_BASH_") == NULL)
|
if(getenv("_IN_NETWARE_BASH_") == NULL)
|
||||||
tool_pressanykey();
|
tool_pressanykey();
|
||||||
|
12
winbuild/makedebug.cmd
Normal file
12
winbuild/makedebug.cmd
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
where.exe nmake.exe >nul 2>&1
|
||||||
|
|
||||||
|
IF %ERRORLEVEL == 1 (
|
||||||
|
ECHO Error: Can't find `nmake.exe` - be sure to run this script from within a Developer Command-Prompt
|
||||||
|
ECHO.
|
||||||
|
) ELSE (
|
||||||
|
nmake /f Makefile.vc mode=static DEBUG=yes GEN_PDB=yes
|
||||||
|
IF %ERRORLEVEL% NEQ 0 (ECHO "Error: Build Failed")
|
||||||
|
)
|
||||||
|
|
2
winbuild/rundebug.cmd
Normal file
2
winbuild/rundebug.cmd
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
@echo off
|
||||||
|
start cmd /k ..\builds\libcurl-vc-x86-debug-static-ipv6-sspi-winssl\bin\curl.exe https://wttr.in/seattle
|
Loading…
Reference in New Issue
Block a user