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