Merge branch 'js/emu-write-epipe-on-windows'
The write(2) emulation for Windows learned to set errno to EPIPE when necessary. * js/emu-write-epipe-on-windows: mingw: emulate write(2) that fails with a EPIPE
This commit is contained in:
@ -394,6 +394,23 @@ int mingw_fflush(FILE *stream)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#undef write
|
||||
ssize_t mingw_write(int fd, const void *buf, size_t len)
|
||||
{
|
||||
ssize_t result = write(fd, buf, len);
|
||||
|
||||
if (result < 0 && errno == EINVAL && buf) {
|
||||
/* check if fd is a pipe */
|
||||
HANDLE h = (HANDLE) _get_osfhandle(fd);
|
||||
if (GetFileType(h) == FILE_TYPE_PIPE)
|
||||
errno = EPIPE;
|
||||
else
|
||||
errno = EINVAL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int mingw_access(const char *filename, int mode)
|
||||
{
|
||||
wchar_t wfilename[MAX_PATH];
|
||||
|
Reference in New Issue
Block a user