0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2025-01-03 07:31:54 +00:00

Lib: Extend bsnprintf() for byte strings

Add support for %Xb directive to print fixed-length byte strings,
formatted as hexadecimal sequences separated by colon.
This commit is contained in:
Ondrej Zajicek 2023-05-29 05:25:40 +02:00
parent f40e2bc270
commit 32d6855a3f

View File

@ -214,6 +214,24 @@ int bvsnprintf(char *buf, int size, const char *fmt, va_list args)
if (field_width > size)
return -1;
switch (*fmt) {
case 'b': {
const char *digits="0123456789abcdef";
const byte *bs = va_arg(args, const byte *);
len = field_width;
if (3*len > size)
return -1;
for (i = 0; i < len; i++) {
const byte b = *bs++;
*str++ = digits[b >> 4];
*str++ = digits[b & 0xf];
*str++ = ':';
}
str -= !!i;
continue;
}
case 'c':
if (!(flags & LEFT))
while (--field_width > 0)