X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=converter%2Fbabeltrace.c;h=c521ac1516c459641b24ec476f4c425ad09fcfe4;hp=10083516823dff0f39445e345fbd510566282564;hb=37566b71e5598181de2ecdb390a8cab19786f4e1;hpb=fd94f11cb83df9a8c764c41c28f552de7d8b14e0 diff --git a/converter/babeltrace.c b/converter/babeltrace.c index 10083516..c521ac15 100644 --- a/converter/babeltrace.c +++ b/converter/babeltrace.c @@ -26,8 +26,6 @@ * SOFTWARE. */ -#define _GNU_SOURCE -#include #include #include #include @@ -57,6 +55,10 @@ #define DEFAULT_FILE_ARRAY_SIZE 1 +#define NET_URL_PREFIX "net://" +#define NET4_URL_PREFIX "net4://" +#define NET6_URL_PREFIX "net6://" + static char *opt_input_format, *opt_output_format; /* @@ -451,15 +453,20 @@ static int traverse_trace_dir(const char *fpath, const struct stat *sb, /* No meta data, just return */ return 0; } else { + int err_close = 0; + closeret = close(metafd); if (closeret < 0) { perror("close"); - return -1; /* failure */ + err_close = 1; } closeret = close(dirfd); if (closeret < 0) { perror("close"); - return -1; /* failure */ + err_close = 1; + } + if (err_close) { + return -1; } /* Add path to the global list */ @@ -492,6 +499,17 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, { int ret = 0, trace_ids = 0; + if ((strncmp(path, NET4_URL_PREFIX, sizeof(NET4_URL_PREFIX) - 1)) == 0 || + (strncmp(path, NET6_URL_PREFIX, sizeof(NET6_URL_PREFIX) - 1)) == 0 || + (strncmp(path, NET_URL_PREFIX, sizeof(NET_URL_PREFIX) - 1)) == 0) { + ret = bt_context_add_trace(ctx, + path, format_str, packet_seek, NULL, NULL); + if (ret < 0) { + fprintf(stderr, "[warning] [Context] cannot open trace \"%s\" " + "for reading.\n", path); + } + return ret; + } /* Should lock traversed_paths mutex here if used in multithread */ traversed_paths = g_ptr_array_new(); @@ -692,7 +710,7 @@ int main(int argc, char **argv) } } fmt_read = bt_lookup_format(g_quark_from_static_string(opt_input_format)); - if (!fmt_read || fmt_read->name != g_quark_from_static_string("ctf")) { + if (!fmt_read) { fprintf(stderr, "[error] Format \"%s\" is not supported.\n\n", opt_input_format); partial_error = 1; @@ -752,10 +770,13 @@ int main(int argc, char **argv) goto error_copy_trace; } - ret = convert_trace(td_write, ctx); - if (ret) { - fprintf(stderr, "Error printing trace.\n\n"); - goto error_copy_trace; + /* For now, we support only CTF iterators */ + if (fmt_read->name == g_quark_from_static_string("ctf")) { + ret = convert_trace(td_write, ctx); + if (ret) { + fprintf(stderr, "Error printing trace.\n\n"); + goto error_copy_trace; + } } ret = trace_post_handler(td_write, ctx);