On Wed, Jan 8, 2014 at 9:20 AM, Corinna Vinschen wrote: > On Jan 7 18:15, Ray Donnelly wrote: >> On Tue, Jan 7, 2014 at 3:12 PM, Corinna Vinschen wrote: >> > On Dec 22 01:03, Ray Donnelly wrote: >> >> I hope this is OK and I've done it in the best place. Please advise if >> >> it needs any changes. >> > >> > I have no idea if this is ok. This is a patch to a very crucial >> > function in terms of path handling, and it's not clear that this isn't >> > doing the wrong thing. What is this patch trying to accomplish? Do you >> > have example user space code which is failing for this very reason? >> >> The exact issue was that paths that do not exist would maintain their >> final dirsep whereas paths that do exist would lose this dirsep: >> >> test.exe /c/doesnt-exist/ /c/does-exist/ >> >> test.exe would see: >> arg1: C:/doesnt-exist/ >> arg2: C:/does-exist >> >> These paths were passed to GCC as search paths and while I could've >> hacked up the GCC code to detect and correct this anomaly, but I think >> this patch fixes the problem at cause. > > And that is a problem, because...?
.. because in this case, GCC appends sysroots directly to those passed-in-as-#define values and I end up with e.g. C:/does-existusr/ and C:/doesnt-exist/usr/, when I always wanted the final /. Of course I could add some nasty hacks in GCC and any other program that runs into this odd behavioural quirk to detect and workaround it, but IMHO fixing the quirk is a better approach. Someone's gone to the effort to re-attach the dirsep when the folder doesn't exist so they must have thought that preserving this was a good idea, I've just fixed a corner case in that so the results are consistent. > > > Corinna > > -- > Corinna Vinschen Please, send mails regarding Cygwin to > Cygwin Maintainer cygwin AT cygwin DOT com > Red Hat