X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=converter%2Fbabeltrace-lib.c;h=35f50719359c527f6db230bd05739b0b71727d8f;hp=51011e1d2906de9e55440f4c101b4e8c5c3b2ac9;hb=b38819fce90ca2303e3e615e40dd0379096ff7a0;hpb=c5e74408f9786219f6b44400dcf2098ab9cc78fb diff --git a/converter/babeltrace-lib.c b/converter/babeltrace-lib.c index 51011e1d..35f50719 100644 --- a/converter/babeltrace-lib.c +++ b/converter/babeltrace-lib.c @@ -36,8 +36,8 @@ int convert_event(struct ctf_text_stream_pos *sout, int len_index; int ret; - if (sin->pos.offset == -EOF) - return -EOF; + if (sin->pos.offset == EOF) + return EOF; /* Hide event payload struct brackets */ sout->depth = -1; @@ -46,7 +46,7 @@ int convert_event(struct ctf_text_stream_pos *sout, if (stream_class->event_header) { ret = generic_rw(&sin->pos.parent, &stream_class->event_header->p); if (ret) - return ret; + goto error; /* lookup event id */ len_index = struct_declaration_lookup_field_index(stream_class->event_header_decl, g_quark_from_static_string("id")); @@ -63,17 +63,17 @@ int convert_event(struct ctf_text_stream_pos *sout, ret = generic_rw(&sout->parent, &stream_class->event_header->p); if (ret) - return ret; + goto error; } /* Read and print stream-declared event context */ if (stream_class->event_context) { ret = generic_rw(&sin->pos.parent, &stream_class->event_context->p); if (ret) - return ret; + goto error; ret = generic_rw(&sout->parent, &stream_class->event_context->p); if (ret) - return ret; + goto error; } if (id >= stream_class->events_by_id->len) { @@ -90,23 +90,27 @@ int convert_event(struct ctf_text_stream_pos *sout, if (event_class->context) { ret = generic_rw(&sin->pos.parent, &event_class->context->p); if (ret) - return ret; + goto error; ret = generic_rw(&sout->parent, &event_class->context->p); if (ret) - return ret; + goto error; } /* Read and print event payload */ if (event_class->fields) { ret = generic_rw(&sin->pos.parent, &event_class->fields->p); if (ret) - return ret; + goto error; ret = generic_rw(&sout->parent, &event_class->fields->p); if (ret) - return ret; + goto error; } return 0; + +error: + fprintf(stdout, "[error] Unexpected end of stream. Either the trace data stream is corrupted or metadata description does not match data layout.\n"); + return ret; } static @@ -119,7 +123,7 @@ int convert_stream(struct ctf_text_stream_pos *sout, /* TODO: order events by timestamps across streams */ for (;;) { ret = convert_event(sout, sin); - if (ret == -EOF) + if (ret == EOF) break; else if (ret) { fprintf(stdout, "[error] Printing event failed.\n");