From 27c08ea187462e56ffb514c8c997df419f004ce5 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 17 Dec 2015 18:01:42 +0100 Subject: [PATCH] fixup! mingw: emulate write(2) that fails with a SIGPIPE --- compat/mingw.c | 17 +++++++++++++++++ compat/mingw.h | 17 +---------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/compat/mingw.c b/compat/mingw.c index e923f3f406..612300af3d 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -580,6 +580,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_LONG_PATH]; diff --git a/compat/mingw.h b/compat/mingw.h index 820fe68de9..7b57f626b6 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -225,22 +225,7 @@ FILE *mingw_freopen (const char *filename, const char *otype, FILE *stream); int mingw_fflush(FILE *stream); #define fflush mingw_fflush -static inline 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; -} - +ssize_t mingw_write(int fd, const void *buf, size_t len); #define write mingw_write int mingw_access(const char *filename, int mode);