diff options
author | Andre Heinecke <[email protected]> | 2016-01-26 08:53:42 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-01-26 08:53:42 +0000 |
commit | 3e50236d4ecc3601b2641bf4273a0ff64bb5fdc4 (patch) | |
tree | 6eb1cf224143969a5b60e622a0fd7e1479ee6b51 /tools/gpgtar-create.c | |
parent | g10: Fix segfault on unsupported curve. (diff) | |
download | gnupg-3e50236d4ecc3601b2641bf4273a0ff64bb5fdc4.tar.gz gnupg-3e50236d4ecc3601b2641bf4273a0ff64bb5fdc4.zip |
gpgtar,w32: Fix gpgtar 8 bit encoding handling on W32
* common/utf8conv.c (wchar_to_utf8): Factor code out to ...
(wchar_to_cp): new.
(utf8_to_wchar): Factor code out to ...
(cp_to_wchar): new.
(wchar_to_native): New.
(native_to_wchar): New.
* tools/gpgtar-create.c (fillup_entry_w32): Use native_to_wchar.
(scan_directory): Use wchar_to_native.
--
Gpgtar needs to handle filenames in the local 8 bit encoding on
Windows as it uses the 8 bit file io functions.
GnuPG-bug-id: 1624, 1746
Patch from bug 1624 modified to fit into GnuPG 2.1 by wk.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tools/gpgtar-create.c')
-rw-r--r-- | tools/gpgtar-create.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/tools/gpgtar-create.c b/tools/gpgtar-create.c index 2fd70190c..968dca695 100644 --- a/tools/gpgtar-create.c +++ b/tools/gpgtar-create.c @@ -72,13 +72,13 @@ fillup_entry_w32 (tar_header_t hdr) for (p=hdr->name; *p; p++) if (*p == '/') *p = '\\'; - wfname = utf8_to_wchar (hdr->name); + wfname = native_to_wchar (hdr->name); for (p=hdr->name; *p; p++) if (*p == '\\') *p = '/'; if (!wfname) { - log_error ("error utf8-ing '%s': %s\n", hdr->name, w32_strerror (-1)); + log_error ("error converting '%s': %s\n", hdr->name, w32_strerror (-1)); return gpg_error_from_syserror (); } if (!GetFileAttributesExW (wfname, GetFileExInfoStandard, &fad)) @@ -299,7 +299,7 @@ scan_directory (const char *dname, scanctrl_t scanctrl) for (p=fname; *p; p++) if (*p == '/') *p = '\\'; - wfname = utf8_to_wchar (fname); + wfname = native_to_wchar (fname); xfree (fname); if (!wfname) { @@ -322,11 +322,11 @@ scan_directory (const char *dname, scanctrl_t scanctrl) do { - char *fname = wchar_to_utf8 (fi.cFileName); + char *fname = wchar_to_native (fi.cFileName); if (!fname) { err = gpg_error_from_syserror (); - log_error ("error utf8-ing filename: %s\n", w32_strerror (-1)); + log_error ("error converting filename: %s\n", w32_strerror (-1)); break; } for (p=fname; *p; p++) |