a82e3a0ae5
* 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.
50 lines
1.9 KiB
C
50 lines
1.9 KiB
C
/* sys-util.h - System utilities not generally used.
|
|
* Copyright (C) 2013 g10 Code GmbH
|
|
*
|
|
* This file is part of GPGME.
|
|
*
|
|
* GPGME is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as
|
|
* published by the Free Software Foundation; either version 2.1 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* GPGME is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this program; if not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef SYS_UTIL_H
|
|
#define SYS_UTIL_H
|
|
|
|
/*-- {posix,w32}-util.c --*/
|
|
int _gpgme_set_default_gpg_name (const char *name);
|
|
int _gpgme_set_default_gpgconf_name (const char *name);
|
|
int _gpgme_set_override_inst_dir (const char *dir);
|
|
|
|
char *_gpgme_get_gpg_path (void);
|
|
char *_gpgme_get_gpgconf_path (void);
|
|
|
|
int _gpgme_access (const char *path_utf8, int mode);
|
|
|
|
#ifdef HAVE_W32_SYSTEM
|
|
const char *_gpgme_get_inst_dir (void);
|
|
void _gpgme_w32_cancel_synchronous_io (HANDLE thread);
|
|
/* See CreateProcessA returns true on success */
|
|
int _gpgme_create_process_utf8 (const char *application_name_utf8,
|
|
char *command_line_utf8,
|
|
LPSECURITY_ATTRIBUTES lpProcessAttributes,
|
|
LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
|
BOOL bInheritHandles,
|
|
DWORD dwCreationFlags,
|
|
void *lpEnvironment,
|
|
char *working_directory_utf8,
|
|
LPSTARTUPINFOA lpStartupInfo,
|
|
LPPROCESS_INFORMATION lpProcessInformation);
|
|
#endif
|
|
|
|
#endif /* SYS_UTIL_H */
|