|
|
Message-Id: <38fa333702f25af17ded23815881735cf540b7ce.1685429467.git.Jens.Gustedt@inria.fr>
Date: Tue, 30 May 2023 08:55:28 +0200
From: Jens Gustedt <Jens.Gustedt@...ia.fr>
To: musl@...ts.openwall.com,
jens.gustedt@...teo.eu
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.