On Fri, Apr 25, 2014 at 3:16 AM, Joey Ye <joey...@arm.com> wrote: > Ping
To be clear, I am not a libcpp maintainer and I don't plan to approve this patch. This should be reviewed by a libcpp maintainer or a C or C++ frontend maintainer. Ian >> -----Original Message----- >> From: Joey Ye [mailto:joey...@arm.com] >> Sent: Tuesday, April 01, 2014 6:18 PM >> To: 'Ian Lance Taylor' >> Cc: gcc-patches >> Subject: RE: [patch] Shorten Windows path >> >> Ian, thanks for your comments. Please find answers and new version below: >> >> > -----Original Message----- >> > From: Ian Lance Taylor [mailto:i...@google.com] >> > Sent: 25 March 2014 21:09 >> > To: Joey Ye >> > Cc: gcc-patches >> > Subject: Re: [patch] Shorten Windows path >> > >> > On Tue, Mar 25, 2014 at 1:58 AM, Joey Ye <joey...@arm.com> wrote: >> > > Ping >> > >> > This code looks different on mainline. >> > >> > Writing "if ( do_canonical )" is not GCC style. >> Fixed >> > >> > This patch does not respect the configure option --disable-canonical- >> system- >> > headers. >> Solved by put is under the control of default >> ENABLE_CANONICAL_SYSTEM_HEADERS >> > >> > Also I personally don't actually know what the consequences would be. >> > Are there any downsides to canonicalizing header names? >> Since 4.8 system headers are by default canonicalized. This version only >> additionally canonical non-system headers. I can't think of any downsides. >> >> > >> > Ian >> >> ChangeLog.libcpp: >> >> * files.c (find_file_in_dir): Always try to shorten for DOS non-system >> headers. >> * init.c (ENABLE_CANONICAL_SYSTEM_HEADERS): Default enabled for DOS. >> >> diff --git a/libcpp/files.c b/libcpp/files.c >> index 7e88778..ad68682 100644 >> --- a/libcpp/files.c >> +++ b/libcpp/files.c >> @@ -387,8 +387,14 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file, >> bool *invalid_pch) >> char *copy; >> void **pp; >> >> - /* We try to canonicalize system headers. */ >> - if (CPP_OPTION (pfile, canonical_system_headers) && file->dir->sysp) >> + /* We try to canonicalize system headers. For DOS based file >> + * system, we always try to shorten non-system headers, as DOS >> + * has a tighter constraint on max path length. */ >> + if (CPP_OPTION (pfile, canonical_system_headers) && file->dir->sysp >> +#ifdef HAVE_DOS_BASED_FILE_SYSTEM >> + || !file->dir->sysp >> +#endif >> + ) >> { >> char * canonical_path = maybe_shorter_path (path); >> if (canonical_path) >> diff --git a/libcpp/init.c b/libcpp/init.c >> index f10413a..b809515 100644 >> --- a/libcpp/init.c >> +++ b/libcpp/init.c >> @@ -27,8 +27,12 @@ along with this program; see the file COPYING3. If not >> see >> #include "filenames.h" >> >> #ifndef ENABLE_CANONICAL_SYSTEM_HEADERS >> +#ifdef HAVE_DOS_BASED_FILE_SYSTEM >> +#define ENABLE_CANONICAL_SYSTEM_HEADERS 1 >> +#else >> #define ENABLE_CANONICAL_SYSTEM_HEADERS 0 >> #endif >> +#endif >> >> static void init_library (void); >> static void mark_named_operators (cpp_reader *, int); > >