1#include "stdio_impl.h" 2#include <fcntl.h> 3#include <string.h> 4 5FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t len) 6{ 7 memset(f, 0, sizeof *f); 8 9 f->fd = sys_open(filename, O_RDONLY|O_CLOEXEC); 10 if (f->fd < 0) return 0; 11 __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC); 12 13 f->flags = F_NOWR | F_PERM; 14 f->buf = buf + UNGET; 15 f->buf_size = len - UNGET; 16 f->read = __stdio_read; 17 f->seek = __stdio_seek; 18 f->close = __stdio_close; 19 f->lock = -1; 20 21 return f; 22} 23