diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-04-10 21:47:37 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-04-10 21:47:37 -0400 |
commit | 2162541f38d3f642f5a643010548d62220d55a4d (patch) | |
tree | 8ea23d95450312e95377b69da9b65baaa5bfdd90 /src/internal/stdio_impl.h | |
parent | 4fb6aa02c88a6b8b718c0ae982d072aa6ab8559f (diff) | |
download | musl-2162541f38d3f642f5a643010548d62220d55a4d.tar.gz musl-2162541f38d3f642f5a643010548d62220d55a4d.tar.bz2 musl-2162541f38d3f642f5a643010548d62220d55a4d.tar.xz musl-2162541f38d3f642f5a643010548d62220d55a4d.zip |
add "scan helper getc" and rework strtod, etc. to use it
the immediate benefit is a significant debloating of the float parsing
code by moving the responsibility for keeping track of the number of
characters read to a different module.
by linking shgetc with the stdio buffer logic, counting logic is
defered to buffer refill time, keeping the calls to shgetc fast and
light.
in the future, shgetc will also be useful for integrating the new
float code with scanf, which needs to not only count the characters
consumed, but also limit the number of characters read based on field
width specifiers.
shgetc may also become a useful tool for simplifying the integer
parsing code.
Diffstat (limited to 'src/internal/stdio_impl.h')
-rw-r--r-- | src/internal/stdio_impl.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/internal/stdio_impl.h b/src/internal/stdio_impl.h index c5f45eb1..5ec296f3 100644 --- a/src/internal/stdio_impl.h +++ b/src/internal/stdio_impl.h @@ -59,6 +59,8 @@ struct __FILE_s { off_t off; int (*flush)(FILE *); void *mustbezero_2; + unsigned char *shend; + off_t shlim, shcnt; }; size_t __stdio_read(FILE *, unsigned char *, size_t); |