Privatize struct bt_trace descriptor, move trace path
[babeltrace.git] / formats / ctf / ctf.c
index 786ba6fb120a9758570e74b1a0aa2ee50df06a4c..c3249a01775b9280d99936f7a6970a543fdcff24 100644 (file)
@@ -426,9 +426,9 @@ void ctf_print_discarded(FILE *fp, struct ctf_stream_definition *stream,
        }
        fprintf(fp, "] in trace UUID ");
        print_uuid(fp, stream->stream_class->trace->uuid);
-       if (stream->stream_class->trace->path[0])
+       if (stream->stream_class->trace->parent.path[0])
                fprintf(fp, ", at path: \"%s\"",
-                       stream->stream_class->trace->path);
+                       stream->stream_class->trace->parent.path);
 
        fprintf(fp, ", within stream id %" PRIu64, stream->stream_id);
        if (stream->path[0])
@@ -606,7 +606,8 @@ error:
        return ret;
 }
 
-int ctf_init_pos(struct ctf_stream_pos *pos, int fd, int open_flags)
+int ctf_init_pos(struct ctf_stream_pos *pos, struct bt_trace_descriptor *trace,
+               int fd, int open_flags)
 {
        pos->fd = fd;
        if (fd >= 0) {
@@ -624,12 +625,14 @@ int ctf_init_pos(struct ctf_stream_pos *pos, int fd, int open_flags)
                pos->flags = MAP_PRIVATE;
                pos->parent.rw_table = read_dispatch_table;
                pos->parent.event_cb = ctf_read_event;
+               pos->parent.trace = trace;
                break;
        case O_RDWR:
                pos->prot = PROT_WRITE; /* Write has priority */
                pos->flags = MAP_SHARED;
                pos->parent.rw_table = write_dispatch_table;
                pos->parent.event_cb = ctf_write_event;
+               pos->parent.trace = trace;
                if (fd >= 0)
                        ctf_packet_seek(&pos->parent, 0, SEEK_SET);     /* position for write */
                break;
@@ -1037,7 +1040,7 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp,
        buflen = strlen(*buf);
        if (!buflen) {
                *fp = NULL;
-               return -ENODATA;
+               return -ENOENT;
        }
        *fp = babeltrace_fmemopen(*buf, buflen, "rb");
        if (!*fp) {
@@ -1302,10 +1305,10 @@ int create_stream_one_packet_index(struct ctf_stream_pos *pos,
 {
        struct packet_index packet_index;
        struct ctf_stream_declaration *stream;
-       int len_index;
        uint64_t stream_id = 0;
+       uint64_t packet_map_len = DEFAULT_HEADER_LEN, tmp_map_len;
        int first_packet = 0;
-       size_t packet_map_len = DEFAULT_HEADER_LEN, tmp_map_len;
+       int len_index;
        int ret;
 
 begin:
@@ -1643,7 +1646,7 @@ int ctf_open_file_stream_read(struct ctf_trace *td, const char *path, int flags,
                goto error_def;
        }
 
-       ret = ctf_init_pos(&file_stream->pos, fd, flags);
+       ret = ctf_init_pos(&file_stream->pos, &td->parent, fd, flags);
        if (ret)
                goto error_def;
        ret = create_trace_definitions(td, &file_stream->parent);
@@ -1708,8 +1711,8 @@ int ctf_open_trace_read(struct ctf_trace *td,
                ret = -errno;
                goto error_dirfd;
        }
-       strncpy(td->path, path, sizeof(td->path));
-       td->path[sizeof(td->path) - 1] = '\0';
+       strncpy(td->parent.path, path, sizeof(td->parent.path));
+       td->parent.path[sizeof(td->parent.path) - 1] = '\0';
 
        /*
         * Keep the metadata file separate.
This page took 0.027881 seconds and 4 git commands to generate.