Skip to content

Commit db5aa8b

Browse files
Philip Oakleydscho
Philip Oakley
authored andcommitted
msvc: define O_ACCMODE
This constant is not defined in MSVC's headers. In UCRT's fcntl.h, _O_RDONLY, _O_WRONLY and _O_RDWR are defined as 0, 1 and 2, respectively. Yes, that means that UCRT breaks with the tradition that O_RDWR == O_RDONLY | O_WRONLY. It is a perfectly legal way to define those constants, though, therefore we need to take care of defining O_ACCMODE accordingly. This is particularly important in order to keep our "open() can set errno to EISDIR" emulation working: it tests that (flags & O_ACCMODE) is not identical to O_RDONLY before going on to test specifically whether the file for which open() reported EACCES is, in fact, a directory. Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent 4b94d4c commit db5aa8b

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

compat/msvc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ static __inline int strcasecmp (const char *s1, const char *s2)
2525
#undef ERROR
2626

2727
typedef int sigset_t;
28+
/* open for reading, writing, or both (not in fcntl.h) */
29+
#define O_ACCMODE (_O_RDONLY | _O_WRONLY | _O_RDWR)
2830

2931
#include "compat/mingw.h"
3032

0 commit comments

Comments
 (0)