diff options
author | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-05-16 21:08:20 +0200 |
---|---|---|
committer | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-05-16 21:08:20 +0200 |
commit | 98ecd5e8c7b6c83b8c794050249b445dfea17334 (patch) | |
tree | bebd47cf502ca7ffcf4f013bf0aa5d6c42339963 /io.c | |
parent | 57fe811dd036e276abd30eed3aac135df7e362ab (diff) | |
parent | 403350c2b25551c749e2310556ba2f63e271042b (diff) | |
download | egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.tar.gz egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.tar.bz2 egawk-98ecd5e8c7b6c83b8c794050249b445dfea17334.zip |
Merge remote-tracking branch 'origin/master' into cmake
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -1625,9 +1625,10 @@ devopen(const char *name, const char *mode) strictopen: if (openfd == INVALID_HANDLE) openfd = open(name, flag, 0666); -#ifdef __EMX__ +#if defined(__EMX__) || defined(__MINGW32__) if (openfd == INVALID_HANDLE && errno == EACCES) { - /* on OS/2 directory access via open() is not permitted */ + /* On OS/2 and Windows directory access via open() is + not permitted. */ struct stat buf; if (stat(name, & buf) == 0 && S_ISDIR(buf.st_mode)) @@ -2883,6 +2884,12 @@ iop_alloc(int fd, const char *name, int errno_val) if (fd != INVALID_HANDLE) fstat(fd, & iop->public.sbuf); +#if defined(__EMX__) || defined(__MINGW32__) + else if (errno_val == EISDIR) { + iop->public.sbuf.st_mode = (_S_IFDIR | _S_IRWXU); + iop->public.fd = FAKE_FD_VALUE; + } +#endif return iop; } |