Re: [Libguestfs] [libnbd PATCH 1/2] utils: Slightly simplify human_size()

2023-10-07 Thread Richard W.M. Jones
On Fri, Oct 06, 2023 at 10:18:08AM -0500, Eric Blake wrote:
> Use an array of characters instead of strings for less .data storage.
> Merge the loop conditional for fewer lines of code.
> 
> Signed-off-by: Eric Blake 
> ---
>  common/include/human-size.h | 14 ++
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/common/include/human-size.h b/common/include/human-size.h
> index 47729c3c..8b1e0132 100644
> --- a/common/include/human-size.h
> +++ b/common/include/human-size.h
> @@ -159,7 +159,7 @@ human_size_parse (const char *str,
>  static inline char *
>  human_size (char *buf, uint64_t bytes, bool *human)
>  {
> -  static const char ext[][2] = { "E", "P", "T", "G", "M", "K", "" };
> +  static const char ext[] = "EPTGMK";
>size_t i;
> 
>if (buf == NULL) {
> @@ -170,18 +170,16 @@ human_size (char *buf, uint64_t bytes, bool *human)
> 
>/* Work out which extension to use, if any. */
>i = 6;
> -  if (bytes != 0) {
> -while ((bytes & 1023) == 0) {
> -  bytes >>= 10;
> -  i--;
> -}
> +  while (bytes && (bytes & 1023) == 0) {
> +bytes >>= 10;
> +i--;
>}
> 
>/* Set the flag to true if we're going to add a human-readable extension. 
> */
>if (human)
> -*human = ext[i][0] != '\0';
> +*human = ext[i] != '\0';
> 
> -  snprintf (buf, HUMAN_SIZE_LONGEST, "%" PRIu64 "%s", bytes, ext[i]);
> +  snprintf (buf, HUMAN_SIZE_LONGEST, "%" PRIu64 "%.1s", bytes, [i]);
>return buf;
>  }

Reviewed-by: Richard W.M. Jones 

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
___
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs



[Libguestfs] [libnbd PATCH 1/2] utils: Slightly simplify human_size()

2023-10-06 Thread Eric Blake
Use an array of characters instead of strings for less .data storage.
Merge the loop conditional for fewer lines of code.

Signed-off-by: Eric Blake 
---
 common/include/human-size.h | 14 ++
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/common/include/human-size.h b/common/include/human-size.h
index 47729c3c..8b1e0132 100644
--- a/common/include/human-size.h
+++ b/common/include/human-size.h
@@ -159,7 +159,7 @@ human_size_parse (const char *str,
 static inline char *
 human_size (char *buf, uint64_t bytes, bool *human)
 {
-  static const char ext[][2] = { "E", "P", "T", "G", "M", "K", "" };
+  static const char ext[] = "EPTGMK";
   size_t i;

   if (buf == NULL) {
@@ -170,18 +170,16 @@ human_size (char *buf, uint64_t bytes, bool *human)

   /* Work out which extension to use, if any. */
   i = 6;
-  if (bytes != 0) {
-while ((bytes & 1023) == 0) {
-  bytes >>= 10;
-  i--;
-}
+  while (bytes && (bytes & 1023) == 0) {
+bytes >>= 10;
+i--;
   }

   /* Set the flag to true if we're going to add a human-readable extension. */
   if (human)
-*human = ext[i][0] != '\0';
+*human = ext[i] != '\0';

-  snprintf (buf, HUMAN_SIZE_LONGEST, "%" PRIu64 "%s", bytes, ext[i]);
+  snprintf (buf, HUMAN_SIZE_LONGEST, "%" PRIu64 "%.1s", bytes, [i]);
   return buf;
 }

-- 
2.41.0

___
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs