[patch] Shorten Windows path
Joey Ye
joey.ye@arm.com
Tue Mar 25 09:06:00 GMT 2014
Ping
> -----Original Message-----
> From: Joey Ye [mailto:joey.ye@arm.com]
> Sent: 19 February 2014 15:45
> To: gcc-patches@gcc.gnu.org; Ian Lance Taylor (iant@google.com)
> Subject: [patch] Shorten Windows path
>
> Max length of path on Windows is 255, which is easy to exceed in a
> complicated project. Ultimate solution may be complex but canonizing the
> path and skipping the ".."s in path is helpful.
>
> Relative discussion in gcc-patches:
> http://gcc.gnu.org/ml/gcc-patches/2013-11/msg00582.html
>
> OK to trunk stage 1?
>
> ChangeLog.libcpp:
> * files.c (find_file_in_dir): Always try to shorten for DOS.
>
> diff --git a/libcpp/files.c b/libcpp/files.c index 7e88778..9dcc71f 100644
> --- a/libcpp/files.c
> +++ b/libcpp/files.c
> @@ -386,9 +386,18 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file,
> bool *invalid_pch)
> hashval_t hv;
> char *copy;
> void **pp;
> + bool do_canonical;
>
> +#ifdef HAVE_DOS_BASED_FILE_SYSTEM
> + /* For DOS based file system, we always try to shorten file path
> + * to as it has a shorter constraint on max path length. */
> + do_canonical = true;
> +#else
> /* We try to canonicalize system headers. */
> - if (CPP_OPTION (pfile, canonical_system_headers) &&
file->dir->sysp)
> + do_canonical = (CPP_OPTION (pfile, canonical_system_headers)
> + && file->dir->sysp); #endif
> + if ( do_canonical )
> {
> char * canonical_path = maybe_shorter_path (path);
> if (canonical_path)
More information about the Gcc-patches
mailing list