* fhandler.cc (fhandler_base::open): Work around windows bug when
CreateFile() with dwDesiredAccess == 0 called on remote share returns valid handle even if file doesn't exist.
This commit is contained in:
parent
ae036f47c5
commit
9cc97acbd0
|
@ -1,3 +1,9 @@
|
|||
2001-06-30 Egor Duda <deo@logos-m.ru>
|
||||
|
||||
* fhandler.cc (fhandler_base::open): Work around windows bug when
|
||||
CreateFile() with dwDesiredAccess == 0 called on remote share returns
|
||||
valid handle even if file doesn't exist.
|
||||
|
||||
2001-06-20 Egor Duda <deo@logos-m.ru>
|
||||
|
||||
* fhandler_socket.cc (fhandler_socket::signal_secret_event): New
|
||||
|
|
|
@ -370,6 +370,17 @@ fhandler_base::open (int flags, mode_t mode)
|
|||
if (get_device () == FH_SERIAL)
|
||||
file_attributes |= FILE_FLAG_OVERLAPPED;
|
||||
|
||||
/* CreateFile() with dwDesiredAccess == 0 when called on remote
|
||||
share returns some handle, even if file doesn't exist. This code
|
||||
works around this bug. */
|
||||
if (get_query_open () &&
|
||||
isremote () &&
|
||||
creation_distribution == OPEN_EXISTING &&
|
||||
GetFileAttributes (get_win32_name ()) == (DWORD) -1)
|
||||
{
|
||||
set_errno (ENOENT);
|
||||
goto done;
|
||||
}
|
||||
x = CreateFileA (get_win32_name (), access, shared,
|
||||
&sec_none, creation_distribution,
|
||||
file_attributes,
|
||||
|
|
Loading…
Reference in New Issue