1 /*
2 * Public domain
3 *
4 * File IO compatibility shims
5 * Brent Cook <bcook@openbsd.org>
6 */
7
8 #define NO_REDEF_POSIX_FUNCTIONS
9
10 #include <windows.h>
11
12 #include <errno.h>
13 #include <io.h>
14
15 #include "posix_win.h"
16
17 int
posix_open(const char * path,...)18 posix_open(const char *path, ...)
19 {
20 va_list ap;
21 int mode = 0;
22 int flags;
23
24 va_start(ap, path);
25 flags = va_arg(ap, int);
26 if (flags & O_CREAT)
27 mode = va_arg(ap, int);
28 va_end(ap);
29
30 flags |= O_BINARY | O_NOINHERIT;
31
32 return (open(path, flags, mode));
33 }
34
35 int
posix_close(int fd)36 posix_close(int fd)
37 {
38 return (close(fd));
39 }
40
41 ssize_t
posix_read(int fd,void * buf,size_t count)42 posix_read(int fd, void *buf, size_t count)
43 {
44 if (count > INT_MAX) {
45 errno = EINVAL;
46 return (-1);
47 }
48
49 return (read(fd, buf, (unsigned int)count));
50 }
51
52 ssize_t
posix_write(int fd,const void * buf,size_t count)53 posix_write(int fd, const void *buf, size_t count)
54 {
55 if (count > INT_MAX) {
56 errno = EINVAL;
57 return (-1);
58 }
59
60 return (write(fd, buf, (unsigned int)count));
61 }
62