/*
 * Public domain
 *
 * BSD socket emulation code for Winsock2
 * Brent Cook <bcook@openbsd.org>
 */
module libressl_d.compat.win32netcompat;


//#include <ws2tcpip.h>
private static import libressl_d.compat.sys.types;
public import core.stdc.errno;
public import core.sys.windows.winsock2;
public import libressl_d.compat.unistd;

version (Windows):

extern (C):
nothrow @nogc:

enum SHUT_RDWR = core.sys.windows.winsock2.SD_BOTH;
enum SHUT_RD = core.sys.windows.winsock2.SD_RECEIVE;
enum SHUT_WR = core.sys.windows.winsock2.SD_SEND;

int posix_connect(int sockfd, const (sockaddr)* addr, socklen_t addrlen);

int posix_open(const (char)* path, ...);

int posix_close(int fd);

libressl_d.compat.sys.types.ssize_t posix_read(int fd, void* buf, size_t count);

libressl_d.compat.sys.types.ssize_t posix_write(int fd, const (void)* buf, size_t count);

int posix_getsockopt(int sockfd, int level, int optname, void* optval, socklen_t* optlen);

int posix_setsockopt(int sockfd, int level, int optname, const (void)* optval, socklen_t optlen);

version (NO_REDEF_POSIX_FUNCTIONS) {
} else {
	alias connect = .posix_connect;
	alias open = .posix_open;
	alias close = .posix_close;
	alias read = .posix_read;
	alias write = .posix_write;
	alias getsockopt = .posix_getsockopt;
	alias setsockopt = .posix_setsockopt;
}