On Fri, Oct 06, 2023 at 09:18:31AM -0500, Eric Blake wrote:
On Sun, Sep 03, 2023 at 04:23:23PM +0100, Richard W.M. Jones wrote:
> Copy the human_size() function from common/utils/ into the new
> human-size.h header in common/include/. Remove human-size.c and
> combine the tests into one.
> ---
> common/include/human-size.h | 51 ++++++++++++++++++
This file was created by inheriting nbdkit's weaker BSD licensing...
> common/include/test-human-size.c | 79 +++++++++++++++++++++++++---
> common/utils/Makefile.am | 10 +---
> common/utils/human-size.c | 56 --------------------
> common/utils/human-size.h | 49 ------------------
...while this file was originally created with libnbd's LGPLv2+
licensing. By merging LGPLv2+ code into a file containing only a BSD
license header, you have created an ambiguity on what license should
be assumed when using human_size(). Could you explicitly clarify that
the relaxing of the license was intentional, so that it is safe to
then merge libnbd's code into nbdkit without dragging in LGPLv2+ code?
Yes, let's use the weaker (BSD) license for this new code. From the
git history I authored both originally.
> +static inline char *
> +human_size (char *buf, uint64_t bytes, bool *human)
> +{
> + static const char ext[][2] = { "E", "P", "T",
"G", "M", "K", "" };
> + size_t i;
Code motion, so this is pre-existing, but this seems rather lengthy,
compared to a more compact:
static const char ext[] = "EPTGMK";
> +
> + if (buf == NULL) {
> + buf = malloc (HUMAN_SIZE_LONGEST);
> + if (buf == NULL)
> + return NULL;
> + }
> +
> + /* Work out which extension to use, if any. */
> + i = 6;
> + if (bytes != 0) {
> + while ((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,
&ext[i]);
> + return buf;
> +}
> +
Do you want to suggest / push a patch for these bits?
Thanks,
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html