This is the mail archive of the
mailing list for the GCC project.
Re: RFA: Fix problem with trailing slashes in include paths on mingw
Joern RENNECKE <firstname.lastname@example.org> writes:
> Sorry, I missed that when I typed in the tests.
> / and \ are OK, but // and \\ don't work. Otherwise the
> leading-(back)slash scenario
> is the same as with leading-drive-and-backslash. Likewise with leading
> drive letter but no leading slash. FWIW, I'm running these tests on
> MS Windows XP.
>>>/* While the native stat() on NT4 accepts trailing slashes, the
>>> one on MS Windows 2000 / XP does not accept any trailing slashes
>>> or backslashes, neither single nor double, except where they appear
>>> as a drive root directory designator. So remove any trailing slashes
>>> except for the first one after a colon. */
>>Better, but still not ideal, especially with your observation below
>>that this is cygwin-specific. (Just the trailing slashes, or slashes
>>and backslashes both?) On the theory that the whole problem is Cygwin
>>specific, I would say something like
> NT4 accepts trailing slashes, but no trailing backslashes.
Okay, so how's this for the comment?
/* The native stat() on NT4 accepts trailing slashes, but not
backslashes. Cygwin's stat on Windows 2000/XP doesn't accept
either trailing slashes or backslashes. (C:/ and C:\ are of
course fine, but C:\\ and C:// are not.) It is harmless to
remove trailing slashes on systems that do accept them, so we
do it unconditionally. */
And this for the code (after the existing slash canonicalizer):
while (*c == '/' && c > path)
if (c == path+1 && ISALPHA (path) && path == ':')
if (c == '/')
c = '\0';