From 45fad3bb20cd9b220d8e1409cefb523c6e227aeb Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 17 Apr 2019 11:19:47 +0200 Subject: [PATCH] shared: add nm_utils_escaped_tokens_escape_gstr_assert() (cherry picked from commit 832adf323eaa958bf5d0b0cb6305448c194be561) --- shared/nm-utils/nm-shared-utils.h | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/shared/nm-utils/nm-shared-utils.h b/shared/nm-utils/nm-shared-utils.h index 4591cc8e9a..6bfc37acbf 100644 --- a/shared/nm-utils/nm-shared-utils.h +++ b/shared/nm-utils/nm-shared-utils.h @@ -421,6 +421,39 @@ const char *nm_utils_escaped_tokens_escape (const char *str, const char *delimiters, char **out_to_free); +static inline GString * +nm_utils_escaped_tokens_escape_gstr_assert (const char *str, + const char *delimiters, + GString *gstring) +{ +#if NM_MORE_ASSERTS > 0 + + /* Just appends @str to @gstring, but also assert that + * no escaping is necessary. + * + * Use nm_utils_escaped_tokens_escape_gstr_assert() instead + * of nm_utils_escaped_tokens_escape_gstr(), if you *know* that + * @str contains no delimiters, no backslashes, and no trailing + * whitespace that requires escaping. */ + + nm_assert (str); + nm_assert (gstring); + nm_assert (delimiters); + + { + gs_free char *str_to_free = NULL; + const char *str0; + + str0 = nm_utils_escaped_tokens_escape (str, delimiters, &str_to_free); + nm_assert (str0 == str); + nm_assert (!str_to_free); + } +#endif + + g_string_append (gstring, str); + return gstring; +} + static inline GString * nm_utils_escaped_tokens_escape_gstr (const char *str, const char *delimiters,