DOSFS_FindUnixName and "unix" filesystem (was: Re: (HELP) ...)

Martin Wilck Martin.Wilck at
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/'
> > 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.


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
D-33106 Paderborn 

More information about the wine-devel mailing list