* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Check

return code from GetFileSize and set file size to 0 if necessary.
	* fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions
	to read/execute for all.
This commit is contained in:
Corinna Vinschen 2005-05-14 21:12:10 +00:00
parent 6dd9ec6c58
commit dad546a5eb
3 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2005-05-14 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Check
return code from GetFileSize and set file size to 0 if necessary.
* fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions
to read/execute for all.
2005-05-13 Christopher Faylor <cgf@timesys.com>
* path.cc (normalize_posix_path): Do normalization on . and .. after

View File

@ -148,11 +148,16 @@ fhandler_base::fstat_by_handle (struct __stat64 *buf)
BOOL res = GetFileInformationByHandle (get_handle (), &local);
debug_printf ("%d = GetFileInformationByHandle (%s, %d)",
res, get_win32_name (), get_handle ());
/* GetFileInformationByHandle will fail if it's given stdio handle or pipe*/
/* GetFileInformationByHandle will fail if it's given stdio handle or pipe.
It also fails on 9x when trying to access directories on shares. */
if (!res)
{
memset (&local, 0, sizeof (local));
local.nFileSizeLow = GetFileSize (get_handle (), &local.nFileSizeHigh);
/* Even GetFileSize fails on 9x when trying to access directories
on shares. In this case reset filesize to 0. */
if (local.nFileSizeLow == 0xffffffff && GetLastError ())
local.nFileSizeLow = 0;
}
return fstat_helper (buf,

View File

@ -65,7 +65,7 @@ fhandler_netdrive::fstat (struct __stat64 *buf)
(void) fhandler_base::fstat (buf);
buf->st_mode = S_IFDIR | S_IXUSR | S_IXGRP | S_IXOTH;
buf->st_mode = S_IFDIR | STD_RBITS | STD_XBITS;
return 0;
}