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

Joern RENNECKE joern.rennecke@st.com
Wed May 18 11:11:00 GMT 2005


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 '/'.
   



More information about the Gcc-patches mailing list