return fp;
}
-static ctf_fs_file::UP 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)
{
auto file = ctf_fs_file_create(logger);
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.get(), "rb")) {
goto error;
const ctf::src::ClkClsCfg& clkClsCfg)
{
int ret = 0;
+ bt2::TraceClass::Shared traceCls;
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;
- const auto 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;
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;
}
- ctf_fs_trace->metadata->trace_class =
- ctf_metadata_decoder_get_ir_trace_class(ctf_fs_trace->metadata->decoder.get());
+ traceCls = ctf_metadata_decoder_get_ir_trace_class(ctf_fs_trace->metadata->decoder.get());
+ if (traceCls) {
+ ctf_fs_trace->metadata->trace_class = traceCls.release().libObjPtr();
+ }
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);
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);
}