RFC: Standardize paths in shell32.SHChangeNotify [Bug 18606]
aeikum at codeweavers.com
Mon Jun 14 15:47:36 CDT 2010
I have a fix here for bug 18606. I think it's decent, but I could use
another few sets of eyes to make sure I didn't miss anything, or even
that I'm not way on the wrong track.
The problem and solution are described in patch 3. In brief,
SHChangeNotify notifies windows when a change to the filesystem occurs
that the window asked to be notified about. For example, a window might
tell SHChangeNotifyRegister "Inform me about changes to C:\".
Bug 18606 occurs because the new directory is passed to SHChangeNotify
as '/home/user/.wine/drive_c/New Directory', which doesn't match the
IDList created for 'C:\'. This patchset fixes that by converting all
paths in SHChangeNotify to UNIX paths, resolving symlinks etc, and
comparing the ID lists created from those paths. That way, the paths
being compared are standardized and compared fairly.
Unfortunately, this is hard to write tests for. You'd have to make an
ID list that is significantly different from the one
SHChangeNotifyRegister will create, but that actually refers to the same
directory. This is easy in Wine, but less obvious in Windows.
Suggestions for how to accomplish this are welcome. Logically, though,
I think the problem and solution make sense.
Please take a look. Any feedback is appreciated.
More information about the wine-devel