From 0b1f2e8a061721b37100380bd3c9ee4b97cb35cf Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 29 May 2019 12:24:40 +0200 Subject: [PATCH] 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. --- src/shared/json.c | 3 +++ src/shared/json.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/shared/json.c b/src/shared/json.c index 38b2bb14e4..7abbd1917d 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 40e74e03a4..749c25253f 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);