[Libguestfs] [PATCH nbdinfo v2 2/3] info: Add human size to ordinary output

Richard W.M. Jones rjones at redhat.com
Mon Sep 20 11:04:47 UTC 2021


For example:

  $ nbdkit null 1G --run 'nbdinfo "$uri"'
  protocol: newstyle-fixed without TLS
  export="":
  	export-size: 1073741824 (1G)

If the value cannot be abbreviated then the output doesn't include the
part in parentheses:

  $ nbdkit null 1023 --run 'nbdinfo "$uri"'
  protocol: newstyle-fixed without TLS
  export="":
  	export-size: 1023

The human-readable output changes, but callers shouldn't be parsing it
(use --size and/or --json instead).
---
 info/nbdinfo.pod |  9 +++++----
 info/show.c      | 13 +++++++++++--
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/info/nbdinfo.pod b/info/nbdinfo.pod
index fbd0ef20..f64fe213 100644
--- a/info/nbdinfo.pod
+++ b/info/nbdinfo.pod
@@ -29,7 +29,7 @@ L<https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md>):
  $ nbdinfo nbd://localhost
  protocol: newstyle-fixed without TLS
  export="":
-         export-size: 1048576
+         export-size: 1048576 (1M)
          content: data
          uri: nbd://localhost:10809/
          is_rotational: false
@@ -78,7 +78,8 @@ the I<--json> parameter:
        "block_size_minimum": 1,
        "block_size_preferred": 4096,
        "block_size_maximum": 33554432,
-       "export-size": 2125119488
+       "export-size": 2125119488,
+       "export-size-str": "2075312K"
      }
    ]
  }
@@ -222,11 +223,11 @@ For example:
  $ nbdkit file dir=. --run 'nbdinfo --list "$uri"'
  protocol: newstyle-fixed without TLS
  export="Fedora-Workstation-Live-x86_64-29-1.2.iso":
-     export-size: 1931476992
+     export-size: 1931476992 (1842M)
      uri: nbd://localhost:10809/Fedora-Workstation-Live-x86_64-29-1.2.iso
      [...]
  export="debian-10.4.0-amd64-DVD-1.iso":
-     export-size: 3955556352
+     export-size: 3955556352 (3862848K)
      uri: nbd://localhost:10809/debian-10.4.0-amd64-DVD-1.iso
      [...]
 
diff --git a/info/show.c b/info/show.c
index 893178cb..ff241a83 100644
--- a/info/show.c
+++ b/info/show.c
@@ -28,6 +28,7 @@
 
 #include <libnbd.h>
 
+#include "human-size.h"
 #include "vector.h"
 
 #include "nbdinfo.h"
@@ -45,6 +46,8 @@ show_one_export (struct nbd_handle *nbd, const char *desc,
                  bool first, bool last)
 {
   int64_t i, size;
+  char size_str[HUMAN_SIZE_LONGEST];
+  bool human_size_flag;
   char *export_name = NULL;
   char *export_desc = NULL;
   char *content = NULL;
@@ -75,6 +78,8 @@ show_one_export (struct nbd_handle *nbd, const char *desc,
     exit (EXIT_FAILURE);
   }
 
+  human_size (size_str, size, &human_size_flag);
+
   uri = nbd_get_uri (nbd);
 
   /* Prefer the server's version of the name, if available */
@@ -116,7 +121,10 @@ show_one_export (struct nbd_handle *nbd, const char *desc,
     fprintf (fp, ":\n");
     if (desc && *desc)
       fprintf (fp, "\tdescription: %s\n", desc);
-    fprintf (fp, "\texport-size: %" PRIi64 "\n", size);
+    if (human_size_flag)
+      fprintf (fp, "\texport-size: %" PRIi64 " (%s)\n", size, size_str);
+    else
+      fprintf (fp, "\texport-size: %" PRIi64 "\n", size);
     if (content)
       fprintf (fp, "\tcontent: %s\n", content);
     if (uri)
@@ -239,7 +247,8 @@ show_one_export (struct nbd_handle *nbd, const char *desc,
                block_maximum);
 
     /* Put this one at the end because of the stupid comma thing in JSON. */
-    fprintf (fp, "\t\"export-size\": %" PRIi64 "\n", size);
+    fprintf (fp, "\t\"export-size\": %" PRIi64 ",\n", size);
+    fprintf (fp, "\t\"export-size-str\": \"%s\"\n", size_str);
 
     if (last)
       fprintf (fp, "\t} ]\n");
-- 
2.32.0




More information about the Libguestfs mailing list