|
|
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.