This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Fix problem with trailing slashes in include paths on mingw


Zack Weinberg wrote:



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


No, C:\\ and C:// work too (on the machine I'm testing YMMV with a different
MS Windows flavour.) It's // and \\ which don't work.


   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)
c--;
if (c == path+1 && ISALPHA (path[0]) && path[1] == ':')
c++;
if (c[1] == '/')
c[1] = '\0';



No, that won't work.
- The slash canonicalizer leaves c pointing at the terminating zero.
- When you have gobbled away indicriminatively all trailing slashes, and
find that you are left with a drive designator, you can't blindly assume that
there was a trailing slash. The path might be "C:", followed in memory
by some other datum (probably malloc administration information)
that happens to start with '/'.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]