[PATCH] util: json: Add modifier for adding non-negative long values to JSON objects

Peter Krempa posted 1 patch 1 year, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/965aee5fe46f1b854973df07343bc4c724f7d2de.1654155916.git.pkrempa@redhat.com
src/util/virjson.c | 5 +++++
1 file changed, 5 insertions(+)
[PATCH] util: json: Add modifier for adding non-negative long values to JSON objects
Posted by Peter Krempa 1 year, 11 months ago
Similarly to the 'k' modifier for integers introduce 'K' for long
integers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/util/virjson.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/util/virjson.c b/src/util/virjson.c
index 6e13e97e15..ae970c7653 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -121,6 +121,7 @@ virJSONValueGetType(const virJSONValue *value)
  *
  * I: signed long integer value
  * J: signed long integer value, error if negative
+ * K: signed long integer value, omitted if negative
  * Z: signed long integer value, omitted if zero
  * Y: signed long integer value, omitted if zero, error if negative
  *
@@ -228,6 +229,7 @@ virJSONValueObjectAddVArgs(virJSONValue **objptr,

         case 'Z':
         case 'Y':
+        case 'K':
         case 'J':
         case 'I': {
             long long val = va_arg(args, long long);
@@ -242,6 +244,9 @@ virJSONValueObjectAddVArgs(virJSONValue **objptr,
             if (!val && (type == 'Z' || type == 'Y'))
                 continue;

+            if (val < 0 && type == 'K')
+                continue;
+
             rc = virJSONValueObjectAppendNumberLong(obj, key, val);
         }   break;

-- 
2.35.3
Re: [PATCH] util: json: Add modifier for adding non-negative long values to JSON objects
Posted by Jiri Denemark 1 year, 11 months ago
On Thu, Jun 02, 2022 at 09:45:16 +0200, Peter Krempa wrote:
> Similarly to the 'k' modifier for integers introduce 'K' for long
> integers.
> 
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> ---
>  src/util/virjson.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/util/virjson.c b/src/util/virjson.c
> index 6e13e97e15..ae970c7653 100644
> --- a/src/util/virjson.c
> +++ b/src/util/virjson.c
> @@ -121,6 +121,7 @@ virJSONValueGetType(const virJSONValue *value)
>   *
>   * I: signed long integer value
>   * J: signed long integer value, error if negative
> + * K: signed long integer value, omitted if negative
>   * Z: signed long integer value, omitted if zero
>   * Y: signed long integer value, omitted if zero, error if negative
>   *

It feels like we're going to run out of the alphabet soon :-)

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Re: [PATCH] util: json: Add modifier for adding non-negative long values to JSON objects
Posted by Peter Krempa 1 year, 11 months ago
On Thu, Jun 02, 2022 at 09:48:28 +0200, Jiri Denemark wrote:
> On Thu, Jun 02, 2022 at 09:45:16 +0200, Peter Krempa wrote:
> > Similarly to the 'k' modifier for integers introduce 'K' for long
> > integers.
> > 
> > Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> > ---
> >  src/util/virjson.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/src/util/virjson.c b/src/util/virjson.c
> > index 6e13e97e15..ae970c7653 100644
> > --- a/src/util/virjson.c
> > +++ b/src/util/virjson.c
> > @@ -121,6 +121,7 @@ virJSONValueGetType(const virJSONValue *value)
> >   *
> >   * I: signed long integer value
> >   * J: signed long integer value, error if negative
> > + * K: signed long integer value, omitted if negative
> >   * Z: signed long integer value, omitted if zero
> >   * Y: signed long integer value, omitted if zero, error if negative
> >   *
> 
> It feels like we're going to run out of the alphabet soon :-)

It's certainly a race between available alphabet letters and the weird
corner case combinations we require in our code, but I'm not sure there
are too many weird corner cases which would come up handy, so I'm not
going to bet which one happens sooner :D

At least this time we already have a letter pre-allocated for this case
;)

> 
> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
>
Re: [PATCH] util: json: Add modifier for adding non-negative long values to JSON objects
Posted by Daniel P. Berrangé 1 year, 11 months ago
On Thu, Jun 02, 2022 at 09:52:16AM +0200, Peter Krempa wrote:
> On Thu, Jun 02, 2022 at 09:48:28 +0200, Jiri Denemark wrote:
> > On Thu, Jun 02, 2022 at 09:45:16 +0200, Peter Krempa wrote:
> > > Similarly to the 'k' modifier for integers introduce 'K' for long
> > > integers.
> > > 
> > > Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> > > ---
> > >  src/util/virjson.c | 5 +++++
> > >  1 file changed, 5 insertions(+)
> > > 
> > > diff --git a/src/util/virjson.c b/src/util/virjson.c
> > > index 6e13e97e15..ae970c7653 100644
> > > --- a/src/util/virjson.c
> > > +++ b/src/util/virjson.c
> > > @@ -121,6 +121,7 @@ virJSONValueGetType(const virJSONValue *value)
> > >   *
> > >   * I: signed long integer value
> > >   * J: signed long integer value, error if negative
> > > + * K: signed long integer value, omitted if negative
> > >   * Z: signed long integer value, omitted if zero
> > >   * Y: signed long integer value, omitted if zero, error if negative
> > >   *
> > 
> > It feels like we're going to run out of the alphabet soon :-)
> 
> It's certainly a race between available alphabet letters and the weird
> corner case combinations we require in our code, but I'm not sure there
> are too many weird corner cases which would come up handy, so I'm not
> going to bet which one happens sooner :D

Who says we need to limit ourselves to the traditional alphabet 😜

  https://unicode.org/emoji/charts/full-emoji-list.html


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|