From ff7ef7b8297ae2e3aa6451a0045d657d91aec7be Mon Sep 17 00:00:00 2001 From: David Goulet Date: Mon, 24 Sep 2012 13:24:48 -0400 Subject: [PATCH] Fix: lttng_set_event_filter() was returning bad error code Change the API call to return a lttng-error.h code. Also change the already enable filter message from an ERR() to a WARN(). On error, the lttng UI now prints the returned error from the API call. Signed-off-by: David Goulet --- src/bin/lttng/commands/enable_events.c | 10 ++++++++-- src/lib/lttng-ctl/lttng-ctl.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/bin/lttng/commands/enable_events.c b/src/bin/lttng/commands/enable_events.c index 9a4b9aac9..0bd96eb30 100644 --- a/src/bin/lttng/commands/enable_events.c +++ b/src/bin/lttng/commands/enable_events.c @@ -422,10 +422,13 @@ static int enable_events(char *session_name) if (ret < 0) { switch (-ret) { case LTTNG_ERR_FILTER_EXIST: - ERR("Filter on events is already enabled" + WARN("Filter on events is already enabled" " (channel %s, session %s)", channel_name, session_name); break; + case LTTNG_ERR_FILTER_INVAL: + case LTTNG_ERR_FILTER_NOMEM: + ERR("%s", lttng_strerror(ret)); default: ERR("Setting filter: '%s'", opt_filter); /* @@ -579,10 +582,13 @@ static int enable_events(char *session_name) if (ret < 0) { switch (-ret) { case LTTNG_ERR_FILTER_EXIST: - ERR("Filter on event %s is already enabled" + WARN("Filter on event %s is already enabled" " (channel %s, session %s)", event_name, channel_name, session_name); break; + case LTTNG_ERR_FILTER_INVAL: + case LTTNG_ERR_FILTER_NOMEM: + ERR("%s", lttng_strerror(ret)); default: ERR("Setting filter for event %s: '%s'", ev.name, opt_filter); diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 27d69089f..e4560bb7f 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -782,24 +782,24 @@ int lttng_set_event_filter(struct lttng_handle *handle, strlen(filter_expression), "r"); if (!fmem) { fprintf(stderr, "Error opening memory as stream\n"); - return -ENOMEM; + return -LTTNG_ERR_FILTER_NOMEM; } ctx = filter_parser_ctx_alloc(fmem); if (!ctx) { fprintf(stderr, "Error allocating parser\n"); - ret = -ENOMEM; + ret = -LTTNG_ERR_FILTER_NOMEM; goto alloc_error; } ret = filter_parser_ctx_append_ast(ctx); if (ret) { fprintf(stderr, "Parse error\n"); - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } ret = filter_visitor_set_parent(ctx); if (ret) { fprintf(stderr, "Set parent error\n"); - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } if (print_xml) { @@ -807,7 +807,7 @@ int lttng_set_event_filter(struct lttng_handle *handle, if (ret) { fflush(stdout); fprintf(stderr, "XML print error\n"); - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } } @@ -817,7 +817,7 @@ int lttng_set_event_filter(struct lttng_handle *handle, ret = filter_visitor_ir_generate(ctx); if (ret) { fprintf(stderr, "Generate IR error\n"); - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } dbg_printf("done\n"); @@ -826,7 +826,7 @@ int lttng_set_event_filter(struct lttng_handle *handle, fflush(stdout); ret = filter_visitor_ir_check_binary_op_nesting(ctx); if (ret) { - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } dbg_printf("done\n"); @@ -836,7 +836,7 @@ int lttng_set_event_filter(struct lttng_handle *handle, ret = filter_visitor_bytecode_generate(ctx); if (ret) { fprintf(stderr, "Generate bytecode error\n"); - ret = -EINVAL; + ret = -LTTNG_ERR_FILTER_INVAL; goto parse_error; } dbg_printf("done\n"); -- 2.34.1