json: add new json format flag for disabling JSON output

This adds a new flag JSON_FORMAT_OFF that is a marker for "no JSON
output please!".

Of course, this flag sounds pointless in a JSON implementation, however
this is useful in code that can generate JSON output, but also more
human friendly output (for example our table formatters).

With this in place various tools that so far maintained one boolean
field "arg_json" that controlled whether JSON output was requested at
all and another field "arg_json_format_flags" for selecing the precise
json output flags may merge them into one, simplifying code a bit.
master
Lennart Poettering 2 years ago
parent 28abf5ad34
commit 10d7126365
  1. 3
      src/shared/format-table.c
  2. 3
      src/shared/json.c
  3. 1
      src/shared/json.h

@ -2536,6 +2536,9 @@ int table_print_json(Table *t, FILE *f, JsonFormatFlags flags) {
assert(t);
if (flags & JSON_FORMAT_OFF) /* If JSON output is turned off, use regular output */
return table_print(t, f);
if (!f)
f = stdout;

@ -1766,6 +1766,9 @@ int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) {
assert_return(v, -EINVAL);
assert_return(ret, -EINVAL);
if (flags & JSON_FORMAT_OFF)
return -ENOEXEC;
{
_cleanup_fclose_ FILE *f = NULL;

@ -175,6 +175,7 @@ typedef enum JsonFormatFlags {
JSON_FORMAT_SSE = 1 << 6, /* prefix/suffix with W3C server-sent events */
JSON_FORMAT_SEQ = 1 << 7, /* prefix/suffix with RFC 7464 application/json-seq */
JSON_FORMAT_FLUSH = 1 << 8, /* call fflush() after dumping JSON */
JSON_FORMAT_OFF = 1 << 9, /* make json_variant_format() fail with -ENOEXEC */
} JsonFormatFlags;
int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret);

Loading…
Cancel
Save