DOSFS_FindUnixName and "unix" filesystem (was: Re: (HELP) ...)
Martin Wilck
Martin.Wilck at Fujitsu-Siemens.com
Wed Aug 28 11:35:08 CDT 2002
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)
--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:Martin.Wilck at Fujitsu-Siemens.com
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy
More information about the wine-devel
mailing list