X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Flttng.c;h=e5642e24cd5796242cba82d796bd975f43087250;hp=bf2128ca35896dbbc998ecadf125e7eb4774ed6d;hb=0de2479d5f5a287d31c69e34ea5202a69019f224;hpb=7712f784d95ae23c57e0f373ecf5b8b4be7bf1aa diff --git a/src/bin/lttng/lttng.c b/src/bin/lttng/lttng.c index bf2128ca3..e5642e24c 100644 --- a/src/bin/lttng/lttng.c +++ b/src/bin/lttng/lttng.c @@ -1,18 +1,8 @@ /* - * Copyright (c) 2011 David Goulet + * Copyright (C) 2011 David Goulet * - * 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 #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}, @@ -82,9 +75,13 @@ static struct cmd_struct commands[] = { { "enable-event", cmd_enable_events}, { "help", NULL}, { "list", cmd_list}, + { "list-triggers", cmd_list_triggers}, { "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}, @@ -100,9 +97,10 @@ static struct cmd_struct commands[] = { 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); } /* @@ -249,6 +247,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]"); @@ -258,6 +273,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); @@ -282,6 +298,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); @@ -399,19 +420,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;