core,w32: Improve handling of Unicode paths
authorAndre Heinecke <aheinecke@gnupg.org>
Tue, 9 Apr 2019 11:42:58 +0000 (13:42 +0200)
committerAndre Heinecke <aheinecke@gnupg.org>
Tue, 9 Apr 2019 11:42:58 +0000 (13:42 +0200)
commita82e3a0ae57a48ba173e282a050680751006c074
tree5afef85afbfa0052ff5aa84b51a2d25aa0c72762
parent937adfdcbb22f715c5a331e5e2d4546ac15a1b7e
core,w32: Improve handling of Unicode paths

* src/dirinfo.c (get_gpgconf_item): Use _gpgme_access.
* src/posix-util.c (_gpgme_access): Add forward to normal access.
* src/sys-util.h (_gpgme_access): New for posix and w32.
* src/w32-io.c (_gpgme_io_spawn): Use _gpgme_crate_process_utf8.
* src/w32-util.c (utf8_to_wchar, utf8_to_wchar0): The usual w32 conv.
(find_program_in_dir): Use _gpgme_access.
(find_program_at_standard_place): Use wchar API and convert to UTF-8.
(_gpgme_access): Convert UTF-8 to wchar and use wchar API.
(_gpgme_create_process_utf8): Convert UTF-8 to wchar and use wchar API.

--
While we should not say that we have full support for unicode path
installations of GnuPG, this ensures that GPGME works if GPGME
itself is installed in a unicode path. e.g.: Libreoffice supports
this.

GnuPG-Bug-Id: T4453

Based on a patch provided by Egor Pugin. Thanks.
src/dirinfo.c
src/posix-util.c
src/sys-util.h
src/w32-io.c
src/w32-util.c