From 7105e4afddbf47b494accce40e2a701b8833e6ce Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Thu, 16 Dec 2021 11:19:03 +0000 Subject: printf: allow 0 as a flag and allow multiple flags The '%' character in a format specification may be followed by one or more flags from the list "+- #0". BusyBox printf didn't support the '0' flag or allow multiple flags to be provided. As a result the formats '%0*d' and '%0 d' were considered to be invalid. The lack of support for '0' was pointed out by Andrew Snyder on the musl mailing list: https://www.openwall.com/lists/musl/2021/12/14/2 function old new delta printf_main 860 891 +31 .rodata 99281 99282 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 32/0) Total: 32 bytes Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- coreutils/printf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'coreutils') diff --git a/coreutils/printf.c b/coreutils/printf.c index dd94c8ade..2e672d15f 100644 --- a/coreutils/printf.c +++ b/coreutils/printf.c @@ -313,7 +313,7 @@ static char **print_formatted(char *f, char **argv, int *conv_err) } break; } - if (*f && strchr("-+ #", *f)) { + while (*f && strchr("-+ #0", *f)) { ++f; ++direc_length; } -- cgit v1.2.1