From 84152c25a53201930fd73cb13a905d8335367971 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Sat, 9 Jun 2007 10:16:52 +0000 Subject: 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 --- libcpp/files.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libcpp/files.c') diff --git a/libcpp/files.c b/libcpp/files.c index 3751184..b20c38e 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; -- cgit v1.1