summaryrefslogtreecommitdiff
path: root/src/stdio/vfscanf.c
AgeCommit message (Collapse)AuthorFilesLines
2012-06-07fix scanf bug reading literals after width-limited fieldRich Felker1-0/+1
the field width limit was not being cleared before reading the literal, causing spurious failures in scanf in cases like "%2d:" scanning "00:".
2012-04-19fix really bad breakage in strtol, etc.: failure to accept leading spacesRich Felker1-1/+1
2012-04-17fix over-read in %ls with non-wide scanfRich Felker1-0/+1
2012-04-17fix some bugs in scanf %[ handling detected while writing the wide versionRich Felker1-4/+4
2012-04-17avoid null pointer dereference on %*p fields in scanfRich Felker1-1/+1
2012-04-16new scanf implementation and corresponding integer parser/converterRich Felker1-16/+322
advantages over the old code: - correct results for floating point (old code was bogus) - wide/regular scanf separated so scanf does not pull in wide code - well-defined behavior on integers that overflow dest type - support for %[a-b] ranges with %[ (impl-defined by widely used) - no intermediate conversion of fmt string to wide string - cleaner, easier to share code with strto* functions - better standards conformance for corner cases the old code remains in the source tree, as the wide versions of the scanf-family functions are still using it. it will be removed when no longer needed.
2011-03-28major stdio overhaul, using readv/writev, plus other changesRich Felker1-10/+3
the biggest change in this commit is that stdio now uses readv to fill the caller's buffer and the FILE buffer with a single syscall, and likewise writev to flush the FILE buffer and write out the caller's buffer in a single syscall. making this change required fundamental architectural changes to stdio, so i also made a number of other improvements in the process: - the implementation no longer assumes that further io will fail following errors, and no longer blocks io when the error flag is set (though the latter could easily be changed back if desired) - unbuffered mode is no longer implemented as a one-byte buffer. as a consequence, scanf unreading has to use ungetc, to the unget buffer has been enlarged to hold at least 2 wide characters. - the FILE structure has been rearranged to maintain the locations of the fields that might be used in glibc getc/putc type macros, while shrinking the structure to save some space. - error cases for fflush, fseek, etc. should be more correct. - library-internal macros are used for getc_unlocked and putc_unlocked now, eliminating some ugly code duplication. __uflow and __overflow are no longer used anywhere but these macros. switch to read or write mode is also separated so the code can be better shared, e.g. with ungetc. - lots of other small things.
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker1-0/+43