I wrote on 2002-06-27:
$ make test /home/martin/Software/Wine/TMP/wine/miscemu/wine: cannot find 'tests/kernel32_test.exe.so' make: *** [tests/alloc.ok] Fehler 1
Am I the only one with this problem? Or is it so trivial that I should have figured it out?
I have finally figured this out. It has to do with some (intentional?) DOSFS_FindUnixName() weirdness.
My wine sources are in a directory /home/martin/Software/Wine/CVS/wine. /home/martin is my Windows drive Y:
Now in /home/martin/Software, I have subdirectories "Wine" and "wine". DOSFS_FindUnixName() uses "wine" because a) DOSFS_ReadDir returns it first, b) The DOS short names match (the Unix names obviously don't).
Since "wine" is the wrong path, the search fails shortly after. This happens even if I set the Filesystem type of drive Y: to "unix".
I guess this is the right thing to do on Windows-style file systems, but should it be this way on a "unix" file system, too?
The patch below does what I'd consider "sane" behaviour on Unix. Alternatively, on a "unix" filesystem, one could search the whole directory for exact matches, and try short names only if that fails.
Martin
Index: dos_fs.c =================================================================== RCS file: /home/wine/wine/files/dos_fs.c,v retrieving revision 1.117 diff -u -r1.117 dos_fs.c --- dos_fs.c 27 Aug 2002 01:13:59 -0000 1.117 +++ dos_fs.c 28 Aug 2002 16:27:47 -0000 @@ -760,7 +760,7 @@ if (!strncmpiW( long_name, name, len )) break; } } - if (dos_name[0]) + if (dos_name[0] && ignore_case) { /* Check against hashed DOS name */ if (!short_name)