From: Martin Willi Date: Thu, 6 Nov 2014 13:18:22 +0000 (+0100) Subject: windows: Provide a write(2) wrapper that uses send(2) on sockets X-Git-Tag: 5.2.2dr1~34^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a301a9c939a9b6fcd9f0309b730e5fa1319124ea;p=thirdparty%2Fstrongswan.git windows: Provide a write(2) wrapper that uses send(2) on sockets --- diff --git a/src/libstrongswan/utils/windows.c b/src/libstrongswan/utils/windows.c index e511db0265..241ad055a4 100644 --- a/src/libstrongswan/utils/windows.c +++ b/src/libstrongswan/utils/windows.c @@ -659,6 +659,22 @@ ssize_t windows_read(int fd, void *buf, size_t count) return ret; } +/** + * See header + */ +#undef write +ssize_t windows_write(int fd, void *buf, size_t count) +{ + ssize_t ret; + + ret = send(fd, buf, count, 0); + if (ret == -1 && WSAGetLastError() == WSAENOTSOCK) + { + ret = write(fd, buf, count); + } + return ret; +} + /** * See header */ diff --git a/src/libstrongswan/utils/windows.h b/src/libstrongswan/utils/windows.h index ffd95b3fbc..147d3aa2c3 100644 --- a/src/libstrongswan/utils/windows.h +++ b/src/libstrongswan/utils/windows.h @@ -371,6 +371,12 @@ ssize_t windows_sendto(int sockfd, const void *buf, size_t len, int flags, #define read windows_read ssize_t windows_read(int fd, void *buf, size_t count); +/** + * write(2) working on files and sockets + */ +#define write windows_write +ssize_t windows_write(int fd, void *buf, size_t count); + #if _WIN32_WINNT < 0x0600 /** * Define pollfd and flags on our own if not specified