History log of /seL4-test-master/projects/musllibc/src/stdio/vfscanf.c
Revision Date Author Comments
# 5f942053 08-Jan-2014 Szabolcs Nagy <nsz@port70.net>

add __isoc99_vfscanf weak alias to vfscanf

this glibc abi compatibility function was missed when the scanf
aliases were added.


# 57174444 11-Dec-2013 Szabolcs Nagy <nsz@port70.net>

include cleanups: remove unused headers and add feature test macros


# cbb8a697 31-Aug-2013 Rich Felker <dalias@aerifal.cx>

avoid crash in scanf when invalid %m format is encountered

invalid format strings invoke undefined behavior, so this is not a
conformance issue, but it's nicer for scanf to report the error safely
instead of calling free on a potentially-uninitialized pointer or a
pointer to memory belonging to the caller.


# 1d92cddb 19-Jul-2013 Rich Felker <dalias@aerifal.cx>

fix uninitialized/stale use of alloc (%m modifier) flag in scanf

for conversion specifiers, alloc is always set when the specifier is
parsed. however, if scanf stops due to mismatching literal text,
either an uninitialized (if no conversions have been performed yet) or
stale (from the previous conversion) of the flag will be used,
possibly causing an invalid pointer to be passed to free when the
function returns.


# ef550786 22-Jun-2013 Rich Felker <dalias@aerifal.cx>

fix scanf %c conversion wrongly storing a terminating null byte

this seems to have been a regression from the refactoring which added
the 'm' modifier.


# 16a1e036 05-Jun-2013 Rich Felker <dalias@aerifal.cx>

implement the 'm' (malloc) modifier for scanf

this commit only covers the byte-based scanf-family functions. the
wide functions still lack support for the 'm' modifier.


# 1ab59de8 04-Jun-2013 Rich Felker <dalias@aerifal.cx>

simplify some logic in scanf and remove redundant invalid-format check


# f18846dd 04-Jun-2013 Rich Felker <dalias@aerifal.cx>

refactor scanf core to use common code path for all string formats

the concept here is that %s and %c are essentially special-cases of
%[, with some minimal additional special-casing.

aside from simplifying the code and reducing the number of complex
code-paths that would need changing to make optimizations later, the
main purpose of this change is to simplify addition of the 'm'
modifier which causes scanf to allocate storage for the string being
read.


# 835f9f95 08-Nov-2012 Rich Felker <dalias@aerifal.cx>

clean up stdio_impl.h

this header evolved to facilitate the extremely lazy practice of
omitting explicit includes of the necessary headers in individual
stdio source files; not only was this sloppy, but it also increased
build time.

now, stdio_impl.h is only including the headers it needs for its own
use; any further headers needed by source files are included directly
where needed.


# 400c5e5c 06-Sep-2012 Rich Felker <dalias@aerifal.cx>

use restrict everywhere it's required by c99 and/or posix 2008

to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.


# 31eaad47 07-Jun-2012 Rich Felker <dalias@aerifal.cx>

fix scanf bug reading literals after width-limited field

the field width limit was not being cleared before reading the
literal, causing spurious failures in scanf in cases like "%2d:"
scanning "00:".


# cb81b694 18-Apr-2012 Rich Felker <dalias@aerifal.cx>

fix really bad breakage in strtol, etc.: failure to accept leading spaces


# 2dd5dc78 17-Apr-2012 Rich Felker <dalias@aerifal.cx>

fix over-read in %ls with non-wide scanf


# e0d9f780 17-Apr-2012 Rich Felker <dalias@aerifal.cx>

fix some bugs in scanf %[ handling detected while writing the wide version


# 03de77f5 17-Apr-2012 Rich Felker <dalias@aerifal.cx>

avoid null pointer dereference on %*p fields in scanf


# 18efeb32 16-Apr-2012 Rich Felker <dalias@aerifal.cx>

new scanf implementation and corresponding integer parser/converter

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.


# e3cd6c5c 27-Mar-2011 Rich Felker <dalias@aerifal.cx>

major stdio overhaul, using readv/writev, plus other changes

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.


# 0b44a031 11-Feb-2011 Rich Felker <dalias@aerifal.cx>

initial check-in, version 0.5.0