_JSON_BUILD_IOVEC_HEX,
_JSON_BUILD_HW_ADDR,
_JSON_BUILD_STRING_SET,
+ _JSON_BUILD_STRING_UNDERSCORIFY,
_JSON_BUILD_PAIR_UNSIGNED_NON_ZERO,
_JSON_BUILD_PAIR_FINITE_USEC,
#define JSON_BUILD_ETHER_ADDR(v) SD_JSON_BUILD_BYTE_ARRAY(((const struct ether_addr*) { v })->ether_addr_octet, sizeof(struct ether_addr))
#define JSON_BUILD_HW_ADDR(v) _JSON_BUILD_HW_ADDR, (const struct hw_addr_data*) { v }
#define JSON_BUILD_STRING_SET(s) _JSON_BUILD_STRING_SET, (Set *) { s }
+#define JSON_BUILD_STRING_UNDERSCORIFY(s) _JSON_BUILD_STRING_UNDERSCORIFY, (const char *) { s }
#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_FINITE_USEC(name, u) _JSON_BUILD_PAIR_FINITE_USEC, (const char*) { name }, (usec_t) { u }
switch (command) {
- case _SD_JSON_BUILD_STRING: {
+ case _SD_JSON_BUILD_STRING:
+ case _JSON_BUILD_STRING_UNDERSCORIFY: {
const char *p;
if (!IN_SET(current->expect, EXPECT_TOPLEVEL, EXPECT_OBJECT_VALUE, EXPECT_ARRAY_ELEMENT)) {
p = va_arg(ap, const char *);
if (current->n_suppress == 0) {
+ _cleanup_free_ char *c = NULL;
+
+ if (command == _JSON_BUILD_STRING_UNDERSCORIFY) {
+ c = strreplace(p, "-", "_");
+ if (!c) {
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ p = c;
+ }
+
r = sd_json_variant_new_string(&add, p);
if (r < 0)
goto finish;
a = sd_json_variant_unref(a);
b = sd_json_variant_unref(b);
- assert_se(sd_json_build(&a, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("one", SD_JSON_BUILD_INTEGER(7)),
- SD_JSON_BUILD_PAIR("two", SD_JSON_BUILD_REAL(2.0)),
- SD_JSON_BUILD_PAIR("three", SD_JSON_BUILD_INTEGER(0)))) >= 0);
-
- assert_se(sd_json_build(&b, SD_JSON_BUILD_OBJECT(SD_JSON_BUILD_PAIR("two", SD_JSON_BUILD_INTEGER(2)),
- SD_JSON_BUILD_PAIR("three", SD_JSON_BUILD_REAL(0)),
- SD_JSON_BUILD_PAIR("one", SD_JSON_BUILD_REAL(7)))) >= 0);
+ assert_se(sd_json_buildo(&a,
+ SD_JSON_BUILD_PAIR("one", SD_JSON_BUILD_INTEGER(7)),
+ SD_JSON_BUILD_PAIR("two", SD_JSON_BUILD_REAL(2.0)),
+ SD_JSON_BUILD_PAIR("four", JSON_BUILD_STRING_UNDERSCORIFY("foo-bar-baz")),
+ SD_JSON_BUILD_PAIR("three", SD_JSON_BUILD_INTEGER(0))) >= 0);
+
+ assert_se(sd_json_buildo(&b,
+ SD_JSON_BUILD_PAIR("two", SD_JSON_BUILD_INTEGER(2)),
+ SD_JSON_BUILD_PAIR("four", SD_JSON_BUILD_STRING("foo_bar_baz")),
+ SD_JSON_BUILD_PAIR("three", SD_JSON_BUILD_REAL(0)),
+ SD_JSON_BUILD_PAIR("one", SD_JSON_BUILD_REAL(7))) >= 0);
assert_se(sd_json_variant_equal(a, b));