}
}
- if (flags)
+ if (flags & OUTPUT_SHOW_ALL)
fprintf(f, ": %s%.*s%s\n", color_on, (int) message_len, message, color_off);
else if (!utf8_is_printable_n(message, message_len)) {
char bytes[FORMAT_BYTES_MAX];
return 0;
}
-static void json_escape(
+void json_escape(
FILE *f,
const char* p,
size_t l,
(unsigned long long) realtime,
(unsigned long long) monotonic,
sd_id128_to_string(boot_id, sid));
- else
+ else {
+ if (mode == OUTPUT_JSON_SSE)
+ fputs("data: ", f);
+
fprintf(f,
"{ \"__CURSOR\" : \"%s\", "
"\"__REALTIME_TIMESTAMP\" : \"%llu\", "
(unsigned long long) realtime,
(unsigned long long) monotonic,
sd_id128_to_string(boot_id, sid));
+ }
free(cursor);
SD_JOURNAL_FOREACH_DATA(j, data, length) {
if (mode == OUTPUT_JSON_PRETTY)
fputs("\n}\n", f);
+ else if (mode == OUTPUT_JSON_SSE)
+ fputs("}\n\n", f);
else
fputs(" }\n", f);
[OUTPUT_EXPORT] = output_export,
[OUTPUT_JSON] = output_json,
[OUTPUT_JSON_PRETTY] = output_json,
+ [OUTPUT_JSON_SSE] = output_json,
[OUTPUT_CAT] = output_cat
};
[OUTPUT_EXPORT] = "export",
[OUTPUT_JSON] = "json",
[OUTPUT_JSON_PRETTY] = "json-pretty",
+ [OUTPUT_JSON_SSE] = "json-sse",
[OUTPUT_CAT] = "cat"
};