Improve error handling of lttng cli
[lttng-tools.git] / src / bin / lttng / commands / stop.c
index 82c9b4e13fb03baea2a3eff5146902ffbe60ddd3..f2ab453084f489cd38fe3cf2812a92278a05e296 100644 (file)
@@ -61,7 +61,7 @@ static void usage(FILE *ofp)
  */
 static int stop_tracing(void)
 {
-       int ret = CMD_SUCCESS;
+       int ret;
        char *session_name;
 
        if (opt_session_name == NULL) {
@@ -76,9 +76,12 @@ static int stop_tracing(void)
 
        ret = lttng_stop_tracing(session_name);
        if (ret < 0) {
+               /* Don't set ret so lttng can interpret the sessiond error. */
                goto free_name;
        }
 
+       ret = CMD_SUCCESS;
+
        MSG("Tracing stopped for session %s", session_name);
 
 free_name:
@@ -97,7 +100,7 @@ error:
  */
 int cmd_stop(int argc, const char **argv)
 {
-       int opt, ret;
+       int opt, ret = CMD_SUCCESS;
        static poptContext pc;
 
        pc = poptGetContext(NULL, argc, argv, long_options, 0);
@@ -106,12 +109,10 @@ int cmd_stop(int argc, const char **argv)
        while ((opt = poptGetNextOpt(pc)) != -1) {
                switch (opt) {
                case OPT_HELP:
-                       usage(stderr);
-                       ret = CMD_SUCCESS;
+                       usage(stdout);
                        goto end;
                case OPT_LIST_OPTIONS:
                        list_cmd_options(stdout, long_options);
-                       ret = CMD_SUCCESS;
                        goto end;
                default:
                        usage(stderr);
@@ -125,5 +126,6 @@ int cmd_stop(int argc, const char **argv)
        ret = stop_tracing();
 
 end:
+       poptFreeContext(pc);
        return ret;
 }
This page took 0.023365 seconds and 4 git commands to generate.