[PATCH] examples: Improved shell output of showDomains

Daniel Hora via Devel posted 1 patch 2 days, 1 hour ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/78ce74fa97cb7420d3dca5d36e646af17f4b8132.1779974906.git.dhora@redhat.com
examples/c/misc/hellolibvirt.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
[PATCH] examples: Improved shell output of showDomains
Posted by Daniel Hora via Devel 2 days, 1 hour ago
From: Daniel Hora <dhora@redhat.com>

Improved formatting of the shell output of the
function showDomains based on length of the longest domain.

Signed-off-by: Daniel Hora <dhora@redhat.com>
---
 examples/c/misc/hellolibvirt.c | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/examples/c/misc/hellolibvirt.c b/examples/c/misc/hellolibvirt.c
index 39cefe934c..77098d7be3 100644
--- a/examples/c/misc/hellolibvirt.c
+++ b/examples/c/misc/hellolibvirt.c
@@ -4,6 +4,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <libvirt/libvirt.h>
 #include <libvirt/virterror.h>
 
@@ -44,11 +45,34 @@ showHypervisorInfo(virConnectPtr conn)
     return 0;
 }
 
+static int
+longestDomain(virDomainPtr *nameList, int numNames)
+{
+    int longestDomainLength;
+    size_t i;
+
+    longestDomainLength = 0;
+
+    for (i = 0; i < numNames; i++) {
+        const char *currentDomain = virDomainGetName(nameList[i]);
+
+        if (currentDomain != NULL) {
+            int currentDomainLength = strlen(currentDomain);
+
+            if (currentDomainLength > longestDomainLength) {
+                longestDomainLength = currentDomainLength;
+            }
+        }
+    }
+
+    return longestDomainLength;
+
+}
 
 static int
 showDomains(virConnectPtr conn)
 {
-    int numNames, numInactiveDomains, numActiveDomains;
+    int numNames, numInactiveDomains, numActiveDomains, longestDomainLength;
     ssize_t i;
     int flags = VIR_CONNECT_LIST_DOMAINS_ACTIVE |
                 VIR_CONNECT_LIST_DOMAINS_INACTIVE;
@@ -88,9 +112,12 @@ showDomains(virConnectPtr conn)
         return 1;
     }
 
+    longestDomainLength = longestDomain(nameList, numNames);
+
     for (i = 0; i < numNames; i++) {
         int active = virDomainIsActive(nameList[i]);
-        printf("  %8s (%s)\n",
+        printf("  %-*s (%s)\n",
+                longestDomainLength,
                virDomainGetName(nameList[i]),
                (active == 1 ? "active" : "non-active"));
         /* must free the returned named per the API documentation */
-- 
2.54.0
Re: [PATCH] examples: Improved shell output of showDomains
Posted by Michal Prívozník via Devel 1 day, 4 hours ago
On 5/28/26 15:28, Daniel Hora via Devel wrote:
> From: Daniel Hora <dhora@redhat.com>
> 
> Improved formatting of the shell output of the
> function showDomains based on length of the longest domain.
> 
> Signed-off-by: Daniel Hora <dhora@redhat.com>
> ---
>  examples/c/misc/hellolibvirt.c | 31 +++++++++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)
> 
> diff --git a/examples/c/misc/hellolibvirt.c b/examples/c/misc/hellolibvirt.c
> index 39cefe934c..77098d7be3 100644
> --- a/examples/c/misc/hellolibvirt.c
> +++ b/examples/c/misc/hellolibvirt.c
> @@ -4,6 +4,7 @@
>  
>  #include <stdio.h>
>  #include <stdlib.h>
> +#include <string.h>
>  #include <libvirt/libvirt.h>
>  #include <libvirt/virterror.h>
>  
> @@ -44,11 +45,34 @@ showHypervisorInfo(virConnectPtr conn)
>      return 0;
>  }
>  
> +static int
> +longestDomain(virDomainPtr *nameList, int numNames)
> +{
> +    int longestDomainLength;
> +    size_t i;
> +
> +    longestDomainLength = 0;

This can be done when declaring the variable.

> +
> +    for (i = 0; i < numNames; i++) {
> +        const char *currentDomain = virDomainGetName(nameList[i]);
> +
> +        if (currentDomain != NULL) {
> +            int currentDomainLength = strlen(currentDomain);
> +
> +            if (currentDomainLength > longestDomainLength) {
> +                longestDomainLength = currentDomainLength;
> +            }
> +        }
> +    }
> +
> +    return longestDomainLength;
> +
> +}
>  
>  static int
>  showDomains(virConnectPtr conn)
>  {
> -    int numNames, numInactiveDomains, numActiveDomains;
> +    int numNames, numInactiveDomains, numActiveDomains, longestDomainLength;
>      ssize_t i;
>      int flags = VIR_CONNECT_LIST_DOMAINS_ACTIVE |
>                  VIR_CONNECT_LIST_DOMAINS_INACTIVE;
> @@ -88,9 +112,12 @@ showDomains(virConnectPtr conn)
>          return 1;
>      }
>  
> +    longestDomainLength = longestDomain(nameList, numNames);
> +
>      for (i = 0; i < numNames; i++) {
>          int active = virDomainIsActive(nameList[i]);
> -        printf("  %8s (%s)\n",
> +        printf("  %-*s (%s)\n",
> +                longestDomainLength,

Ooops, misaligned.

>                 virDomainGetName(nameList[i]),
>                 (active == 1 ? "active" : "non-active"));
>          /* must free the returned named per the API documentation */

I'll fix those trivial nits before pushing (we're in a freeze, so after
the release).

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Michal