diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2023-08-28 15:32:23 +0000 |
|---|---|---|
| committer | David Lamparter <equinox@opensourcerouting.org> | 2023-09-03 23:32:55 +0200 |
| commit | 3ca2253b13a871c97d72a014a261b41d7f75a660 (patch) | |
| tree | 811de60f6fa3309d2f8f8a1cdfd53a7dd7f9655a /lib/printf/vfprintf.c | |
| parent | 53df20fa688c61772632dbd71118a2c46604eb53 (diff) | |
lib/printf: Implement N2630.
This adds formatted input/output of binary integer numbers to the
printf(), scanf(), and strtol() families, including their wide-character
counterparts.
Reviewed by: imp, emaste
Differential Revision: https://reviews.freebsd.org/D41511
FRR changes only include printf(), scanf/strtol are not locally
implemented in FRR.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from FreeBSD commit d9dc1603d6e48cca84cad3ebe859129131b8387c)
Diffstat (limited to 'lib/printf/vfprintf.c')
| -rw-r--r-- | lib/printf/vfprintf.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/printf/vfprintf.c b/lib/printf/vfprintf.c index 1290d08648..78f8be05cb 100644 --- a/lib/printf/vfprintf.c +++ b/lib/printf/vfprintf.c @@ -419,6 +419,19 @@ reswitch: switch (ch) { case 'z': flags |= SIZET; goto rflag; + case 'B': + case 'b': + if (flags & INTMAX_SIZE) + ujval = UJARG(); + else + ulval = UARG(); + base = 2; + /* leading 0b/B only if non-zero */ + if (flags & ALT && + (flags & INTMAX_SIZE ? ujval != 0 : ulval != 0)) + ox[1] = ch; + goto nosign; + break; case 'C': flags |= LONGINT; /*FALLTHROUGH*/ |
