On 2/23/2024 12:41 PM, Philippe Mathieu-Daudé wrote: > On 23/2/24 15:01, Steven Sistare wrote: >> On 2/23/2024 1:01 AM, Philippe Mathieu-Daudé wrote: >>> On 22/2/24 22:47, Steve Sistare wrote: >>>> Generalize hmp_split_at_comma() to take any delimiter string, rename >>>> as str_split(), and move it to util/strList.c. >>>> >>>> No functional change. >>>> >>>> Signed-off-by: Steve Sistare <steven.sist...@oracle.com> >>>> --- >>>> include/monitor/hmp.h | 1 - >>>> include/qemu/strList.h | 24 ++++++++++++++++++++++++ >>>> monitor/hmp-cmds.c | 19 ------------------- >>>> net/net-hmp-cmds.c | 3 ++- >>>> stats/stats-hmp-cmds.c | 3 ++- >>>> util/meson.build | 1 + >>>> util/strList.c | 24 ++++++++++++++++++++++++ >>>> 7 files changed, 53 insertions(+), 22 deletions(-) >>>> create mode 100644 include/qemu/strList.h >>>> create mode 100644 util/strList.c >>> >>> >>>> +#include "qapi/qapi-builtin-types.h" >>>> + >>>> +/* >>>> + * Split @str into a strList using the delimiter string @delim. >>>> + * The delimiter is not included in the result. >>>> + * Return NULL if @str is NULL or an empty string. >>>> + * A leading, trailing, or consecutive delimiter produces an >>>> + * empty string at that position in the output. >>>> + * All strings are g_strdup'd, and the result can be freed >>>> + * using qapi_free_strList. >>> >>> Note "qapi/qapi-builtin-types.h" defines: >>> >>> G_DEFINE_AUTOPTR_CLEANUP_FUNC(strList, qapi_free_strList) >>> >>> Maybe mention we can also use: >>> >>> g_autoptr(strList) >> >> Thanks Philippe. If we get to V6 for this series, I will mention this, >> and also mention g_autoptr(GStrv) in the header comment for >> strv_from_strlist. > > If there is no need for v6, do you mind sharing here what would be > the resulting comment? Maybe Markus can update it directly... > (assuming he takes your series).
Sure - steve -------------------- diff --git a/include/qemu/strList.h b/include/qemu/strList.h index c1eb1dd..b13bd53 100644 --- a/include/qemu/strList.h +++ b/include/qemu/strList.h @@ -17,13 +17,16 @@ * A leading, trailing, or consecutive delimiter produces an * empty string at that position in the output. * All strings are g_strdup'd, and the result can be freed - * using qapi_free_strList. + * using qapi_free_strList, or by declaring a local variable + * with g_autoptr(strList). */ strList *str_split(const char *str, const char *delim); /* * Produce and return a NULL-terminated array of strings from @list. - * The result is g_malloc'd and all strings are g_strdup'd. + * The result is g_malloc'd and all strings are g_strdup'd. The result + * can be freed using g_strfreev, or by declaring a local variable with + * g_auto(GStrv). */ char **strv_from_strList(const strList *list); --------------------