From: Vladimir Prus Date: Sat, 9 Jun 2007 10:16:52 +0000 (+0000) Subject: cppfiles.c (open_file): Account for the fact that on windows, opening a directory... X-Git-Tag: releases/gcc-4.3.0~4542 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=84152c25a53201930fd73cb13a905d8335367971;p=thirdparty%2Fgcc.git cppfiles.c (open_file): Account for the fact that on windows, opening a directory gives EACCES. * cppfiles.c (open_file): Account for the fact that on windows, opening a directory gives EACCES. From-SVN: r125590 --- diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 712bc32784b5..205c1dd9db17 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2007-06-09 Vladimir Prus + + * cppfiles.c (open_file): Account for the + fact that on windows, opening a directory gives + EACCES. + 2007-06-05 Joerg Wunsch PR preprocessor/23479 diff --git a/libcpp/files.c b/libcpp/files.c index 3751184d02f0..b20c38e8d875 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -228,6 +228,19 @@ open_file (_cpp_file *file) close (file->fd); file->fd = -1; } +#if defined(_WIN32) && !defined(__CYGWIN__) + else if (errno == EACCES) + { + /* On most UNIX systems, open succeeds on a directory. Above, + we check if we have opened a directory and if so, set errno + to ENOENT. However, on Windows, opening a directory + fails with EACCESS. We want to return ENOENT in that + case too. */ + if (stat (file->path, &file->st) == 0 + && S_ISDIR (file->st.st_mode)) + errno = ENOENT; + } +#endif else if (errno == ENOTDIR) errno = ENOENT;