diff --git a/cmdline/mingw.c b/cmdline/mingw.c index 41f61172..b0b0f844 100644 --- a/cmdline/mingw.c +++ b/cmdline/mingw.c @@ -810,8 +810,30 @@ int windows_fsync(int fd) } if (!FlushFileBuffers(h)) { - windows_errno(GetLastError()); - return -1; + DWORD error = GetLastError(); + + switch (error) { + case ERROR_INVALID_HANDLE : + /* + * FlushFileBuffers returns this error if the handle + * doesn't support buffering, like the console output. + * + * We had report also for ATA-over-Ethernet reporting this + * error. + */ + return 0; + + case ERROR_ACCESS_DENIED + /* + * FlushFileBuffers returns this error for read-only + * data, that cannot have to be flushed. + */ + return 0; + + default: + windows_errno(error); + return -1; + } } return 0;