From 6a556f7b1ed1560da4e4e190ef6989670ddb8938 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 10 Jul 2014 14:24:59 -0400 Subject: [PATCH] Fix: logger name dropped from filter condition when loglevels are used MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This fix ensures that the loglevel expression is appended to the filter expression and does not overwrite the current one. Signed-off-by: Jérémie Galarneau Signed-off-by: David Goulet --- src/lib/lttng-ctl/lttng-ctl.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index d2f6799e1..01572dc94 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -710,7 +710,7 @@ static char *set_jul_filter(const char *filter, struct lttng_event *ev) } if (err < 0) { PERROR("asprintf"); - goto end; + goto error; } } @@ -724,23 +724,30 @@ static char *set_jul_filter(const char *filter, struct lttng_event *ev) op = "=="; } - if (filter) { - err = asprintf(&jul_filter, "%s && int_loglevel %s %d", filter, op, + if (filter || jul_filter) { + char *new_filter; + + err = asprintf(&new_filter, "%s && int_loglevel %s %d", + jul_filter ? jul_filter : filter, op, ev->loglevel); + if (jul_filter) { + free(jul_filter); + } + jul_filter = new_filter; } else { err = asprintf(&jul_filter, "int_loglevel %s %d", op, ev->loglevel); } if (err < 0) { PERROR("asprintf"); - free(jul_filter); - jul_filter = NULL; - goto end; + goto error; } } -end: return jul_filter; +error: + free(jul_filter); + return NULL; } /* -- 2.34.1