Fix: Returned code when listing kernel channel
authorDavid Goulet <dgoulet@efficios.com>
Mon, 24 Sep 2012 21:40:36 +0000 (17:40 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Mon, 24 Sep 2012 21:40:36 +0000 (17:40 -0400)
Backported from master branch.

See bug #260.

Signed-off-by: David Goulet <dgoulet@efficios.com>
src/bin/lttng-sessiond/main.c
src/bin/lttng/commands/list.c

index d29de9d459fd6b3fbd0325ecf04111fbbbf10aae..d735be833f4064e88d0cd801a45c6d781d618c55 100644 (file)
@@ -3226,6 +3226,9 @@ static ssize_t cmd_list_channels(int domain, struct ltt_session *session,
                        nb_chan = session->kernel_session->channel_count;
                }
                DBG3("Number of kernel channels %zd", nb_chan);
+               if (nb_chan <= 0) {
+                       ret = LTTCOMM_KERN_CHAN_NOT_FOUND;
+               }
                break;
        case LTTNG_DOMAIN_UST:
                if (session->ust_session != NULL) {
@@ -3233,6 +3236,9 @@ static ssize_t cmd_list_channels(int domain, struct ltt_session *session,
                                        session->ust_session->domain_global.channels);
                }
                DBG3("Number of UST global channels %zd", nb_chan);
+               if (nb_chan <= 0) {
+                       ret = LTTCOMM_UST_CHAN_NOT_FOUND;
+               }
                break;
        default:
                *channels = NULL;
@@ -3250,6 +3256,8 @@ static ssize_t cmd_list_channels(int domain, struct ltt_session *session,
                list_lttng_channels(domain, session, *channels);
        } else {
                *channels = NULL;
+               /* Ret value was set in the domain switch case */
+               goto error;
        }
 
        return nb_chan;
index 50d6114c3d166be10483b71974b6418cf6152494..71843fdab9ee6d07f50358a3d0f24006e2444b7b 100644 (file)
@@ -25,6 +25,8 @@
 
 #include "../command.h"
 
+#include <common/sessiond-comm/sessiond-comm.h>
+
 static int opt_userspace;
 static int opt_kernel;
 static char *opt_channel;
@@ -412,11 +414,21 @@ static int list_channels(const char *channel_name)
 
        count = lttng_list_channels(handle, &channels);
        if (count < 0) {
-               ret = count;
+               switch (-count) {
+               case LTTCOMM_KERN_CHAN_NOT_FOUND:
+                       ret = CMD_SUCCESS;
+                       WARN("No kernel channel");
+                       break;
+               case LTTCOMM_UST_CHAN_NOT_FOUND:
+                       ret = CMD_SUCCESS;
+                       WARN("No UST channel");
+                       break;
+               default:
+                       /* We had a real error */
+                       ret = count;
+                       ERR("%s", lttng_strerror(ret));
+               }
                goto error_channels;
-       } else if (count == 0) {
-               ERR("Channel %s not found", channel_name);
-               goto error;
        }
 
        if (channel_name == NULL) {
This page took 0.029364 seconds and 4 git commands to generate.