annoyance running mingw

Dan Kegel dank at kegel.com
Tue Feb 25 21:25:16 CST 2003


Tony Lambregts wrote:
>> What about reversing the order: first try the DOS
>> path, if that fails, try the Unix one...
>>  
>>
> It is not possible to easily reverse the order in wine searches 
> DOSFS_GetPathDrive. If it sees a "/" then it tries to use the path as a 
> (absolute) unix one otherwise it just returns the current drive. 
> Changing this behavior is not simple and however annoying the message is 
> it is correct.

The message is correct, but Wine's behavior is not.  I'm pretty
sure you understand the issue, but for anyone still wondering:
The problem is strictly theoretical at this point, but we should be aware
of it in case somebody runs into it in the future.  Here's the
scenario:
  * user installs MinGW or some other app that's been ported
    to Win32 but uses Unix-style path separators for win32
    directories
  * a path used by the program happens to exist both in
    the Windows filespace on drive C: (presumably this would be something
    installed by the app) and in the Unix filespace.
    For instance, the path /etc/blort/config might be a configuration
    file for a library used both on Linux and installed independently
    onto drive C: by the application.
   * The app tries to open the file on drive C:, and gets the
    file in Linux instead.  Bang!  The program crashes, or gives
    bad results.

> ... In order to change this behavior we would have to 
> make changes to GetShortPathNameW so that it tries the path with the 
> current drive first and then calls this (modified) function. After 
> looking at the code for the last couple of hours I'm sure it could be 
> done but I don't know if it is worth it.

Thanks for looking at it.

> At present I think that it would be better to change the message
> 
>    {
> 
>        if ((drive = DRIVE_FindDriveRootW( name )) == -1)
> 
>        {
> 
> -            MESSAGE("Warning: %s not accessible from a configured DOS 
> drive\n", debugstr_w(*name) );
> 
> +            WARN("failed to find %s as an absolute unix path mapped to 
> configured DOS drive \n",
> +                   debugstr_w(*name) );
> +            WARN("assuming it was a really a DOS name")
>            /* Assume it really was a DOS name */
> 
>            drive = DRIVE_GetCurrentDrive();
> 
>        }
> 
> Or something like that.

Or something like that, yeah.  We want to display a hint that
there might be a misinterpretation of a DOS path as a Unix path.
- Dan

-- 
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045




More information about the wine-devel mailing list