lib: add frrstr_hex to hexdump buffers

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
This commit is contained in:
Quentin Young 2021-08-10 11:42:19 -04:00
parent 6a9ac96f2c
commit 0c0830c599
2 changed files with 39 additions and 3 deletions

View File

@ -18,9 +18,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "zebra.h"
#include <string.h>
#include <ctype.h>
@ -217,3 +215,21 @@ int all_digit(const char *str)
return 0;
return 1;
}
char *frrstr_hex(char *buff, size_t bufsiz, const uint8_t *str, size_t num)
{
if (bufsiz == 0)
return buff;
char tmp[3];
buff[0] = '\0';
for (size_t i = 0; i < num; i++) {
snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)str[i]);
strlcat(buff, tmp, bufsiz);
}
return buff;
}

View File

@ -154,6 +154,26 @@ bool frrstr_endswith(const char *str, const char *suffix);
*/
int all_digit(const char *str);
/*
* Copy the hexadecimal representation of the string to a buffer.
*
* buff
* Buffer to copy result into with size of at least (2 * num) + 1.
*
* bufsiz
* Size of destination buffer.
*
* str
* String to represent as hexadecimal.
*
* num
* Number of characters to copy.
*
* Returns:
* Pointer to buffer containing resulting hexadecimal representation.
*/
char *frrstr_hex(char *buff, size_t bufsiz, const uint8_t *str, size_t num);
#ifdef __cplusplus
}
#endif