Fix multi-packet packet-based metadata
[babeltrace.git] / formats / ctf / ctf.c
index 7c354bf0a40710a9eed836226d6bb273f94b2148..13c87eae176651fe97b1fd0c25d3871e5f02f6a4 100644 (file)
@@ -410,7 +410,7 @@ int ctf_open_trace_metadata_packet_read(struct ctf_trace *td, FILE *in,
        char buf[4096];
        int ret = 0;
 
-       readlen = fread(&header, sizeof(header), 1, in);
+       readlen = fread(&header, header_sizeof(header), 1, in);
        if (readlen < 1)
                return -EINVAL;
 
@@ -465,11 +465,7 @@ int ctf_open_trace_metadata_packet_read(struct ctf_trace *td, FILE *in,
                }
                toread -= readlen;
                if (!toread) {
-                       ret = -EOF;
-                       break;
-               }
-               if (feof(in)) {
-                       ret = -EINVAL;
+                       ret = 0;        /* continue reading next packet */
                        break;
                }
        }
@@ -491,10 +487,11 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp,
 
        for (;;) {
                ret = ctf_open_trace_metadata_packet_read(td, in, out);
-               if (ret == -EOF) {
-                       ret = 0;
+               if (ret) {
                        break;
-               } else if (ret) {
+               }
+               if (feof(in)) {
+                       ret = 0;
                        break;
                }
        }
This page took 0.023282 seconds and 4 git commands to generate.