aboutsummaryrefslogtreecommitdiffstats
path: root/common/init.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-03-05 14:33:40 +0000
committerWerner Koch <[email protected]>2021-03-05 14:33:40 +0000
commit8c41b8aac3efb78178fe1eaf52d8d1bbc44941a8 (patch)
tree8e2a964084519e4ff4864643573d1d41ebec0e66 /common/init.c
parentw32: Free memory allocated by new function w32_write_console. (diff)
downloadgnupg-8c41b8aac3efb78178fe1eaf52d8d1bbc44941a8.tar.gz
gnupg-8c41b8aac3efb78178fe1eaf52d8d1bbc44941a8.zip
w32: Always use Unicode for console input and output.
* common/init.c (_init_common_subsystems) [W32]: Set the codepage to UTF-8 for input and putput. Switch gettext to UTF-8. * tools/gpgconf.c (main): Display the input and output codepage if they differ. * g10/gpg.c (utf8_strings) [W32]: Make sure this is always set. -- With this patch the former patch to use ReadConsoleW and WriteConsoleW in ttyio.c are kind of superfluous because the ANSI version of these functions are also able to read/write UTF-8 directly given the console code page has been set correctly. However, this seems to work only with recent versions of Windows-10. GnuPG-bug-id: 4365
Diffstat (limited to 'common/init.c')
-rw-r--r--common/init.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/common/init.c b/common/init.c
index ba20cd8d0..7b6b4aea0 100644
--- a/common/init.c
+++ b/common/init.c
@@ -202,6 +202,17 @@ _init_common_subsystems (gpg_err_source_t errsource, int *argcp, char ***argvp)
parse_std_file_handles (argcp, argvp);
#endif
+#ifdef HAVE_W32_SYSTEM
+ /* We want gettext to always output UTF-8 and we put the console in
+ * utf-8 mode. */
+ gettext_use_utf8 (1);
+ if (!SetConsoleCP (CP_UTF8) || !SetConsoleOutputCP (CP_UTF8))
+ {
+ log_info ("SetConsoleCP failed: %s\n", w32_strerror (-1));
+ log_info ("Warning: Garbled console data possible\n");
+ }
+#endif
+
/* Access the standard estreams as early as possible. If we don't
do this the original stdio streams may have been closed when
_es_get_std_stream is first use and in turn it would connect to