musl - musl - an implementation of the standard library for Linux-based systems

index : musl
musl - an implementation of the standard library for Linux-based systems
summary refs log tree commit diff
path: root/src/stdio/vfwscanf.c
AgeCommit message (Collapse)AuthorLines
2018年09月16日fix null pointer subtraction and comparison in stdio Rich Felker-1/+1
morally, for null pointers a and b, a-b, a<b, and a>b should all be defined as 0; however, C does not define any of them. the stdio implementation makes heavy use of such pointer comparison and subtraction for buffer logic, and also uses null pos/base/end pointers to indicate that the FILE is not in the corresponding (read or write) mode ready for accesses through the buffer. all of the comparisons are fixed trivially by using != in place of the relational operators, since the opposite relation (e.g. pos>end) is logically impossible. the subtractions have been reviewed to check that they are conditional the stream being in the appropriate reading- or writing-through-buffer mode, with checks added where needed. in fgets and getdelim, the checks added should improve performance for unbuffered streams by avoiding a do-nothing call to memchr, and should be negligible for buffered streams.
2018年09月12日reduce spurious inclusion of libc.h Rich Felker-1/+0
libc.h was intended to be a header for access to global libc state and related interfaces, but ended up included all over the place because it was the way to get the weak_alias macro. most of the inclusions removed here are places where weak_alias was needed. a few were recently introduced for hidden. some go all the way back to when libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented) cancellation points had to include it. remaining spurious users are mostly callers of the LOCK/UNLOCK macros and files that use the LFS64 macro to define the awful *64 aliases. in a few places, new inclusion of libc.h is added because several internal headers no longer implicitly include libc.h. declarations for __lockfile and __unlockfile are moved from libc.h to stdio_impl.h so that the latter does not need libc.h. putting them in libc.h made no sense at all, since the macros in stdio_impl.h are needed to use them correctly anyway.
2017年09月04日handle whitespace before %% in scanf Bartosz Brachaczek-2/+6
this is mandated by C and POSIX standards and is in accordance with glibc behavior.
2017年03月14日fix wide scanf's use of a compound literal past its lifetime Rich Felker-1/+2
2015年06月13日fix idiom for setting stdio stream orientation to wide Rich Felker-1/+1
the old idiom, f->mode |= f->mode+1, was adapted from the idiom for setting byte orientation, f->mode |= f->mode-1, but the adaptation was incorrect. unless the stream was alreasdy set byte-oriented, this code incremented f->mode each time it was executed, which would eventually lead to overflow. it could be fixed by changing it to f->mode |= 1, but upcoming changes will require slightly more work at the time of wide orientation, so it makes sense to just call fwide. as an optimization in the single-character functions, fwide is only called if the stream is not already wide-oriented.
2014年07月02日fix failure of wide printf/scanf functions to set wide orientation Rich Felker-0/+2
in some cases, these functions internally call a byte-based input or output function before calling getwc/putwc, so they cannot rely on the latter to set the orientation.
2013年12月12日include cleanups: remove unused headers and add feature test macros Szabolcs Nagy-3/+0
2013年08月31日fix invalid %m format crash in wide scanf variants Rich Felker-0/+2
the wide variant was missed in the previous commit.
2013年07月20日fix uninitialized/stale use of alloc (%m modifier) flag in scanf Rich Felker-0/+2
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.
2013年06月22日fix scanf %c conversion wrongly storing a terminating null byte Rich Felker-2/+4
this seems to have been a regression from the refactoring which added the 'm' modifier.
2013年06月06日implement 'm' modifier for wide scanf variants Rich Felker-7/+40
2013年06月05日refactor wide-char scanf string handling Rich Felker-55/+32
this brings the wide version of the code into alignment with the byte-based version, in preparation for adding support for the m (malloc) modifier.
2013年04月05日Add ABI compatability aliases. Isaac Dunham-0/+3
GNU used several extensions that were incompatible with C99 and POSIX, so they used alternate names for the standard functions. The result is that we need these to run standards-conformant programs that were linked with glibc.
2012年09月06日use restrict everywhere it's required by c99 and/or posix 2008 Rich Felker-1/+1
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.
2012年04月17日fix wide scanf's handling of input failure on %c, and simplify %[ Rich Felker-5/+6
2012年04月17日fix failure to distinguish input/match failure in wide %[ scanf Rich Felker-1/+3
this also includes a related fix for vswscanf's read function, which was returning a spurious (uninitialized) character for empty strings.
2012年04月17日fix broken %s and %[ with no width specifier in wide scanf Rich Felker-3/+7
2012年04月17日make wide scanf %[ respect width Rich Felker-2/+3
2012年04月17日fix wide scanf to respect field width for strings Rich Felker-4/+7
2012年04月17日introduce new wide scanf code and remove the last remnants of old scanf Rich Felker-13/+284
at this point, strto* and all scanf family functions are using the new unified integer and floating point parser/converter code. the wide scanf is largely a wrapper for ordinary byte-based scanf; since numbers can only contain ascii characters, only strings need to be handled specially.
2011年02月12日initial check-in, version 0.5.0 v0.5.0 Rich Felker-0/+28
generated by cgit v1.2.1 (git 2.18.0) at 2025年09月06日 10:26:56 +0000

AltStyle によって変換されたページ (->オリジナル) /