Hey folks,
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.
Andrew