| Age | Commit message (Collapse) | Author |
|
Mostly to make clang-format not format these to peak ugly.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
lib: `printfrr()` care package
|
|
Useful to insert output from another bprintfrr() call.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Analogous to Linux kernel `%pV` (but our mechanism expects 2 specifier
chars and `%pVA` is clearer anyway.)
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
With 0 currently the default value for the width specifier, it's not
possible to discern that from a %*p where 0 was passed as the length
parameter. Use -1 to allow for that.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
... for easier extensibility. Add width, # and - flags while at it.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
This replaces `%n` with a safe, out-of-band option that simply records
the start and end offset of the output produced for each `%...`
specifier.
The old `%n` code is removed.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Allowing printfrr extensions to directly write to the output buffer has
a few advantages:
- there is no arbitrary length limit imposed (previously 64)
- the output doesn't need to be copied another time
- the extension can directly use bprintfrr() to put together pieces
The downside is that the theoretical length (regardless of available
buffer space) must be computed correctly.
Extended unit tests to test these paths a bit more thoroughly.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Make the local buffer offered to printfrr extension tokens
bigger; existing size wasn't quite enough for some of the
more elaborate struct prefix types.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
|
|
We don't use `%n` anywhere, so the only purpose it serves is enabling
exploits.
(I thought about this initially when adding printfrr, but I wasn't sure
we don't use `%n` anywhere, and thought I'll check later, and then just
forgot it...)
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Satisfy checkpatch.pl requirements (check for sizeof without parenthesis)
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
All va_copy() calls must have a va_end() call.
Caught by Coverity
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
|
|
Some of it has snuck by CI
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
|
|
bcopy is being used in the new printf code. Let's actually
include the proper header for it.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
|
|
reallocarray() is walled behind stupid feature macros on various
platforms and doesn't quite gain us much in that particular use case.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Inspired by the Linux kernel, this allows us to do %pI4 and similar
things.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
These are internal to printf(), and symbols starting with __ are
reserved for the compiler/libc.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
... we just don't use wchar_t in FRR, no point in having this enabled.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
[u]int64_t is the only type in the intX_t family that needs
special-casing for printf since the calling convention may differ
between 32-bit and 64-bit systems.
Adding the L specifier allows us to eschew the gnarly-looking PRIu64.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
We're not libc, we can just fall back to snprintf() to avoid all this
low-level float mangling.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
remove various FreeBSD specific bits, as well as the entirety of locale
support.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
... from current SVN HEAD (not that it has been touched in the past 2
years ...)
Signed-off-by: David Lamparter <equinox@diac24.net>
|