X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Ffs-src%2Fmetadata.cpp;h=bf905d3ae0975c3c88b29cdb30ca03424996eee9;hb=4726b1eeed55cb732cc4f0efc2ac13207088e549;hp=019970176c283c62ff3d08a6fed6bb586c487de2;hpb=5ff12b250802d3e0d527f6a5d4c61f4d15e50294;p=babeltrace.git diff --git a/src/plugins/ctf/fs-src/metadata.cpp b/src/plugins/ctf/fs-src/metadata.cpp index 01997017..bf905d3a 100644 --- a/src/plugins/ctf/fs-src/metadata.cpp +++ b/src/plugins/ctf/fs-src/metadata.cpp @@ -6,6 +6,7 @@ */ #include "common/assert.h" +#include "cpp-common/bt2s/make-unique.hpp" #include "../common/src/metadata/tsdl/decoder.hpp" #include "file.hpp" @@ -35,28 +36,24 @@ end: return fp; } -static struct ctf_fs_file *get_file(const char *trace_path, const bt2c::Logger& logger) +static ctf_fs_file::UP get_file(const bt2c::CStringView trace_path, const bt2c::Logger& logger) { - struct ctf_fs_file *file = ctf_fs_file_create(logger).release(); + auto file = bt2s::make_unique(logger); if (!file) { goto error; } - g_string_append(file->path, trace_path); - g_string_append(file->path, G_DIR_SEPARATOR_S CTF_FS_METADATA_FILENAME); + file->path = fmt::format("{}" G_DIR_SEPARATOR_S CTF_FS_METADATA_FILENAME, trace_path); - if (ctf_fs_file_open(file, "rb")) { + if (ctf_fs_file_open(file.get(), "rb")) { goto error; } goto end; error: - if (file) { - ctf_fs_file_destroy(file); - file = NULL; - } + file.reset(); end: return file; @@ -66,14 +63,13 @@ int ctf_fs_metadata_set_trace_class(bt_self_component *self_comp, struct ctf_fs_ const ctf::src::ClkClsCfg& clkClsCfg) { int ret = 0; - struct ctf_fs_file *file = NULL; ctf_metadata_decoder_config decoder_config {ctf_fs_trace->logger}; decoder_config.self_comp = self_comp; decoder_config.clkClsCfg = clkClsCfg; decoder_config.create_trace_class = true; - file = get_file(ctf_fs_trace->path->str, ctf_fs_trace->logger); + const auto file = get_file(ctf_fs_trace->path, ctf_fs_trace->logger); if (!file) { BT_CPPLOGE_SPEC(ctf_fs_trace->logger, "Cannot create metadata file object."); ret = -1; @@ -87,7 +83,8 @@ int ctf_fs_metadata_set_trace_class(bt_self_component *self_comp, struct ctf_fs_ goto end; } - ret = ctf_metadata_decoder_append_content(ctf_fs_trace->metadata->decoder.get(), file->fp); + ret = + ctf_metadata_decoder_append_content(ctf_fs_trace->metadata->decoder.get(), file->fp.get()); if (ret) { BT_CPPLOGE_SPEC(ctf_fs_trace->logger, "Cannot update metadata decoder's content."); goto end; @@ -96,28 +93,11 @@ int ctf_fs_metadata_set_trace_class(bt_self_component *self_comp, struct ctf_fs_ ctf_fs_trace->metadata->trace_class = ctf_metadata_decoder_get_ir_trace_class(ctf_fs_trace->metadata->decoder.get()); BT_ASSERT(!self_comp || ctf_fs_trace->metadata->trace_class); + ctf_fs_trace->metadata->tc = ctf_metadata_decoder_borrow_ctf_trace_class(ctf_fs_trace->metadata->decoder.get()); BT_ASSERT(ctf_fs_trace->metadata->tc); end: - ctf_fs_file_destroy(file); return ret; } - -int ctf_fs_metadata_init(struct ctf_fs_metadata *) -{ - /* Nothing to initialize for the moment. */ - return 0; -} - -void ctf_fs_metadata_fini(struct ctf_fs_metadata *metadata) -{ - free(metadata->text); - - if (metadata->trace_class) { - BT_TRACE_CLASS_PUT_REF_AND_RESET(metadata->trace_class); - } - - metadata->decoder.reset(); -}