utils: introduce osmo_talloc_replace_string_fmt()

Change-Id: I6b84fa0525555a98c531fc558e5dc1298fec00c1
This commit is contained in:
Vadim Yanitskiy 2021-06-07 16:30:28 +02:00
parent 69cc4b613b
commit c549719088
2 changed files with 23 additions and 0 deletions

View File

@ -117,6 +117,8 @@ static inline void osmo_talloc_replace_string(void *ctx, char **dst, const char
*dst = talloc_strdup(ctx, newstr);
}
void osmo_talloc_replace_string_fmt(void *ctx, char **dst, const char *fmt, ...);
/*! Append to a string and re-/allocate if necessary.
* \param[in] ctx Talloc context to use for initial allocation.
* \param[in,out] dest char* to re-/allocate and append to.

View File

@ -1493,4 +1493,25 @@ int osmo_str_to_int(int *result, const char *str, int base, int min_val, int max
return rc;
}
/*! Replace a string using talloc and release its prior content (if any).
* This is a format string capable equivalent of osmo_talloc_replace_string().
* \param[in] ctx Talloc context to use for allocation.
* \param[out] dst Pointer to string, will be updated with ptr to new string.
* \param[in] fmt Format string that will be copied to newly allocated string. */
void osmo_talloc_replace_string_fmt(void *ctx, char **dst, const char *fmt, ...)
{
char *name = NULL;
if (fmt != NULL) {
va_list ap;
va_start(ap, fmt);
name = talloc_vasprintf(ctx, fmt, ap);
va_end(ap);
}
talloc_free(*dst);
*dst = name;
}
/*! @} */