From e36f6a7e52737aedafed6ba55b0cc224eca7ac52 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 8 Nov 2016 17:39:26 +0100 Subject: [PATCH] libnm: add nm_utils_uuid_generate_buf() util --- libnm-core/nm-core-internal.h | 8 ++++++++ libnm-core/nm-utils.c | 24 +++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h index 8fba357167..1b4c469420 100644 --- a/libnm-core/nm-core-internal.h +++ b/libnm-core/nm-core-internal.h @@ -194,6 +194,14 @@ char *nm_utils_uuid_generate_from_string (const char *s, gssize slen, int uuid_t char *_nm_utils_uuid_generate_from_strings (const char *string1, ...) G_GNUC_NULL_TERMINATED; +char *nm_utils_uuid_generate_buf_ (char *buf); +#define nm_utils_uuid_generate_buf(buf) \ + ({ \ + G_STATIC_ASSERT (sizeof (buf) == G_N_ELEMENTS (buf) && sizeof (buf) >= 37); \ + nm_utils_uuid_generate_buf_ (buf); \ + }) +#define nm_utils_uuid_generate_a() (nm_utils_uuid_generate_buf_ (g_alloca (37))) + void _nm_dbus_errors_init (void); extern gboolean _nm_utils_is_manager_process; diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index cfd97149ca..41b6304c82 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -2146,6 +2146,22 @@ next: /*****************************************************************************/ +/** + * nm_utils_uuid_generate_buf_: + * @buf: input buffer, must contain at least 37 bytes + * + * Returns: generates a new random UUID, writes it to @buf and returns @buf. + **/ +char * +nm_utils_uuid_generate_buf_ (char *buf) +{ + uuid_t uuid; + + uuid_generate_random (uuid); + uuid_unparse_lower (uuid, buf); + return buf; +} + /** * nm_utils_uuid_generate: * @@ -2155,13 +2171,7 @@ next: char * nm_utils_uuid_generate (void) { - uuid_t uuid; - char *buf; - - buf = g_malloc0 (37); - uuid_generate_random (uuid); - uuid_unparse_lower (uuid, &buf[0]); - return buf; + return nm_utils_uuid_generate_buf_ (g_malloc (37)); } /**