summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-08-10 18:59:03 +0200
committerThomas Haller <thaller@redhat.com>2020-09-03 11:39:39 +0200
commitaed61588fd092d3b098978cf7b6f3e5aa7404ca2 (patch)
tree79289267794bae71e9650276a547e5d53866510d
parent265a5879aee9735de378c8440cd5b0b229643cc3 (diff)
downloadNetworkManager-aed61588fd092d3b098978cf7b6f3e5aa7404ca2.tar.gz
shared: add nm_utils_bin2hexstr_a() macro
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h25
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,