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
_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to