]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: add API for copying identity objects
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 30 Apr 2021 15:46:15 +0000 (16:46 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Thu, 13 May 2021 10:07:35 +0000 (11:07 +0100)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/libvirt_private.syms
src/util/viridentity.c
src/util/viridentity.h

index 9c3c473c1c8804e68df4cca33dc5ac55cc23f6b0..443a78e69819457a6e28c489db0b9d40b3115dd8 100644 (file)
@@ -2411,6 +2411,7 @@ virIdentityGetUNIXUserID;
 virIdentityGetUserName;
 virIdentityGetX509DName;
 virIdentityNew;
+virIdentityNewCopy;
 virIdentitySetCurrent;
 virIdentitySetGroupName;
 virIdentitySetParameters;
index e822f0bd74857518a31263f59d75c960fec5e4da..01edabf2d7ffe0ed2a94798fee26224adabe56ba 100644 (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)
 {
     virIdentity *ident = VIR_IDENTITY(object);
index 640a7ba2e41c1e0b6827b76acb2620fdd71238bf..512bca286d8ca63c3e08a27c6903da4102704784 100644 (file)
@@ -33,6 +33,7 @@ int virIdentitySetCurrent(virIdentity *ident);
 virIdentity *virIdentityGetSystem(void);
 
 virIdentity *virIdentityNew(void);
+virIdentity *virIdentityNewCopy(virIdentity *src);
 
 int virIdentityGetUserName(virIdentity *ident,
                            const char **username);