diff options
| author | Joseph Myers <joseph@codesourcery.com> | 2023-06-19 18:52:12 +0000 |
|---|---|---|
| committer | Joseph Myers <joseph@codesourcery.com> | 2023-06-19 18:52:12 +0000 |
| commit | 5f83b2674e42cd74257731b281f66d0442bf045f (patch) | |
| tree | cb4d3f19d481d718c4800218f20afc93441199e3 /stdio-common/printf-parse.h | |
| parent | 8022fc7d5119a22e9e0ac72798f649385b0e167a (diff) | |
| download | glibc-5f83b2674e42cd74257731b281f66d0442bf045f.tar.xz glibc-5f83b2674e42cd74257731b281f66d0442bf045f.zip | |
C2x printf %wN, %wfN support (bug 24466)
ISO C2x defines printf length modifiers wN (for intN_t / int_leastN_t
/ uintN_t / uint_leastN_t) and wfN (for int_fastN_t / uint_fastN_t).
Add support for those length modifiers (such a feature was previously
requested in bug 24466). scanf support is to be added separately.
GCC 13 has format checking support for these modifiers.
When used with the support for registering format specifiers, these
modifiers are translated to existing flags in struct printf_info,
rather than trying to add some way of distinguishing them without
breaking the printf_info ABI. C2x requires an error to be returned
for unsupported values of N; this is implemented for printf-family
functions, but the parse_printf_format interface doesn't support error
returns, so such an error gets discarded by that function.
Tested for x86_64 and x86.
Diffstat (limited to 'stdio-common/printf-parse.h')
| -rw-r--r-- | stdio-common/printf-parse.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h index b25181496c..57673a331d 100644 --- a/stdio-common/printf-parse.h +++ b/stdio-common/printf-parse.h @@ -93,14 +93,17 @@ __find_specwc (const unsigned int *format) with the parsed details. POSN is the number of arguments already consumed. At most MAXTYPES - POSN types are filled in TYPES. Return the number of args consumed by this spec; *MAX_REF_ARG is updated so it - remains the highest argument index used. */ + remains the highest argument index used. *FAILED is set to indicate + whether parsing failed and printf should return with an error status. */ extern size_t __parse_one_specmb (const unsigned char *format, size_t posn, struct printf_spec *spec, - size_t *max_ref_arg) attribute_hidden; + size_t *max_ref_arg, + bool *failed) attribute_hidden; extern size_t __parse_one_specwc (const unsigned int *format, size_t posn, struct printf_spec *spec, - size_t *max_ref_arg) attribute_hidden; + size_t *max_ref_arg, + bool *failed) attribute_hidden; |
