From: Michael Tremer Date: Wed, 8 Oct 2025 15:44:58 +0000 (+0000) Subject: file: Allow to open a buffer as a file object X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e67eabd84ac45195d5f5f9b3d57775bb78a400d;p=telemetry.git file: Allow to open a buffer as a file object Signed-off-by: Michael Tremer --- diff --git a/src/daemon/file.c b/src/daemon/file.c index a316234..71153e3 100644 --- a/src/daemon/file.c +++ b/src/daemon/file.c @@ -91,6 +91,33 @@ ERROR: return r; } +int collecty_file_open_buffer(collecty_file** file, collecty_ctx* ctx, collecty_buffer* buffer) { + collecty_file* self = NULL; + int r; + + // Create a new object + r = collecty_file_create(&self, ctx); + if (r < 0) + goto ERROR; + + // Open the buffer as a file + self->f = collecty_buffer_fopen(buffer, "r"); + if (!self->f) { + r = -errno; + goto ERROR; + } + + // Return the pointer + *file = self; + return 0; + +ERROR: + if (self) + collecty_file_unref(self); + + return r; +} + collecty_file* collecty_file_ref(collecty_file* self) { ++self->nrefs; return self; diff --git a/src/daemon/file.h b/src/daemon/file.h index dc3ddc0..9f51ac0 100644 --- a/src/daemon/file.h +++ b/src/daemon/file.h @@ -25,9 +25,11 @@ typedef struct collecty_file collecty_file; +#include "buffer.h" #include "ctx.h" int collecty_file_open_path(collecty_file** file, collecty_ctx* ctx, const char* path); +int collecty_file_open_buffer(collecty_file** file, collecty_ctx* ctx, collecty_buffer* buffer); collecty_file* collecty_file_ref(collecty_file* self); collecty_file* collecty_file_unref(collecty_file* self);