|
Message-Id: <56551ec27151cd29ff871c0db3a89e21c2b5135f.1685535897.git.Jens.Gustedt@inria.fr> Date: Wed, 31 May 2023 16:04:53 +0200 From: Jens Gustedt <Jens.Gustedt@...ia.fr> To: musl@...ts.openwall.com Subject: [C23 printf 3/3] C23: implement the wfN length modifiers for printf Musl only has a difference between fixed-width and fastest-width integer types for N == 16. And even here all architectures have made the same choice, namely mapping to 32 bit types. --- src/stdio/vfprintf.c | 3 +++ src/stdio/vfwprintf.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c index 265fb7ad..a531a513 100644 --- a/src/stdio/vfprintf.c +++ b/src/stdio/vfprintf.c @@ -534,8 +534,11 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, ps=st; st=states[st]S(*s++); if (st == WPRE) { + _Bool fast = (*s == 'f'); + if (fast) ++s; if (*s == '0') goto inval; width = getint(&s); + if (fast && width == 16) width = 32; } } while (st-1<STOP); if (!st) goto inval; diff --git a/src/stdio/vfwprintf.c b/src/stdio/vfwprintf.c index c3e81d2a..3689c2d5 100644 --- a/src/stdio/vfwprintf.c +++ b/src/stdio/vfwprintf.c @@ -249,8 +249,11 @@ static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_ ps=st; st=states[st]S(*s++); if (st == WPRE) { + _Bool fast = (*s == L'f'); + if (fast) ++s; if (*s == L'0') goto inval; width = getint(&s); + if (fast && width == 16) width = 32; } } while (st-1<STOP); if (!st) goto inval; -- 2.34.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.