Alexandre Julliard : ntdll: Don' t report a file id for directory entries that are on a different device.

Alexandre Julliard julliard at winehq.org
Thu Dec 3 10:29:49 CST 2009


Module: wine
Branch: master
Commit: 6677565f34d19a55c3f17f4eef764f0dbc5d9b98
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6677565f34d19a55c3f17f4eef764f0dbc5d9b98

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Dec  2 17:33:28 2009 +0100

ntdll: Don't report a file id for directory entries that are on a different device.

---

 dlls/ntdll/directory.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index de8d57c..b01519e 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -166,6 +166,7 @@ static const int is_case_sensitive = FALSE;
 UNICODE_STRING windows_dir = { 0, 0, NULL };  /* windows directory */
 UNICODE_STRING system_dir = { 0, 0, NULL };  /* system directory */
 
+static struct file_identity curdir;
 static struct file_identity windir;
 
 static RTL_CRITICAL_SECTION dir_section;
@@ -1025,6 +1026,7 @@ static union file_directory_info *append_entry( void *info_ptr, IO_STATUS_BLOCK
         io->u.Status = STATUS_BUFFER_OVERFLOW;
     }
     info = (union file_directory_info *)((char *)info_ptr + io->Information);
+    if (st.st_dev != curdir.dev) st.st_ino = 0;  /* ignore inode if on a different device */
     /* all the structures start with a FileDirectoryInformation layout */
     fill_stat_info( &st, info, class );
     info->dir.NextEntryOffset = total_len;
@@ -1713,6 +1715,10 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event,
     cwd = open( ".", O_RDONLY );
     if (fchdir( fd ) != -1)
     {
+        struct stat st;
+        fstat( fd, &st );
+        curdir.dev = st.st_dev;
+        curdir.ino = st.st_ino;
 #ifdef VFAT_IOCTL_READDIR_BOTH
         if ((read_directory_vfat( fd, io, buffer, length, single_entry,
                                   mask, restart_scan, info_class )) != -1) goto done;




More information about the wine-cvs mailing list