From: Lennart Poettering Date: Mon, 3 Dec 2018 19:33:02 +0000 (+0100) Subject: json: add new display flag JSON_FORMAT_COLOR_AUTO X-Git-Tag: v240~143^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab91733c7e463c657358536540ca91d54521f3e6;p=thirdparty%2Fsystemd.git json: add new display flag JSON_FORMAT_COLOR_AUTO Typically we want to enable color when colors_enabled() says so, hence let's automatize this. --- diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 6188216d287..0bcc89f6f26 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -1939,7 +1939,7 @@ static void json_dump_with_flags(JsonVariant *v, FILE *f) { json_variant_dump(v, (arg_json == JSON_PRETTY ? JSON_FORMAT_PRETTY : JSON_FORMAT_NEWLINE) | - colors_enabled() * JSON_FORMAT_COLOR, + JSON_FORMAT_COLOR_AUTO, f, NULL); } diff --git a/src/shared/json.c b/src/shared/json.c index 75795c28503..c410b620084 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -1585,6 +1585,9 @@ void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const cha print_source(f, v, flags, false); + if (((flags & (JSON_FORMAT_COLOR_AUTO|JSON_FORMAT_COLOR)) == JSON_FORMAT_COLOR_AUTO) && colors_enabled()) + flags |= JSON_FORMAT_COLOR; + if (flags & JSON_FORMAT_SSE) fputs("data: ", f); if (flags & JSON_FORMAT_SEQ) diff --git a/src/shared/json.h b/src/shared/json.h index 04687d41359..4eba91c2720 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -151,12 +151,13 @@ struct json_variant_foreach_state { int json_variant_get_source(JsonVariant *v, const char **ret_source, unsigned *ret_line, unsigned *ret_column); typedef enum JsonFormatFlags { - JSON_FORMAT_NEWLINE = 1 << 0, /* suffix with newline */ - JSON_FORMAT_PRETTY = 1 << 1, /* add internal whitespace to appeal to human readers */ - JSON_FORMAT_COLOR = 1 << 2, /* insert ANSI color sequences */ - JSON_FORMAT_SOURCE = 1 << 3, /* prefix with source filename/line/column */ - JSON_FORMAT_SSE = 1 << 4, /* prefix/suffix with W3C server-sent events */ - JSON_FORMAT_SEQ = 1 << 5, /* prefix/suffix with RFC 7464 application/json-seq */ + JSON_FORMAT_NEWLINE = 1 << 0, /* suffix with newline */ + JSON_FORMAT_PRETTY = 1 << 1, /* add internal whitespace to appeal to human readers */ + JSON_FORMAT_COLOR = 1 << 2, /* insert ANSI color sequences */ + JSON_FORMAT_COLOR_AUTO = 1 << 3, /* insetr ANSI color sequences if colors_enabled() says so */ + JSON_FORMAT_SOURCE = 1 << 4, /* prefix with source filename/line/column */ + JSON_FORMAT_SSE = 1 << 5, /* prefix/suffix with W3C server-sent events */ + JSON_FORMAT_SEQ = 1 << 6, /* prefix/suffix with RFC 7464 application/json-seq */ } JsonFormatFlags; int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret);