On 2/21/2024 8:14 AM, Markus Armbruster wrote: > Steve Sistare <steven.sist...@oracle.com> writes: > >> Signed-off-by: Steve Sistare <steven.sist...@oracle.com> >> Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> >> --- >> include/qemu/strList.h | 6 ++++++ >> util/strList.c | 14 ++++++++++++++ >> 2 files changed, 20 insertions(+) >> >> diff --git a/include/qemu/strList.h b/include/qemu/strList.h >> index 010237f..4b86aa6 100644 >> --- a/include/qemu/strList.h >> +++ b/include/qemu/strList.h >> @@ -21,4 +21,10 @@ >> */ >> strList *strList_from_string(const char *in, const char *delim); >> >> +/* >> + * Produce and return a NULL-terminated array of strings from @args. >> + * The result is g_malloc'd and all strings are g_strdup'd. >> + */ >> +GStrv strv_from_strList(const strList *args); >> + >> #endif >> diff --git a/util/strList.c b/util/strList.c >> index 7991de3..bad4187 100644 >> --- a/util/strList.c >> +++ b/util/strList.c >> @@ -22,3 +22,17 @@ strList *strList_from_string(const char *str, const char >> *delim) >> >> return res; >> } >> + >> +GStrv strv_from_strList(const strList *args) > > Suggest to name the argument @list. > >> +{ >> + const strList *arg; > > Suggest to name this @tail.
ok. >> + int i = 0; >> + GStrv argv = g_new(char *, QAPI_LIST_LENGTH(args) + 1); >> + >> + for (arg = args; arg != NULL; arg = arg->next) { >> + argv[i++] = g_strdup(arg->value); >> + } >> + argv[i] = NULL; >> + >> + return argv; >> +} > > Can we use char ** instread of GStrv? I'd find that clearer. For what > it's worth, GLib documentation of functions like g_strsplit() doesn't > use the GStrv typedef, either. ok. - Steve