size_t sz = 0;
int r;
+ /* Returns the length of the generated string (without the terminating NUL),
+ * or negative on error. */
+
assert_return(v, -EINVAL);
assert_return(ret, -EINVAL);
json_variant_dump(v, flags, f, NULL);
+ /* Add terminating 0, so that the output buffer is a valid string. */
+ fputc('\0', f);
+
r = fflush_and_check(f);
}
if (r < 0)
assert(s);
*ret = TAKE_PTR(s);
-
- return (int) sz;
+ assert(sz > 0);
+ return (int) sz - 1;
}
void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix) {
r = json_variant_format(m, 0, &text);
if (r < 0)
return r;
+ assert(text[r] == '\0');
if (v->output_buffer_size + r + 1 > VARLINK_BUFFER_MAX)
return -ENOBUFS;
r = json_variant_format(v, 0, &s);
assert_se(r >= 0);
assert_se(s);
+ assert_se((size_t) r == strlen(s));
log_info("formatted normally: %s\n", s);
r = json_variant_format(v, JSON_FORMAT_PRETTY, &s);
assert_se(r >= 0);
assert_se(s);
+ assert_se((size_t) r == strlen(s));
log_info("formatted prettily:\n%s", s);
r = json_variant_format(v, JSON_FORMAT_COLOR, &s);
assert_se(r >= 0);
assert_se(s);
+ assert_se((size_t) r == strlen(s));
printf("Normal with color: %s\n", s);
s = mfree(s);
r = json_variant_format(v, JSON_FORMAT_COLOR|JSON_FORMAT_PRETTY, &s);
assert_se(r >= 0);
assert_se(s);
+ assert_se((size_t) r == strlen(s));
printf("Pretty with color:\n%s\n", s);
if (test)