lttng: Add add-trigger command
[lttng-tools.git] / src / bin / lttng / lttng.c
index ecfea53ff4b36121c8f56b0747e66298968b57ba..e760bdbe1311b996ee3eb698adbf79c5e8754e80 100644 (file)
@@ -1,18 +1,8 @@
 /*
- * Copyright (c)  2011 David Goulet <david.goulet@polymtl.ca>
+ * Copyright (C) 2011 David Goulet <david.goulet@polymtl.ca>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2 only,
- * as published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #define _LGPL_SOURCE
@@ -32,6 +22,7 @@
 #include <common/utils.h>
 
 #include "command.h"
+#include "version.h"
 
 static const char *help_msg =
 #ifdef LTTNG_EMBED_HELP
@@ -42,7 +33,7 @@ NULL
 ;
 
 /* Variables */
-static char *progname;
+static const char *progname;
 int opt_no_sessiond;
 char *opt_sessiond_path;
 
@@ -74,7 +65,9 @@ static struct option long_options[] = {
 /* First level command */
 static struct cmd_struct commands[] =  {
        { "add-context", cmd_add_context},
+       { "add-trigger", cmd_add_trigger},
        { "create", cmd_create},
+       { "clear", cmd_clear},
        { "destroy", cmd_destroy},
        { "disable-channel", cmd_disable_channels},
        { "disable-event", cmd_disable_events},
@@ -84,6 +77,10 @@ static struct cmd_struct commands[] =  {
        { "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},
@@ -92,18 +89,17 @@ static struct cmd_struct commands[] =  {
        { "stop", cmd_stop},
        { "track", cmd_track},
        { "untrack", cmd_untrack},
-       { "help", NULL},
        { "version", cmd_version},
        { "view", cmd_view},
-       { "regenerate", cmd_regenerate},
        { NULL, NULL}   /* Array closure */
 };
 
 static void version(FILE *ofp)
 {
-       fprintf(ofp, "%s (LTTng Trace Control) " VERSION" - " VERSION_NAME "%s\n",
+       fprintf(ofp, "%s (LTTng Trace Control) " VERSION" - " VERSION_NAME "%s%s\n",
                        progname,
-                       GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION);
+                       GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION,
+                       EXTRA_VERSION_NAME[0] == '\0' ? "" : " - " EXTRA_VERSION_NAME);
 }
 
 /*
@@ -250,6 +246,23 @@ end:
        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]");
@@ -259,6 +272,7 @@ static void show_basic_help(void)
        puts("");
        puts("Tracing sessions:");
        puts("  create            " CONFIG_CMD_DESCR_CREATE);
+       puts("  clear             " CONFIG_CMD_DESCR_CLEAR);
        puts("  destroy           " CONFIG_CMD_DESCR_DESTROY);
        puts("  load              " CONFIG_CMD_DESCR_LOAD);
        puts("  regenerate        " CONFIG_CMD_DESCR_REGENERATE);
@@ -283,6 +297,11 @@ static void show_basic_help(void)
        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);
@@ -400,19 +419,19 @@ static int parse_args(int argc, char **argv)
        ret = handle_command(argc - optind, argv + optind);
        switch (ret) {
        case CMD_WARNING:
-               WARN("Some command(s) went wrong");
-               break;
        case CMD_ERROR:
-               ERR("Command error");
                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:
-               ERR("Fatal error");
-               break;
        case CMD_UNSUPPORTED:
-               ERR("Unsupported command");
                break;
        case -1:
                ret = 1;
This page took 0.025118 seconds and 4 git commands to generate.