summaryrefslogtreecommitdiff
path: root/src/visibility.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2022-03-04 13:41:19 +0100
committerWerner Koch <wk@gnupg.org>2022-03-04 13:58:09 +0100
commit32dad4e4135f0bdc436ed684da753d4b0cdb0ea1 (patch)
tree4ca66f52c77467d7ff932b9440c06e1352032977 /src/visibility.c
parent666d64d2bc6539d0ca03dea69abc5a8ccdf37be5 (diff)
downloadlibgpg-error-32dad4e4135f0bdc436ed684da753d4b0cdb0ea1.tar.gz
w32: Support file names longer than MAX_PATH.
* src/sysutils.c (any8bitchar): Remove. (_gpgrt_fname_to_wchar): New. (_gpgrt_mkdir): Use instead of plain utf8 conversion. (_gpgrt_access): Reimplement using GetFileAttributesW so that long files names are supported. * src/estream.c (_gpgrt_w32_get_last_err_code): New. (func_file_create_w32): New. (_gpgrt_fopen): Handle the "sysopen" mode flag. Support mapping of /dev/null. (_gpgrt_freopen): Support mapping of /dev/null. * src/w32-gettext.c (load_domain): Allow long file names. * src/visibility.c (gpgrt_free_wchar): Make function public. (gpgrt_fname_to_wchar): Ditto. (gpgrt_utf8_to_wchar): Ditto. (gpgrt_wchar_to_utf8): Ditto. * src/w32-add.h (gpgrt_free_wchar): New prototype. (gpgrt_fname_to_wchar): Ditto. (gpgrt_utf8_to_wchar): Ditto. (gpgrt_wchar_to_utf8): Ditto. * src/gpg-error.def.in: Add them here too.
Diffstat (limited to 'src/visibility.c')
-rw-r--r--src/visibility.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/visibility.c b/src/visibility.c
index 03a6c45..fdf4805 100644
--- a/src/visibility.c
+++ b/src/visibility.c
@@ -1241,6 +1241,31 @@ gpgrt_absfnameconcat (const char *first, ... )
* specific function despite that they are technically not needed. */
#ifdef HAVE_W32_SYSTEM
+void
+gpgrt_free_wchar (wchar_t *wstring)
+{
+ if (wstring)
+ _gpgrt_free_wchar (wstring);
+}
+
+wchar_t *
+gpgrt_fname_to_wchar (const char *fname)
+{
+ return _gpgrt_fname_to_wchar (fname);
+}
+
+wchar_t *
+gpgrt_utf8_to_wchar (const char *string)
+{
+ return _gpgrt_utf8_to_wchar (string);
+}
+
+char *
+gpgrt_wchar_to_utf8 (const wchar_t *string)
+{
+ return _gpgrt_wchar_to_utf8 (string, (size_t)(-1));
+}
+
char *
gpgrt_w32_reg_query_string (const char *root, const char *dir, const char *name)
{