X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=converter%2Fbabeltrace-log.c;h=8d425be65f9615882ae3ee6d240d1609eca751f2;hp=9d87776a8f361ade58a7557215d99fe8a56916fd;hb=08c82b90d94a6dfee1f3da4ec06864c6045c07f7;hpb=a7af71619e2ca1e763d90a8156fe4206c012d8cc diff --git a/converter/babeltrace-log.c b/converter/babeltrace-log.c index 9d87776a..8d425be6 100644 --- a/converter/babeltrace-log.c +++ b/converter/babeltrace-log.c @@ -164,13 +164,14 @@ void write_event_header(struct ctf_stream_pos *pos, char *line, uint64_t *ts) { unsigned long sec, usec; - int ret; if (!s_timestamp) return; /* Only need to be executed on first pass (dummy) */ if (pos->dummy) { + int ret; + /* Extract time from input line */ ret = sscanf(line, "[%lu.%lu] ", &sec, &usec); if (ret == 2) { @@ -201,21 +202,25 @@ void trace_string(char *line, struct ctf_stream_pos *pos, size_t len) uint64_t ts = 0; printf_debug("read: %s\n", line); -retry: - ctf_dummy_pos(pos, &dummy); - write_event_header(&dummy, line, &tline, len, &tlen, &ts); - ctf_align_pos(&dummy, sizeof(uint8_t) * CHAR_BIT); - ctf_move_pos(&dummy, tlen * CHAR_BIT); - if (ctf_pos_packet(&dummy)) { - ctf_pos_pad_packet(pos); - write_packet_header(pos, s_uuid); - write_packet_context(pos); - if (attempt++ == 1) { - fprintf(stderr, "[Error] Line too large for packet size (%" PRIu64 "kB) (discarded)\n", - pos->packet_size / CHAR_BIT / 1024); - return; + + for (;;) { + ctf_dummy_pos(pos, &dummy); + write_event_header(&dummy, line, &tline, len, &tlen, &ts); + ctf_align_pos(&dummy, sizeof(uint8_t) * CHAR_BIT); + ctf_move_pos(&dummy, tlen * CHAR_BIT); + if (ctf_pos_packet(&dummy)) { + ctf_pos_pad_packet(pos); + write_packet_header(pos, s_uuid); + write_packet_context(pos); + if (attempt++ == 1) { + fprintf(stderr, "[Error] Line too large for packet size (%" PRIu64 "kB) (discarded)\n", + pos->packet_size / CHAR_BIT / 1024); + return; + } + continue; + } else { + break; } - goto retry; } write_event_header(pos, line, &tline, len, &tlen, &ts);