1 /*
2  * Public domain
3  *
4  * BSD socket emulation code for Winsock2
5  * Brent Cook <bcook@openbsd.org>
6  */
7 
8 #ifndef _COMPAT_POSIX_WIN_H
9 #define _COMPAT_POSIX_WIN_H
10 
11 #ifdef _WIN32
12 
13 #include <windows.h>
14 
15 #include <errno.h>
16 #include <stdarg.h>
17 #include <stdint.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <string.h>
21 
22 #if _MSC_VER >= 1900
23 #include <../ucrt/fcntl.h>
24 #else
25 #include <../include/fcntl.h>
26 #endif
27 
28 #include "types.h"
29 
30 int posix_open(const char *path, ...);
31 
32 int posix_close(int fd);
33 
34 ssize_t posix_read(int fd, void *buf, size_t count);
35 
36 ssize_t posix_write(int fd, const void *buf, size_t count);
37 
38 #ifndef NO_REDEF_POSIX_FUNCTIONS
39 #define open(path, ...) posix_open(path, __VA_ARGS__)
40 #define close(fd) posix_close(fd)
41 #define read(fd, buf, count) posix_read(fd, buf, count)
42 #define write(fd, buf, count) posix_write(fd, buf, count)
43 #endif
44 
45 #endif /* _WIN32 */
46 
47 #endif /* !_COMPAT_POSIX_WIN_H */
48