[PATCH 15/22] conf: Split out seclabel formating code for disk source

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The code is common for all the various disk types. Split it out to a
common function.
---
 src/conf/domain_conf.c | 62 ++++++++++++++++++++++++--------------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 03663e4..d000f97 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -14351,6 +14351,32 @@ virDomainDiskBlockIoDefFormat(virBufferPtr buf,
     }
 }

+
+/* virDomainDiskSourceDefFormatSeclabel:
+ *
+ * This function automaticaly closes the <source> element and formats any
+ * possible seclabels.
+ */
+static void
+virDomainDiskSourceDefFormatSeclabel(virBufferPtr buf,
+                                     size_t nseclabels,
+                                     virSecurityDeviceLabelDefPtr *seclabels,
+                                     unsigned int flags)
+{
+    size_t n;
+
+    if (nseclabels) {
+        virBufferAddLit(buf, ">\n");
+        virBufferAdjustIndent(buf, 8);
+        for (n = 0; n < nseclabels; n++)
+            virSecurityDeviceLabelDefFormat(buf, seclabels[n], flags);
+        virBufferAdjustIndent(buf, -8);
+        virBufferAddLit(buf, "      </source>\n");
+    } else {
+        virBufferAddLit(buf, "/>\n");
+    }
+}
+
 static int
 virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
                                      int type,
@@ -14377,33 +14403,15 @@ virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
             virBufferEscapeString(buf, " file='%s'", src);
             virBufferEscapeString(buf, " startupPolicy='%s'", startupPolicy);

-            if (nseclabels) {
-                virBufferAddLit(buf, ">\n");
-                virBufferAdjustIndent(buf, 8);
-                for (n = 0; n < nseclabels; n++)
-                    virSecurityDeviceLabelDefFormat(buf, seclabels[n], flags);
-                virBufferAdjustIndent(buf, -8);
-                virBufferAddLit(buf, "      </source>\n");
-            } else {
-                virBufferAddLit(buf, "/>\n");
-            }
-            break;
+            virDomainDiskSourceDefFormatSeclabel(buf, nseclabels, seclabels, flags);
+           break;

         case VIR_DOMAIN_DISK_TYPE_BLOCK:
             virBufferAddLit(buf, "      <source");
             virBufferEscapeString(buf, " dev='%s'", src);
             virBufferEscapeString(buf, " startupPolicy='%s'", startupPolicy);

-            if (nseclabels) {
-                virBufferAddLit(buf, ">\n");
-                virBufferAdjustIndent(buf, 8);
-                for (n = 0; n < nseclabels; n++)
-                    virSecurityDeviceLabelDefFormat(buf, seclabels[n], flags);
-                virBufferAdjustIndent(buf, -8);
-                virBufferAddLit(buf, "      </source>\n");
-            } else {
-                virBufferAddLit(buf, "/>\n");
-            }
+            virDomainDiskSourceDefFormatSeclabel(buf, nseclabels, seclabels, flags);
             break;

         case VIR_DOMAIN_DISK_TYPE_DIR:
@@ -14451,17 +14459,7 @@ virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
             }
             virBufferEscapeString(buf, " startupPolicy='%s'", startupPolicy);

-            if (nseclabels) {
-                virBufferAddLit(buf, ">\n");
-                virBufferAdjustIndent(buf, 8);
-                for (n = 0; n < nseclabels; n++)
-                    virSecurityDeviceLabelDefFormat(buf, seclabels[n],
-                                                    flags);
-                virBufferAdjustIndent(buf, -8);
-                virBufferAddLit(buf, "      </source>\n");
-            } else {
-                virBufferAddLit(buf, "/>\n");
-            }
+            virDomainDiskSourceDefFormatSeclabel(buf, nseclabels, seclabels, flags);
             break;

         default:
-- 
1.8.4.3

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]