diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0f42c2de0b..f1999d0e99 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3556,6 +3556,7 @@ virTypedParamListAddString; virTypedParamListAddUInt; virTypedParamListAddULLong; virTypedParamListConcat; +virTypedParamListFetch; virTypedParamListFree; virTypedParamListFromParams; virTypedParamListNew; diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c index 6ac9a4e2f3..05dea25165 100644 --- a/src/util/virtypedparam.c +++ b/src/util/virtypedparam.c @@ -746,6 +746,32 @@ virTypedParamListFree(virTypedParamList *list) } +/** + * virTypedParamListFetch: + * + * @list: virTypedParamList object + * @par: if not NULL filled with the typed parameters stored in @list + * @npar: if not NULL filled with the number of typed parameters stored in @list + * + * Checks that @list has no errors stored and optionally fills @par and @npar + * with a valid list of typed parameters. The typed parameters still belong to + * @list and will be freed together. + */ +int +virTypedParamListFetch(virTypedParamList *list, + virTypedParameterPtr *par, + size_t *npar) +{ + if (par) + *par = list->par; + + if (npar) + *npar = list->npar; + + return 0; +} + + size_t virTypedParamListStealParams(virTypedParamList *list, virTypedParameterPtr *params) diff --git a/src/util/virtypedparam.h b/src/util/virtypedparam.h index 45422c2673..628c951432 100644 --- a/src/util/virtypedparam.h +++ b/src/util/virtypedparam.h @@ -152,6 +152,12 @@ size_t virTypedParamListStealParams(virTypedParamList *list, virTypedParameterPtr *params); +int +virTypedParamListFetch(virTypedParamList *list, + virTypedParameterPtr *par, + size_t *npar) + G_GNUC_WARN_UNUSED_RESULT; + virTypedParamList * virTypedParamListFromParams(virTypedParameterPtr *params, size_t nparams);