diff options
author | Thomas Haller <thaller@redhat.com> | 2020-08-10 18:59:03 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-09-03 11:39:39 +0200 |
commit | aed61588fd092d3b098978cf7b6f3e5aa7404ca2 (patch) | |
tree | 79289267794bae71e9650276a547e5d53866510d | |
parent | 265a5879aee9735de378c8440cd5b0b229643cc3 (diff) | |
download | NetworkManager-aed61588fd092d3b098978cf7b6f3e5aa7404ca2.tar.gz |
shared: add nm_utils_bin2hexstr_a() macro
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h index 1ff5897399..aa6169d43b 100644 --- a/shared/nm-glib-aux/nm-shared-utils.h +++ b/shared/nm-glib-aux/nm-shared-utils.h @@ -1974,6 +1974,31 @@ char *nm_utils_bin2hexstr_full (gconstpointer addr, gboolean upper_case, char *out); +#define nm_utils_bin2hexstr_a(addr, length, delimiter, upper_case, str_to_free) \ + ({ \ + gconstpointer _addr = (addr); \ + gsize _length = (length); \ + char _delimiter = (delimiter); \ + char **_str_to_free = (str_to_free); \ + char *_s; \ + gsize _s_len; \ + \ + nm_assert (_str_to_free); \ + \ + _s_len = _length == 0 \ + ? 1u \ + : ( _delimiter == '\0' \ + ? _length * 2u + 1u \ + : _length * 3u); \ + if (_s_len < 100) \ + _s = g_alloca (_s_len); \ + else { \ + _s = g_malloc (_s_len); \ + *_str_to_free = _s; \ + } \ + nm_utils_bin2hexstr_full (_addr, _length, _delimiter, (upper_case), _s); \ + }) + guint8 *nm_utils_hexstr2bin_full (const char *hexstr, gboolean allow_0x_prefix, gboolean delimiter_required, |