Index: fusl/src/stdio/__fopen_rb_ca.c |
diff --git a/fusl/src/stdio/__fopen_rb_ca.c b/fusl/src/stdio/__fopen_rb_ca.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..183a5d553895537199ca452bc593ea69ea77e146 |
--- /dev/null |
+++ b/fusl/src/stdio/__fopen_rb_ca.c |
@@ -0,0 +1,22 @@ |
+#include "stdio_impl.h" |
+#include <fcntl.h> |
+#include <string.h> |
+ |
+FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t len) |
+{ |
+ memset(f, 0, sizeof *f); |
+ |
+ f->fd = sys_open(filename, O_RDONLY|O_CLOEXEC); |
+ if (f->fd < 0) return 0; |
+ __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC); |
+ |
+ f->flags = F_NOWR | F_PERM; |
+ f->buf = buf + UNGET; |
+ f->buf_size = len - UNGET; |
+ f->read = __stdio_read; |
+ f->seek = __stdio_seek; |
+ f->close = __stdio_close; |
+ f->lock = -1; |
+ |
+ return f; |
+} |