X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=converter%2Fbabeltrace.c;h=56772674a8d8b629764a5b01e0ccdef49d295ad9;hp=11c10cf8aa488657ac9fae1fcd0ac9e98d01525e;hb=550cb17d6186e3e3ed2daa1616ceab3da2d86b5d;hpb=12c9c3bc9a8e6f1330f88691a3a8d9fb1f9d0ffa diff --git a/converter/babeltrace.c b/converter/babeltrace.c index 11c10cf8..56772674 100644 --- a/converter/babeltrace.c +++ b/converter/babeltrace.c @@ -355,6 +355,7 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, while ((node = fts_read(tree))) { int dirfd, metafd; + int closeret; if (!(node->fts_info & FTS_D)) continue; @@ -368,11 +369,13 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, } metafd = openat(dirfd, "metadata", O_RDONLY); if (metafd < 0) { - ret = close(dirfd); - if (ret < 0) { + closeret = close(dirfd); + if (closeret < 0) { perror("close"); goto error; } + ret = -1; + continue; } else { int trace_id; @@ -400,10 +403,15 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, } } - g_array_free(trace_ids, TRUE); - return ret; - error: + /* + * Return an error if no trace can be opened. + */ + if (ret == 0 && trace_ids->len == 0) { + fprintf(stderr, "[error] Cannot open any trace for reading.\n\n"); + ret = -ENOENT; + } + g_array_free(trace_ids, TRUE); return ret; }