summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_disk_file.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-02-20 16:14:53 +0000
committerCorinna Vinschen <corinna@vinschen.de>2005-02-20 16:14:53 +0000
commit4e5a3fa5e2cc0ce5365fd6bd0bfa43f73ba17b55 (patch)
tree8fcc163270bea11c0855dc0d56db55182181968d /winsup/cygwin/fhandler_disk_file.cc
parentf46ddb818aba0c7d45291be445e9b31e85e674c3 (diff)
downloadcygnal-4e5a3fa5e2cc0ce5365fd6bd0bfa43f73ba17b55.tar.gz
cygnal-4e5a3fa5e2cc0ce5365fd6bd0bfa43f73ba17b55.tar.bz2
cygnal-4e5a3fa5e2cc0ce5365fd6bd0bfa43f73ba17b55.zip
* fhandler.h (fhandler_base::fstat_helper): Declare with additional
dwVolumeSerialNumber argument. Drop default values for last three arguments. * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Pass dwVolumeSerialNumber from GetFileInformationByHandle to fstat_helper. (fhandler_base::fstat_by_name): Pass pc.volser () to fstat_helper. Accomodate dropping default values for last three arguments of fstat_helper. (fhandler_base::fstat_helper): Add dwVolumeSerialNumber argument. Use for st_dev member unless 0 in which case pc.volser () is used.
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index 5b057dbbd..dab34a453 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -114,6 +114,7 @@ fhandler_base::fstat_by_handle (struct __stat64 *buf)
local.ftCreationTime,
local.ftLastAccessTime,
local.ftLastWriteTime,
+ local.dwVolumeSerialNumber,
local.nFileSizeHigh,
local.nFileSizeLow,
local.nFileIndexHigh,
@@ -141,13 +142,17 @@ fhandler_base::fstat_by_name (struct __stat64 *buf)
local.ftCreationTime,
local.ftLastAccessTime,
local.ftLastWriteTime,
+ pc.volser (),
local.nFileSizeHigh,
- local.nFileSizeLow);
+ local.nFileSizeLow,
+ 0,
+ 0,
+ 1);
}
else if (pc.isdir ())
{
FILETIME ft = {};
- res = fstat_helper (buf, ft, ft, ft, 0, 0);
+ res = fstat_helper (buf, ft, ft, ft, pc.volser (), 0, 0, 0, 0, 1);
}
else
{
@@ -213,6 +218,7 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
FILETIME ftCreationTime,
FILETIME ftLastAccessTime,
FILETIME ftLastWriteTime,
+ DWORD dwVolumeSerialNumber,
DWORD nFileSizeHigh,
DWORD nFileSizeLow,
DWORD nFileIndexHigh,
@@ -233,7 +239,7 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
to_timestruc_t (&ftLastAccessTime, &buf->st_atim);
to_timestruc_t (&ftLastWriteTime, &buf->st_mtim);
to_timestruc_t (&ftCreationTime, &buf->st_ctim);
- buf->st_dev = pc.volser ();
+ buf->st_dev = dwVolumeSerialNumber ?: pc.volser ();
buf->st_size = ((_off64_t) nFileSizeHigh << 32) + nFileSizeLow;
/* The number of links to a directory includes the
number of subdirectories in the directory, since all