github.com/afumu/libc@v0.0.6/musl/src/stdio/vsscanf.c (about) 1 #include "stdio_impl.h" 2 #include <string.h> 3 4 static size_t string_read(FILE *f, unsigned char *buf, size_t len) 5 { 6 char *src = f->cookie; 7 size_t k = len+256; 8 char *end = memchr(src, 0, k); 9 if (end) k = end-src; 10 if (k < len) len = k; 11 memcpy(buf, src, len); 12 f->rpos = (void *)(src+len); 13 f->rend = (void *)(src+k); 14 f->cookie = src+k; 15 return len; 16 } 17 18 int vsscanf(const char *restrict s, const char *restrict fmt, va_list ap) 19 { 20 FILE f = { 21 .buf = (void *)s, .cookie = (void *)s, 22 .read = string_read, .lock = -1 23 }; 24 return vfscanf(&f, fmt, ap); 25 } 26 27 weak_alias(vsscanf,__isoc99_vsscanf);