Fix: missing mentions of tracing session rotation in basic help
[lttng-tools.git] / src / bin / lttng / lttng.c
index 34816be561afcc5f8b431d124383b786aec6fcc8..aaee5a25d243d4c828d4f82434cd508a8a0e80d0 100644 (file)
 #include <common/utils.h>
 
 #include "command.h"
 #include <common/utils.h>
 
 #include "command.h"
+#include "version.h"
+
+static const char *help_msg =
+#ifdef LTTNG_EMBED_HELP
+#include <lttng.1.h>
+#else
+NULL
+#endif
+;
 
 /* Variables */
 static char *progname;
 
 /* Variables */
 static char *progname;
@@ -66,7 +75,6 @@ static struct option long_options[] = {
 /* First level command */
 static struct cmd_struct commands[] =  {
        { "add-context", cmd_add_context},
 /* First level command */
 static struct cmd_struct commands[] =  {
        { "add-context", cmd_add_context},
-       { "calibrate", cmd_calibrate},
        { "create", cmd_create},
        { "destroy", cmd_destroy},
        { "disable-channel", cmd_disable_channels},
        { "create", cmd_create},
        { "destroy", cmd_destroy},
        { "disable-channel", cmd_disable_channels},
@@ -77,6 +85,10 @@ static struct cmd_struct commands[] =  {
        { "list", cmd_list},
        { "load", cmd_load},
        { "metadata", cmd_metadata},
        { "list", cmd_list},
        { "load", cmd_load},
        { "metadata", cmd_metadata},
+       { "regenerate", cmd_regenerate},
+       { "rotate", cmd_rotate},
+       { "enable-rotation", cmd_enable_rotation},
+       { "disable-rotation", cmd_disable_rotation},
        { "save", cmd_save},
        { "set-session", cmd_set_session},
        { "snapshot", cmd_snapshot},
        { "save", cmd_save},
        { "set-session", cmd_set_session},
        { "snapshot", cmd_snapshot},
@@ -85,10 +97,8 @@ static struct cmd_struct commands[] =  {
        { "stop", cmd_stop},
        { "track", cmd_track},
        { "untrack", cmd_untrack},
        { "stop", cmd_stop},
        { "track", cmd_track},
        { "untrack", cmd_untrack},
-       { "help", NULL},
        { "version", cmd_version},
        { "view", cmd_view},
        { "version", cmd_version},
        { "view", cmd_view},
-       { "regenerate", cmd_regenerate},
        { NULL, NULL}   /* Array closure */
 };
 
        { NULL, NULL}   /* Array closure */
 };
 
@@ -243,6 +253,23 @@ end:
        return ret;
 }
 
        return ret;
 }
 
+static bool command_exists(const char *command)
+{
+       const struct cmd_struct *cmd = commands;
+       bool exists = false;
+
+       while (cmd->name != NULL) {
+               if (!strcmp(command, cmd->name)) {
+                       exists = true;
+                       goto end;
+               }
+               cmd++;
+       }
+
+end:
+       return exists;
+}
+
 static void show_basic_help(void)
 {
        puts("Usage: lttng [--group=GROUP] [--mi=TYPE] [--no-sessiond | --sessiond-path=PATH]");
 static void show_basic_help(void)
 {
        puts("Usage: lttng [--group=GROUP] [--mi=TYPE] [--no-sessiond | --sessiond-path=PATH]");
@@ -254,7 +281,7 @@ static void show_basic_help(void)
        puts("  create            " CONFIG_CMD_DESCR_CREATE);
        puts("  destroy           " CONFIG_CMD_DESCR_DESTROY);
        puts("  load              " CONFIG_CMD_DESCR_LOAD);
        puts("  create            " CONFIG_CMD_DESCR_CREATE);
        puts("  destroy           " CONFIG_CMD_DESCR_DESTROY);
        puts("  load              " CONFIG_CMD_DESCR_LOAD);
-       puts("  metadata          " CONFIG_CMD_DESCR_METADATA);
+       puts("  regenerate        " CONFIG_CMD_DESCR_REGENERATE);
        puts("  save              " CONFIG_CMD_DESCR_SAVE);
        puts("  set-session       " CONFIG_CMD_DESCR_SET_SESSION);
        puts("");
        puts("  save              " CONFIG_CMD_DESCR_SAVE);
        puts("  set-session       " CONFIG_CMD_DESCR_SET_SESSION);
        puts("");
@@ -276,12 +303,16 @@ static void show_basic_help(void)
        puts("  start             " CONFIG_CMD_DESCR_START);
        puts("  stop              " CONFIG_CMD_DESCR_STOP);
        puts("");
        puts("  start             " CONFIG_CMD_DESCR_START);
        puts("  stop              " CONFIG_CMD_DESCR_STOP);
        puts("");
+       puts("Tracing session rotation:");
+       puts("  disable-rotation  " CONFIG_CMD_DESCR_DISABLE_ROTATION);
+       puts("  enable-rotation   " CONFIG_CMD_DESCR_ENABLE_ROTATION);
+       puts("  rotate            " CONFIG_CMD_DESCR_ROTATE);
+       puts("");
        puts("Resource tracking:");
        puts("  track             " CONFIG_CMD_DESCR_TRACK);
        puts("  untrack           " CONFIG_CMD_DESCR_UNTRACK);
        puts("");
        puts("Miscellaneous:");
        puts("Resource tracking:");
        puts("  track             " CONFIG_CMD_DESCR_TRACK);
        puts("  untrack           " CONFIG_CMD_DESCR_UNTRACK);
        puts("");
        puts("Miscellaneous:");
-       puts("  calibrate         " CONFIG_CMD_DESCR_CALIBRATE);
        puts("  help              " CONFIG_CMD_DESCR_HELP);
        puts("  version           " CONFIG_CMD_DESCR_VERSION);
        puts("  view              " CONFIG_CMD_DESCR_VIEW);
        puts("  help              " CONFIG_CMD_DESCR_HELP);
        puts("  version           " CONFIG_CMD_DESCR_VERSION);
        puts("  view              " CONFIG_CMD_DESCR_VIEW);
@@ -300,7 +331,6 @@ static void show_basic_help(void)
 static int parse_args(int argc, char **argv)
 {
        int opt, ret;
 static int parse_args(int argc, char **argv)
 {
        int opt, ret;
-       char *user;
 
        if (lttng_is_setuid_setgid()) {
                ERR("'%s' is not allowed to be executed as a setuid/setgid binary for security reasons. Aborting.", argv[0]);
 
        if (lttng_is_setuid_setgid()) {
                ERR("'%s' is not allowed to be executed as a setuid/setgid binary for security reasons. Aborting.", argv[0]);
@@ -319,10 +349,9 @@ static int parse_args(int argc, char **argv)
                        ret = 0;
                        goto end;
                case 'h':
                        ret = 0;
                        goto end;
                case 'h':
-                       ret = utils_show_man_page(1, "lttng");
-
+                       ret = utils_show_help(1, "lttng", help_msg);
                        if (ret) {
                        if (ret) {
-                               ERR("Cannot view man page lttng(1)");
+                               ERR("Cannot show --help for `lttng`");
                                perror("exec");
                        }
                        goto end;
                                perror("exec");
                        }
                        goto end;
@@ -389,14 +418,6 @@ static int parse_args(int argc, char **argv)
                goto error;
        }
 
                goto error;
        }
 
-       /* For Mathieu Desnoyers a.k.a. Dr. Tracing */
-       user = getenv("USER");
-       if (user != NULL && ((strncmp(progname, "drtrace", 7) == 0 ||
-                                       strncmp("compudj", user, 7) == 0))) {
-               MSG("%c[%d;%dmWelcome back Dr Tracing!%c[%dm\n", 27,1,33,27,0);
-       }
-       /* Thanks Mathieu */
-
        /*
         * Handle leftovers which is a first level command with the trailing
         * options.
        /*
         * Handle leftovers which is a first level command with the trailing
         * options.
@@ -404,19 +425,19 @@ static int parse_args(int argc, char **argv)
        ret = handle_command(argc - optind, argv + optind);
        switch (ret) {
        case CMD_WARNING:
        ret = handle_command(argc - optind, argv + optind);
        switch (ret) {
        case CMD_WARNING:
-               WARN("Some command(s) went wrong");
-               break;
        case CMD_ERROR:
        case CMD_ERROR:
-               ERR("Command error");
                break;
        case CMD_UNDEFINED:
                break;
        case CMD_UNDEFINED:
-               ERR("Undefined command or invalid arguments");
+               if (!command_exists(*(argv + optind))) {
+                       MSG("lttng: %s is not an lttng command. See 'lttng --help'.",
+                                       *(argv + optind));
+               } else {
+                       ERR("Unrecognized argument used with \'%s\' command",
+                                       *(argv + optind));
+               }
                break;
        case CMD_FATAL:
                break;
        case CMD_FATAL:
-               ERR("Fatal error");
-               break;
        case CMD_UNSUPPORTED:
        case CMD_UNSUPPORTED:
-               ERR("Unsupported command");
                break;
        case -1:
                ret = 1;
                break;
        case -1:
                ret = 1;
This page took 0.026591 seconds and 5 git commands to generate.