util: add API for copying identity objects

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2021-04-30 16:46:15 +01:00
parent b3fe905f53
commit 695d713df2
3 changed files with 23 additions and 0 deletions

View File

@ -2411,6 +2411,7 @@ virIdentityGetUNIXUserID;
virIdentityGetUserName; virIdentityGetUserName;
virIdentityGetX509DName; virIdentityGetX509DName;
virIdentityNew; virIdentityNew;
virIdentityNewCopy;
virIdentitySetCurrent; virIdentitySetCurrent;
virIdentitySetGroupName; virIdentitySetGroupName;
virIdentitySetParameters; virIdentitySetParameters;

View File

@ -333,6 +333,27 @@ virIdentity *virIdentityNew(void)
} }
/**
* virIdentityNewCopy:
*
* Creates a new identity object that is a deep copy of an
* existing identity.
*
* Returns: a copy of the source identity
*/
virIdentity *virIdentityNewCopy(virIdentity *src)
{
g_autoptr(virIdentity) ident = virIdentityNew();
if (virTypedParamsCopy(&ident->params, src->params, src->nparams) < 0)
return NULL;
ident->nparams = src->nparams;
ident->maxparams = src->nparams;
return g_steal_pointer(&ident);
}
static void virIdentityFinalize(GObject *object) static void virIdentityFinalize(GObject *object)
{ {
virIdentity *ident = VIR_IDENTITY(object); virIdentity *ident = VIR_IDENTITY(object);

View File

@ -33,6 +33,7 @@ int virIdentitySetCurrent(virIdentity *ident);
virIdentity *virIdentityGetSystem(void); virIdentity *virIdentityGetSystem(void);
virIdentity *virIdentityNew(void); virIdentity *virIdentityNew(void);
virIdentity *virIdentityNewCopy(virIdentity *src);
int virIdentityGetUserName(virIdentity *ident, int virIdentityGetUserName(virIdentity *ident,
const char **username); const char **username);