json: add build helpers to insert id128 in uuid formatting into json object
This commit is contained in:
@@ -2573,10 +2573,10 @@ static int table_data_to_json(TableData *d, JsonVariant **ret) {
|
||||
return json_variant_new_array_bytes(ret, &d->address, FAMILY_ADDRESS_SIZE(AF_INET6));
|
||||
|
||||
case TABLE_ID128:
|
||||
return json_variant_new_string(ret, SD_ID128_TO_STRING(d->id128));
|
||||
return json_variant_new_id128(ret, d->id128);
|
||||
|
||||
case TABLE_UUID:
|
||||
return json_variant_new_string(ret, SD_ID128_TO_UUID_STRING(d->id128));
|
||||
return json_variant_new_uuid(ret, d->id128);
|
||||
|
||||
case TABLE_UID:
|
||||
if (!uid_is_valid(d->uid))
|
||||
|
||||
+9
-2
@@ -481,6 +481,10 @@ int json_variant_new_id128(JsonVariant **ret, sd_id128_t id) {
|
||||
return json_variant_new_string(ret, SD_ID128_TO_STRING(id));
|
||||
}
|
||||
|
||||
int json_variant_new_uuid(JsonVariant **ret, sd_id128_t id) {
|
||||
return json_variant_new_string(ret, SD_ID128_TO_UUID_STRING(id));
|
||||
}
|
||||
|
||||
static void json_variant_set(JsonVariant *a, JsonVariant *b) {
|
||||
assert(a);
|
||||
|
||||
@@ -3609,7 +3613,8 @@ int json_buildv(JsonVariant **ret, va_list ap) {
|
||||
break;
|
||||
}
|
||||
|
||||
case _JSON_BUILD_ID128: {
|
||||
case _JSON_BUILD_ID128:
|
||||
case _JSON_BUILD_UUID: {
|
||||
const sd_id128_t *id;
|
||||
|
||||
if (!IN_SET(current->expect, EXPECT_TOPLEVEL, EXPECT_OBJECT_VALUE, EXPECT_ARRAY_ELEMENT)) {
|
||||
@@ -3620,7 +3625,9 @@ int json_buildv(JsonVariant **ret, va_list ap) {
|
||||
assert_se(id = va_arg(ap, sd_id128_t*));
|
||||
|
||||
if (current->n_suppress == 0) {
|
||||
r = json_variant_new_id128(&add, *id);
|
||||
r = command == _JSON_BUILD_ID128 ?
|
||||
json_variant_new_id128(&add, *id) :
|
||||
json_variant_new_uuid(&add, *id);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ int json_variant_new_array_strv(JsonVariant **ret, char **l);
|
||||
int json_variant_new_object(JsonVariant **ret, JsonVariant **array, size_t n);
|
||||
int json_variant_new_null(JsonVariant **ret);
|
||||
int json_variant_new_id128(JsonVariant **ret, sd_id128_t id);
|
||||
int json_variant_new_uuid(JsonVariant **ret, sd_id128_t id);
|
||||
|
||||
static inline int json_variant_new_string(JsonVariant **ret, const char *s) {
|
||||
return json_variant_new_stringn(ret, s, SIZE_MAX);
|
||||
@@ -251,6 +252,7 @@ enum {
|
||||
_JSON_BUILD_HEX,
|
||||
_JSON_BUILD_OCTESCAPE,
|
||||
_JSON_BUILD_ID128,
|
||||
_JSON_BUILD_UUID,
|
||||
_JSON_BUILD_BYTE_ARRAY,
|
||||
_JSON_BUILD_HW_ADDR,
|
||||
_JSON_BUILD_PAIR_UNSIGNED_NON_ZERO,
|
||||
@@ -288,6 +290,7 @@ enum {
|
||||
#define JSON_BUILD_HEX(p, n) _JSON_BUILD_HEX, (const void*) { p }, (size_t) { n }
|
||||
#define JSON_BUILD_OCTESCAPE(p, n) _JSON_BUILD_OCTESCAPE, (const void*) { p }, (size_t) { n }
|
||||
#define JSON_BUILD_ID128(id) _JSON_BUILD_ID128, (const sd_id128_t*) { &(id) }
|
||||
#define JSON_BUILD_UUID(id) _JSON_BUILD_UUID, (const sd_id128_t*) { &(id) }
|
||||
#define JSON_BUILD_BYTE_ARRAY(v, n) _JSON_BUILD_BYTE_ARRAY, (const void*) { v }, (size_t) { n }
|
||||
#define JSON_BUILD_CONST_STRING(s) _JSON_BUILD_VARIANT, JSON_VARIANT_STRING_CONST(s)
|
||||
#define JSON_BUILD_IN4_ADDR(v) JSON_BUILD_BYTE_ARRAY((const struct in_addr*) { v }, sizeof(struct in_addr))
|
||||
@@ -313,6 +316,7 @@ enum {
|
||||
#define JSON_BUILD_PAIR_BASE64(name, p, n) JSON_BUILD_PAIR(name, JSON_BUILD_BASE64(p, n))
|
||||
#define JSON_BUILD_PAIR_HEX(name, p, n) JSON_BUILD_PAIR(name, JSON_BUILD_HEX(p, n))
|
||||
#define JSON_BUILD_PAIR_ID128(name, id) JSON_BUILD_PAIR(name, JSON_BUILD_ID128(id))
|
||||
#define JSON_BUILD_PAIR_UUID(name, id) JSON_BUILD_PAIR(name, JSON_BUILD_UUID(id))
|
||||
#define JSON_BUILD_PAIR_BYTE_ARRAY(name, v, n) JSON_BUILD_PAIR(name, JSON_BUILD_BYTE_ARRAY(v, n))
|
||||
#define JSON_BUILD_PAIR_IN4_ADDR(name, v) JSON_BUILD_PAIR(name, JSON_BUILD_IN4_ADDR(v))
|
||||
#define JSON_BUILD_PAIR_IN6_ADDR(name, v) JSON_BUILD_PAIR(name, JSON_BUILD_IN6_ADDR(v))
|
||||
|
||||
Reference in New Issue
Block a user