w32: Allow Unicode filenames for iobuf_cancel.

* common/iobuf.c (iobuf_cancel): Use gnupg_remove
* common/mischelp.c (same_file_p): Allow for Unicode names.
--

Note that the second patch is used to handle Unicode filenames which
are symbolic links.
This commit is contained in:
Werner Koch 2022-06-03 10:54:35 +02:00
parent e3db6c74a6
commit 10db566489
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
3 changed files with 24 additions and 35 deletions

View File

@ -1197,14 +1197,7 @@ iobuf_cancel (iobuf_t a)
{
/* Argg, MSDOS does not allow removing open files. So
* we have to do it here */
#ifdef HAVE_W32CE_SYSTEM
wchar_t *wtmp = utf8_to_wchar (remove_name);
if (wtmp)
DeleteFile (wtmp);
xfree (wtmp);
#else
remove (remove_name);
#endif
gnupg_remove (remove_name);
xfree (remove_name);
}
#endif

View File

@ -80,35 +80,30 @@ same_file_p (const char *name1, const char *name2)
#ifdef HAVE_W32_SYSTEM
HANDLE file1, file2;
BY_HANDLE_FILE_INFORMATION info1, info2;
wchar_t *wname;
wname = gpgrt_fname_to_wchar (name1);
if (wname)
{
file1 = CreateFileW (wname, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
xfree (wname);
}
else
file1 = INVALID_HANDLE_VALUE;
#ifdef HAVE_W32CE_SYSTEM
{
wchar_t *wname = utf8_to_wchar (name1);
if (wname)
file1 = CreateFile (wname, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
else
file1 = INVALID_HANDLE_VALUE;
xfree (wname);
}
#else
file1 = CreateFile (name1, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
#endif
if (file1 == INVALID_HANDLE_VALUE)
yes = 0; /* If we can't open the file, it is not the same. */
else
{
#ifdef HAVE_W32CE_SYSTEM
{
wchar_t *wname = utf8_to_wchar (name2);
if (wname)
file2 = CreateFile (wname, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
else
file2 = INVALID_HANDLE_VALUE;
xfree (wname);
}
#else
file2 = CreateFile (name2, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
#endif
wname = gpgrt_fname_to_wchar (name2);
if (wname)
{
file2 = CreateFileW (wname, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
xfree (wname);
}
else
file2 = INVALID_HANDLE_VALUE;
if (file2 == INVALID_HANDLE_VALUE)
yes = 0; /* If we can't open the file, it is not the same. */
else

View File

@ -258,9 +258,10 @@ this option only if you know what you are doing.
@item --pcsc-driver @var{library}
@opindex pcsc-driver
Use @var{library} to access the smartcard reader. The current default
is @file{libpcsclite.so}. Instead of using this option you might also
want to install a symbolic link to the default file name
(e.g. from @file{libpcsclite.so.1}).
on Unix is @file{libpcsclite.so} and on Windows @file{winscard.dll}.
Instead of using this option you might also want to install a symbolic
link to the default file name (e.g. from @file{libpcsclite.so.1}).
A Unicode file name may not be used on Windows.
@item --ctapi-driver @var{library}
@opindex ctapi-driver