[libvirt] [PATCH v2 01/13] virsh: Implement vsh-table to iface-list

Simon Kobyda skobyda at redhat.com
Fri Sep 21 14:17:12 UTC 2018


Signed-off-by: Simon Kobyda <skobyda at redhat.com>
---
 tools/virsh-interface.c | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/tools/virsh-interface.c b/tools/virsh-interface.c
index 50518c667b..1eb1a27ac7 100644
--- a/tools/virsh-interface.c
+++ b/tools/virsh-interface.c
@@ -48,6 +48,7 @@
 #include "virutil.h"
 #include "virxml.h"
 #include "virstring.h"
+#include "vsh-table.h"
 
 virInterfacePtr
 virshCommandOptInterfaceBy(vshControl *ctl, const vshCmd *cmd,
@@ -356,6 +357,8 @@ cmdInterfaceList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
     unsigned int flags = VIR_CONNECT_LIST_INTERFACES_ACTIVE;
     virshInterfaceListPtr list = NULL;
     size_t i;
+    bool ret = false;
+    vshTablePtr table = NULL;
 
     if (inactive)
         flags = VIR_CONNECT_LIST_INTERFACES_INACTIVE;
@@ -366,21 +369,29 @@ cmdInterfaceList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
     if (!(list = virshInterfaceListCollect(ctl, flags)))
         return false;
 
-    vshPrintExtra(ctl, " %-20s %-10s %s\n", _("Name"), _("State"),
-                  _("MAC Address"));
-    vshPrintExtra(ctl, "---------------------------------------------------\n");
+    table = vshTableNew(_("Name"), _("State"), _("MAC Address"), NULL);
+    if (!table)
+        goto cleanup;
 
     for (i = 0; i < list->nifaces; i++) {
         virInterfacePtr iface = list->ifaces[i];
 
-        vshPrint(ctl, " %-20s %-10s %s\n",
-                 virInterfaceGetName(iface),
-                 virInterfaceIsActive(iface) ? _("active") : _("inactive"),
-                 virInterfaceGetMACString(iface));
+        if (vshTableRowAppend(table,
+                              virInterfaceGetName(iface),
+                              virInterfaceIsActive(iface) ? _("active")
+                              : _("inactive"),
+                              virInterfaceGetMACString(iface),
+                              NULL) < 0)
+            goto cleanup;
     }
 
+    vshTablePrintToStdout(table, ctl);
+
+    ret = true;
+ cleanup:
+    vshTableFree(table);
     virshInterfaceListFree(list);
-    return true;
+    return ret;
 }
 
 /*
-- 
2.17.1




More information about the libvir-list mailing list