]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
json-util: Add JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL() 34236/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 23 Aug 2024 12:57:12 +0000 (14:57 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 3 Sep 2024 10:08:42 +0000 (12:08 +0200)
src/libsystemd/sd-json/json-util.h
src/libsystemd/sd-json/sd-json.c

index ba9539d341e6ffdec8e8f9f241c614e067ef9d71..3823eb32ddb8c90ed818526ea9ffb6741132a945 100644 (file)
@@ -147,6 +147,7 @@ enum {
         _JSON_BUILD_PAIR_INTEGER_NON_ZERO,
         _JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE,
         _JSON_BUILD_PAIR_UNSIGNED_NON_ZERO,
+        _JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL,
         _JSON_BUILD_PAIR_FINITE_USEC,
         _JSON_BUILD_PAIR_STRING_NON_EMPTY,
         _JSON_BUILD_PAIR_STRV_NON_EMPTY,
@@ -189,6 +190,7 @@ enum {
 #define JSON_BUILD_PAIR_INTEGER_NON_ZERO(name, i) _JSON_BUILD_PAIR_INTEGER_NON_ZERO, (const char*) { name }, (int64_t) { i }
 #define JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE(name, i) _JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE, (const char*) { name }, (int64_t) { i }
 #define JSON_BUILD_PAIR_UNSIGNED_NON_ZERO(name, u) _JSON_BUILD_PAIR_UNSIGNED_NON_ZERO, (const char*) { name }, (uint64_t) { u }
+#define JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL(name, u, eq) _JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL, (const char*) { name }, (uint64_t) { u }, (uint64_t) { eq }
 #define JSON_BUILD_PAIR_FINITE_USEC(name, u) _JSON_BUILD_PAIR_FINITE_USEC, (const char*) { name }, (usec_t) { u }
 #define JSON_BUILD_PAIR_STRING_NON_EMPTY(name, s) _JSON_BUILD_PAIR_STRING_NON_EMPTY, (const char*) { name }, (const char*) { s }
 #define JSON_BUILD_PAIR_STRV_NON_EMPTY(name, l) _JSON_BUILD_PAIR_STRV_NON_EMPTY, (const char*) { name }, (char**) { l }
index 9bb35b2bbb6ac9f83c690af66392024a3feb8a92..20599114ab5e752b96324cd78f83fa9133f5269e 100644 (file)
@@ -4398,9 +4398,10 @@ _public_ int sd_json_buildv(sd_json_variant **ret, va_list ap) {
                         break;
                 }
 
-                case _JSON_BUILD_PAIR_UNSIGNED_NON_ZERO: {
+                case _JSON_BUILD_PAIR_UNSIGNED_NON_ZERO:
+                case _JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL: {
                         const char *n;
-                        uint64_t u;
+                        uint64_t u, eq;
 
                         if (current->expect != EXPECT_OBJECT_KEY) {
                                 r = -EINVAL;
@@ -4409,8 +4410,9 @@ _public_ int sd_json_buildv(sd_json_variant **ret, va_list ap) {
 
                         n = va_arg(ap, const char *);
                         u = va_arg(ap, uint64_t);
+                        eq = command == _JSON_BUILD_PAIR_UNSIGNED_NON_ZERO ? 0 : va_arg(ap, uint64_t);
 
-                        if (u != 0 && current->n_suppress == 0) {
+                        if (u != eq && current->n_suppress == 0) {
                                 r = sd_json_variant_new_string(&add, n);
                                 if (r < 0)
                                         goto finish;