| OLD | NEW |
| 1 #include "stdio_impl.h" | 1 #include "stdio_impl.h" |
| 2 #include <sys/uio.h> | 2 #include <sys/uio.h> |
| 3 | 3 |
| 4 size_t __stdio_read(FILE *f, unsigned char *buf, size_t len) | 4 size_t __stdio_read(FILE* f, unsigned char* buf, size_t len) { |
| 5 { | 5 struct iovec iov[2] = {{.iov_base = buf, .iov_len = len - !!f->buf_size}, |
| 6 » struct iovec iov[2] = { | 6 {.iov_base = f->buf, .iov_len = f->buf_size}}; |
| 7 » » { .iov_base = buf, .iov_len = len - !!f->buf_size }, | 7 ssize_t cnt; |
| 8 » » { .iov_base = f->buf, .iov_len = f->buf_size } | |
| 9 » }; | |
| 10 » ssize_t cnt; | |
| 11 | 8 |
| 12 » cnt = syscall(SYS_readv, f->fd, iov, 2); | 9 cnt = syscall(SYS_readv, f->fd, iov, 2); |
| 13 » if (cnt <= 0) { | 10 if (cnt <= 0) { |
| 14 » » f->flags |= F_EOF ^ ((F_ERR^F_EOF) & cnt); | 11 f->flags |= F_EOF ^ ((F_ERR ^ F_EOF) & cnt); |
| 15 » » return cnt; | 12 return cnt; |
| 16 » } | 13 } |
| 17 » if (cnt <= iov[0].iov_len) return cnt; | 14 if (cnt <= iov[0].iov_len) |
| 18 » cnt -= iov[0].iov_len; | 15 return cnt; |
| 19 » f->rpos = f->buf; | 16 cnt -= iov[0].iov_len; |
| 20 » f->rend = f->buf + cnt; | 17 f->rpos = f->buf; |
| 21 » if (f->buf_size) buf[len-1] = *f->rpos++; | 18 f->rend = f->buf + cnt; |
| 22 » return len; | 19 if (f->buf_size) |
| 20 buf[len - 1] = *f->rpos++; |
| 21 return len; |
| 23 } | 22 } |
| OLD | NEW |