From 1059a2bfb89dfcdea336d7fdd5ef9bbdf552f3f2 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Thu, 16 Feb 2012 13:13:50 -0500 Subject: [PATCH] API : add_trace return the trace_handle id Signed-off-by: Julien Desfossez Signed-off-by: Mathieu Desnoyers --- include/babeltrace/context.h | 3 ++- lib/context.c | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/babeltrace/context.h b/include/babeltrace/context.h index 32282cf4..261c4d47 100644 --- a/include/babeltrace/context.h +++ b/include/babeltrace/context.h @@ -41,7 +41,8 @@ struct bt_context *bt_context_create(void); * * Open a trace * - * Return: 0 on success, nonzero on failure. + * Return: the trace handle id (>= 0) on success, a negative + * value on error. */ int bt_context_add_trace(struct bt_context *ctx, const char *path, const char *format); diff --git a/lib/context.c b/lib/context.c index 5408bc81..90d77df8 100644 --- a/lib/context.c +++ b/lib/context.c @@ -62,6 +62,7 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, struct trace_descriptor *td; struct format *fmt; struct bt_trace_handle *handle; + int ret; fmt = bt_lookup_format(g_quark_from_string(format_str)); td = fmt->open_trace(path, O_RDONLY, @@ -69,7 +70,8 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, if (!td) { fprintf(stderr, "[error] [Context] Cannot open_trace of the format %s .\n\n", path); - return -1; + ret = -1; + goto end; } /* Create an handle for the trace */ @@ -77,7 +79,8 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, if (handle < 0) { fprintf(stderr, "[error] [Context] Creating trace handle %s .\n\n", path); - return -1; + ret = -1; + goto end; } handle->format = fmt; handle->td = td; @@ -88,7 +91,11 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, g_hash_table_insert(ctx->trace_handles, (gpointer) (unsigned long) handle->id, handle); - return trace_collection_add(ctx->tc, td); + ret = trace_collection_add(ctx->tc, td); + if (ret == 0) + return handle->id; +end: + return ret; } void bt_context_remove_trace(struct bt_context *ctx, int handle_id) -- 2.34.1