Fix: put explicit error messages and warnings when opening a trace
[babeltrace.git] / formats / ctf / ctf.c
index 32206166b2a2c43a637dbf7e0e36489d297bd0da..15dd3f1e07ab2691379539a72f6261867b8a3374 100644 (file)
@@ -983,7 +983,8 @@ end:
        ctf_scanner_free(scanner);
 end_scanner_alloc:
 end_packet_read:
-       fclose(fp);
+       if (fp)
+               fclose(fp);
        free(buf);
 end_stream:
        close(metadata_stream->pos.fd);
@@ -1425,14 +1426,14 @@ int ctf_open_trace_read(struct ctf_trace *td,
        /* Open trace directory */
        td->dir = opendir(path);
        if (!td->dir) {
-               fprintf(stderr, "[error] Unable to open trace directory.\n");
+               fprintf(stderr, "[error] Unable to open trace directory \"%s\".\n", path);
                ret = -ENOENT;
                goto error;
        }
 
        td->dirfd = open(path, 0);
        if (td->dirfd < 0) {
-               fprintf(stderr, "[error] Unable to open trace directory file descriptor.\n");
+               fprintf(stderr, "[error] Unable to open trace directory file descriptor for path \"%s\".\n", path);
                perror("Trace directory open");
                ret = -errno;
                goto error_dirfd;
@@ -1446,6 +1447,7 @@ int ctf_open_trace_read(struct ctf_trace *td,
 
        ret = ctf_open_trace_metadata_read(td, packet_seek, metadata_fp);
        if (ret) {
+               fprintf(stderr, "[warning] Unable to open trace metadata for path \"%s\".\n", path);
                goto error_metadata;
        }
 
@@ -1718,6 +1720,18 @@ void ctf_close_trace(struct trace_descriptor *tdp)
                        struct bt_ctf_event_decl *event;
 
                        event = g_ptr_array_index(td->event_declarations, i);
+                       if (event->context_decl)
+                               g_ptr_array_free(event->context_decl, TRUE);
+                       if (event->fields_decl)
+                               g_ptr_array_free(event->fields_decl, TRUE);
+                       if (event->packet_header_decl)
+                               g_ptr_array_free(event->packet_header_decl, TRUE);
+                       if (event->event_context_decl)
+                               g_ptr_array_free(event->event_context_decl, TRUE);
+                       if (event->event_header_decl)
+                               g_ptr_array_free(event->event_header_decl, TRUE);
+                       if (event->packet_context_decl)
+                               g_ptr_array_free(event->packet_context_decl, TRUE);
                        g_free(event);
                }
                g_ptr_array_free(td->event_declarations, TRUE);
This page took 0.024496 seconds and 4 git commands to generate.