|
Message-Id: <b3bd20b161442150ed0e72f98858c5e2cb83625a.1685129854.git.Jens.Gustedt@inria.fr> Date: Fri, 26 May 2023 21:41:04 +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 | 9 ++++++++- src/stdio/vfwprintf.c | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c index 1a516663..9f02a594 100644 --- a/src/stdio/vfprintf.c +++ b/src/stdio/vfprintf.c @@ -529,9 +529,16 @@ 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) { + // See if "fast" is requested. Difference is only + // relevant for a fast type of minimum width 16. + int fast16 = HPRE; + if (*s == 'f') { + fast16 = BARE; + ++s; + } switch (getint(&s)) { case 8: st = HHPRE; goto wpre; - case 16: st = HPRE; goto wpre; + case 16: st = fast16; goto wpre; case 32: st = BARE; goto wpre; #if UINTPTR_MAX >= UINT64_MAX case 64: st = LPRE; goto wpre; diff --git a/src/stdio/vfwprintf.c b/src/stdio/vfwprintf.c index 4320761a..4e9ce63a 100644 --- a/src/stdio/vfwprintf.c +++ b/src/stdio/vfwprintf.c @@ -244,9 +244,16 @@ 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) { + // See if "fast" is requested. Difference is only + // relevant for a fast type of minimum width 16. + int fast16 = HPRE; + if (*s == 'f') { + fast16 = BARE; + ++s; + } switch (getint(&s)) { case 8: st = HHPRE; goto wpre; - case 16: st = HPRE; goto wpre; + case 16: st = fast16; goto wpre; case 32: st = BARE; goto wpre; #if UINTPTR_MAX >= UINT64_MAX case 64: st = LPRE; goto wpre; -- 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.