From: Lennart Poettering Date: Wed, 29 May 2019 10:24:40 +0000 (+0200) Subject: json: add new flag for forcing a flush after dumping json data to file X-Git-Tag: v245-rc1~249^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b1f2e8a061721b37100380bd3c9ee4b97cb35cf;p=thirdparty%2Fsystemd.git json: add new flag for forcing a flush after dumping json data to file This is particularly useful when no trailing \n is generated, i.e. stdio doesn't flush the output on its own. --- diff --git a/src/shared/json.c b/src/shared/json.c index 38b2bb14e4d..7abbd1917d8 100644 --- a/src/shared/json.c +++ b/src/shared/json.c @@ -1767,6 +1767,9 @@ void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const cha fputc('\n', f); if (flags & JSON_FORMAT_SSE) fputc('\n', f); /* In case of SSE add a second newline */ + + if (flags & JSON_FORMAT_FLUSH) + fflush(f); } int json_variant_filter(JsonVariant **v, char **to_remove) { diff --git a/src/shared/json.h b/src/shared/json.h index 40e74e03a48..749c25253f8 100644 --- a/src/shared/json.h +++ b/src/shared/json.h @@ -168,6 +168,7 @@ typedef enum JsonFormatFlags { 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 */ + JSON_FORMAT_FLUSH = 1 << 7, /* call fflush() after dumping JSON */ } JsonFormatFlags; int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret);