| #include "stdio_impl.h" | |
| #include <string.h> | |
| size_t __string_read(FILE* f, unsigned char* buf, size_t len) { | |
| char* src = f->cookie; | |
| size_t k = len + 256; | |
| char* end = memchr(src, 0, k); | |
| if (end) | |
| k = end - src; | |
| if (k < len) | |
| len = k; | |
| memcpy(buf, src, len); | |
| f->rpos = (void*)(src + len); | |
| f->rend = (void*)(src + k); | |
| f->cookie = src + k; | |
| return len; | |
| } |