static
struct ctf_fs_ds_index *build_index_from_idx_file(
- struct ctf_fs_ds_file *ds_file)
+ struct ctf_fs_ds_file *ds_file,
+ struct ctf_fs_ds_file_info *file_info)
{
int ret;
gchar *directory = NULL;
goto error;
}
+ /* Set path to stream file. */
+ index_entry->path = file_info->path->str;
+
/* Convert size in bits to bytes. */
packet_size /= CHAR_BIT;
index_entry->packet_size = packet_size;
static
struct ctf_fs_ds_index *build_index_from_stream_file(
- struct ctf_fs_ds_file *ds_file)
+ struct ctf_fs_ds_file *ds_file,
+ struct ctf_fs_ds_file_info *file_info)
{
int ret;
struct ctf_fs_ds_index *index = NULL;
goto error;
}
+ /* Set path to stream file. */
+ index_entry->path = file_info->path->str;
+
ret = init_index_entry(index_entry, ds_file, &props,
current_packet_size_bytes, current_packet_offset_bytes);
if (ret) {
BT_HIDDEN
struct ctf_fs_ds_index *ctf_fs_ds_file_build_index(
- struct ctf_fs_ds_file *ds_file)
+ struct ctf_fs_ds_file *ds_file,
+ struct ctf_fs_ds_file_info *file_info)
{
struct ctf_fs_ds_index *index;
- index = build_index_from_idx_file(ds_file);
+ index = build_index_from_idx_file(ds_file, file_info);
if (index) {
goto end;
}
BT_COMP_LOGI("Failed to build index from .index file; "
"falling back to stream indexing.");
- index = build_index_from_stream_file(ds_file);
+ index = build_index_from_stream_file(ds_file, file_info);
end:
return index;
}
BT_HIDDEN
struct ctf_fs_ds_index *ctf_fs_ds_file_build_index(
- struct ctf_fs_ds_file *ds_file);
+ struct ctf_fs_ds_file *ds_file,
+ struct ctf_fs_ds_file_info *ds_file_info);
BT_HIDDEN
struct ctf_fs_ds_index *ctf_fs_ds_index_create(bt_logging_level log_level,
array_insert(ds_file_group->index->entries, entry, i);
}
-/*
- * Create a new ds_file_info using the provided path, begin_ns and index, then
- * add it to ds_file_group's list of ds_file_infos.
- */
-
-static
-int ctf_fs_ds_file_group_add_ds_file_info(
- struct ctf_fs_ds_file_group *ds_file_group,
- const char *path, int64_t begin_ns)
-{
- struct ctf_fs_ds_file_info *ds_file_info;
- int ret = 0;
-
- ds_file_info = ctf_fs_ds_file_info_create(path, begin_ns);
- if (!ds_file_info) {
- goto error;
- }
-
- ds_file_group_insert_ds_file_info_sorted(ds_file_group, ds_file_info);
-
- ds_file_info = NULL;
- goto end;
-
-error:
- ctf_fs_ds_file_info_destroy(ds_file_info);
- ret = -1;
-end:
- return ret;
-}
-
static
int add_ds_file_to_ds_file_group(struct ctf_fs_trace *ctf_fs_trace,
const char *path)
int ret;
size_t i;
struct ctf_fs_ds_file *ds_file = NULL;
+ struct ctf_fs_ds_file_info *ds_file_info = NULL;
struct ctf_fs_ds_index *index = NULL;
struct bt_msg_iter *msg_iter = NULL;
struct ctf_stream_class *sc = NULL;
}
}
- index = ctf_fs_ds_file_build_index(ds_file);
+ ds_file_info = ctf_fs_ds_file_info_create(path, begin_ns);
+ if (!ds_file_info) {
+ goto error;
+ }
+
+ index = ctf_fs_ds_file_build_index(ds_file, ds_file_info);
if (!index) {
BT_COMP_LOGW("Failed to index CTF stream file \'%s\'",
ds_file->file->path->str);
goto error;
}
- ret = ctf_fs_ds_file_group_add_ds_file_info(ds_file_group,
- path, begin_ns);
- if (ret) {
- goto error;
- }
+ ds_file_group_insert_ds_file_info_sorted(ds_file_group, ds_file_info);
add_group = true;
goto end;
add_group = true;
}
- ret = ctf_fs_ds_file_group_add_ds_file_info(ds_file_group, path,
- begin_ns);
- if (ret) {
- goto error;
- }
+ ds_file_group_insert_ds_file_info_sorted(ds_file_group, ds_file_info);
goto end;
};
struct ctf_fs_ds_index_entry {
+ /* Weak, belongs to ctf_fs_ds_file_info. */
+ const char *path;
+
/* Position, in bytes, of the packet from the beginning of the file. */
uint64_t offset;