extmod/vfs_posix_file: Fix flush handling in msvc builds.
Flushing console output in msvc builds always fails because that
output is not buffered so don't propagate that as an error (in a
simlar way as was done in 1c047742
for macOS).
Signed-off-by: stijn <stijn@ignitron.net>
This commit is contained in:
parent
92717a95c0
commit
cac666f38c
|
@ -153,11 +153,14 @@ STATIC mp_uint_t vfs_posix_file_ioctl(mp_obj_t o_in, mp_uint_t request, uintptr_
|
||||||
switch (request) {
|
switch (request) {
|
||||||
case MP_STREAM_FLUSH: {
|
case MP_STREAM_FLUSH: {
|
||||||
int ret;
|
int ret;
|
||||||
// fsync(stdin/stdout/stderr) may fail with EINVAL (or ENOTSUP on macos),
|
// fsync(stdin/stdout/stderr) may fail with EINVAL (or ENOTSUP on macos or EBADF
|
||||||
// but don't propagate that error out. Because data is not buffered by
|
// on windows), because the OS doesn't buffer these except for instance when they
|
||||||
// us, and stdin/out/err.flush() should just be a no-op.
|
// are redirected from/to file, but don't propagate that error out. Because data
|
||||||
#ifdef __APPLE__
|
// is not buffered by us, and stdin/out/err.flush() should just be a no-op.
|
||||||
|
#if defined(__APPLE__)
|
||||||
#define VFS_POSIX_STREAM_STDIO_ERR_CATCH (err == EINVAL || err == ENOTSUP)
|
#define VFS_POSIX_STREAM_STDIO_ERR_CATCH (err == EINVAL || err == ENOTSUP)
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define VFS_POSIX_STREAM_STDIO_ERR_CATCH (err == EINVAL || err == EBADF)
|
||||||
#else
|
#else
|
||||||
#define VFS_POSIX_STREAM_STDIO_ERR_CATCH (err == EINVAL)
|
#define VFS_POSIX_STREAM_STDIO_ERR_CATCH (err == EINVAL)
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue