aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/scanner.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2013-01-21 19:34:49 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2013-01-21 19:34:49 +0000
commitbfc1665471645a0c087ebfcf2aadaa9f93fb8be6 (patch)
treea497b79fd25f505a51f14cd7f475f9a76e186e43 /gcc/fortran/scanner.c
parent62e896818a07297d3469cdd185402c52768c01c2 (diff)
downloadgcc-bfc1665471645a0c087ebfcf2aadaa9f93fb8be6.zip
gcc-bfc1665471645a0c087ebfcf2aadaa9f93fb8be6.tar.gz
gcc-bfc1665471645a0c087ebfcf2aadaa9f93fb8be6.tar.bz2
re PR fortran/55919 (Bogus warning with -J directory/)
2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/55919 * scanner.c (add_path_to_list): Copy path to temporary and strip trailing directory separators before calling stat(). 2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/55919 * gfortran.dg/include_8.f90: New test. From-SVN: r195348
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r--gcc/fortran/scanner.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 008e91f..0467f8a 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -310,14 +310,26 @@ add_path_to_list (gfc_directorylist **list, const char *path,
{
gfc_directorylist *dir;
const char *p;
+ char *q;
struct stat st;
+ size_t len;
+ int i;
p = path;
while (*p == ' ' || *p == '\t') /* someone might do "-I include" */
if (*p++ == '\0')
return;
- if (stat (p, &st))
+ /* Strip trailing directory separators from the path, as this
+ will confuse Windows systems. */
+ len = strlen (p);
+ q = (char *) alloca (len + 1);
+ memcpy (q, p, len + 1);
+ i = len - 1;
+ while (i >=0 && IS_DIR_SEPARATOR(q[i]))
+ q[i--] = '\0';
+
+ if (stat (q, &st))
{
if (errno != ENOENT)
gfc_warning_now ("Include directory \"%s\": %s", path,