diff --git a/include/villas/format.hpp b/include/villas/format.hpp index 31af72165..f313e2e8a 100644 --- a/include/villas/format.hpp +++ b/include/villas/format.hpp @@ -55,12 +55,16 @@ public: virtual void start() {} + virtual void reset() {} + virtual void parse(json_t *json); virtual int print(FILE *f, const struct Sample *const smps[], unsigned cnt); virtual int scan(FILE *f, struct Sample *const smps[], unsigned cnt); + virtual void printMetadata(FILE *f, json_t *json) {} + /* Print \p cnt samples from \p smps into buffer \p buf of length \p len. * * @param buf[out] The buffer which should be filled with serialized data. diff --git a/include/villas/formats/line.hpp b/include/villas/formats/line.hpp index f4b1c0aeb..eb05e13f8 100644 --- a/include/villas/formats/line.hpp +++ b/include/villas/formats/line.hpp @@ -38,6 +38,10 @@ public: header_printed = true; } + virtual void reset() { header_printed = false; } + + virtual void printMetadata(FILE *f, json_t *json); + virtual int sprint(char *buf, size_t len, size_t *wbytes, const struct Sample *const smps[], unsigned cnt); virtual int sscan(const char *buf, size_t len, size_t *rbytes, diff --git a/lib/formats/column.cpp b/lib/formats/column.cpp index f3318754f..4bf854645 100644 --- a/lib/formats/column.cpp +++ b/lib/formats/column.cpp @@ -137,7 +137,7 @@ void ColumnLineFormat::header(FILE *f, const SignalList::Ptr sigs) { return; if (comment) - fprintf(f, "%c", comment); + fprintf(f, "%c ", comment); if (flags & (int)SampleFlags::HAS_TS_ORIGIN) fprintf(f, "secs%cnsecs%c", separator, separator); diff --git a/lib/formats/line.cpp b/lib/formats/line.cpp index 07fb20115..1e15715a8 100644 --- a/lib/formats/line.cpp +++ b/lib/formats/line.cpp @@ -163,3 +163,7 @@ void LineFormat::parse(json_t *json) { Format::parse(json); } + +void LineFormat::printMetadata(FILE *f, json_t *json) { + fprintf(f, "# %s\n", json_dumps(json, 0)); +}