Rich Felker | 18efeb3 | 2012-04-16 16:03:45 -0400 | [diff] [blame] | 1 | #include "stdio_impl.h" |
| 2 | |
| 3 | size_t __string_read(FILE *f, unsigned char *buf, size_t len) |
| 4 | { |
| 5 | char *src = f->cookie; |
Rich Felker | 8b57a81 | 2012-04-17 13:17:01 -0400 | [diff] [blame] | 6 | size_t k = len+256; |
| 7 | char *end = memchr(src, 0, k); |
| 8 | if (end) k = end-src; |
Rich Felker | 18efeb3 | 2012-04-16 16:03:45 -0400 | [diff] [blame] | 9 | if (k < len) len = k; |
| 10 | memcpy(buf, src, len); |
| 11 | f->rpos = (void *)(src+len); |
| 12 | f->rend = (void *)(src+k); |
| 13 | f->cookie = src+k; |
| 14 | return len; |
| 15 | } |