Henrik Brix Andersen writes: > Removing the fallback definitions broke compilation on at least one > platform, namely GNU/Linux which doesn't define _O_BINARY and/or > _O_TEMPORARY. Most likely other unix-like platforms where affected as > well. Since Unix systems don't distinguish between "binary" and "text" modes for file I/O, there is no O_BINARY (or _O_BINARY) on them. As for O_TEMPORARY that isn't needed either, as the traditional, elegant, Unix method is to unlink the temporary file while still keeping it open. (And even if the functionality of those flags was needed on Unix, the names wouldn't have the leading underscore. It is a bit strange by Microsoft (well, what isn't...) to hide all the Unixish stuff they provide in their C library with a leading underscore, purportedly in order not to pollute the ANSI C namespace. As I see it, if you include non-ANSI headers like <io.h> (or <unistd.h> on Unix) in your code, you accept not to have a clean ANSI C namespace any longer. And, most traditional Windows programs include <windows.h> anyway, which pollutes the namespace like a 300 kg gorilla, with apparently no restriction at all on on what kind of identifiers it introduces.) --tml