]>
Commit | Line | Data |
---|---|---|
320054e8 DG |
1 | #include "stdio_impl.h" |
2 | #include <fcntl.h> | |
3 | #include <string.h> | |
4 | ||
5 | FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t len) | |
6 | { | |
7 | memset(f, 0, sizeof *f); | |
8 | ||
e5f14be3 | 9 | #ifdef __wasilibc_unmodified_upstream // WASI has no sys_open |
320054e8 DG |
10 | f->fd = sys_open(filename, O_RDONLY|O_CLOEXEC); |
11 | #else | |
12 | f->fd = open(filename, O_RDONLY|O_CLOEXEC); | |
13 | #endif | |
14 | if (f->fd < 0) return 0; | |
e5f14be3 | 15 | #ifdef __wasilibc_unmodified_upstream // WASI has no syscall |
320054e8 DG |
16 | __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC); |
17 | #else | |
18 | fcntl(f->fd, F_SETFD, FD_CLOEXEC); | |
19 | #endif | |
20 | ||
21 | f->flags = F_NOWR | F_PERM; | |
22 | f->buf = buf + UNGET; | |
23 | f->buf_size = len - UNGET; | |
24 | f->read = __stdio_read; | |
25 | f->seek = __stdio_seek; | |
26 | f->close = __stdio_close; | |
9bb4cc5c | 27 | #if defined(__wasilibc_unmodified_upstream) || defined(_REENTRANT) |
320054e8 | 28 | f->lock = -1; |
9bb4cc5c | 29 | #endif |
320054e8 DG |
30 | |
31 | return f; | |
32 | } |