16-Bit, vfat, short names

Reinhard Karcher rkarcher at frey.de
Sat Dec 30 02:36:06 CST 2006


There is a problem with NtQueryDirectoryFile on vfat filesystems.
For a directory not in 8.3 format a winelike shortname (xxxx~yyy) is generated,
but that short name is looked for in the vfat-directory, where only a
windowslike shortname (xxxxxx~y) exists and the directory is not found.
The attached patch fixes that problem for me.

Reinhard Karcher

--- wine-0.9.28/dlls/ntdll/directory.c	2006-12-09 20:05:24.000000000 +0100
+++ wine-0.9.28n/dlls/ntdll/directory.c	2006-12-29 16:11:01.000000000 +0100
@@ -1513,13 +1513,13 @@
 
     if ((cwd = open(".", O_RDONLY)) != -1 && fchdir( fd ) != -1)
     {
-        if (mask && !mempbrkW( mask->Buffer, wszWildcards, mask->Length / sizeof(WCHAR) ) &&
-            read_directory_stat( fd, io, buffer, length, single_entry, mask, restart_scan ) != -1)
-            goto done;
 #ifdef VFAT_IOCTL_READDIR_BOTH
         if ((read_directory_vfat( fd, io, buffer, length, single_entry, mask, restart_scan )) != -1)
             goto done;
 #endif
+        if (mask && !mempbrkW( mask->Buffer, wszWildcards, mask->Length / sizeof(WCHAR) ) &&
+            read_directory_stat( fd, io, buffer, length, single_entry, mask, restart_scan ) != -1)
+            goto done;
 #ifdef USE_GETDENTS
         if ((read_directory_getdents( fd, io, buffer, length, single_entry, mask, restart_scan )) != -1)
             goto done;




More information about the wine-patches mailing list