X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommand.h;h=bf004521003787acb910b9d29ea3a1b519c9af9a;hp=27de0d5a0f1c61b9218c98b2a5e3d356b1612a50;hb=2463b7879c00298daa79744cdaae82ac061a4ed8;hpb=0cd3b1d4a59305a7efb608605d2e74c0ea347383 diff --git a/src/bin/lttng/command.h b/src/bin/lttng/command.h index 27de0d5a0..bf0045210 100644 --- a/src/bin/lttng/command.h +++ b/src/bin/lttng/command.h @@ -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. */ #ifndef _LTTNG_CMD_H @@ -25,12 +15,34 @@ #include "conf.h" #include "utils.h" +#define DECL_COMMAND(_name) \ + extern int cmd_##_name(int, const char **) + +#ifdef LTTNG_EMBED_HELP +# define HELP_MSG_NAME help_msg +# define SHOW_HELP_ERROR_LINE ERR("Cannot show --help for `lttng-%s`", argv[0]); +#else +# define HELP_MSG_NAME NULL +# define SHOW_HELP_ERROR_LINE ; +#endif + +#define SHOW_HELP() \ + do { \ + ret = show_cmd_help(argv[0], HELP_MSG_NAME); \ + \ + if (ret) { \ + SHOW_HELP_ERROR_LINE \ + ret = CMD_ERROR; \ + } \ + } while (0) + enum cmd_error_code { CMD_SUCCESS = 0, CMD_ERROR, CMD_UNDEFINED, CMD_FATAL, CMD_WARNING, + CMD_UNSUPPORTED, }; struct cmd_struct { @@ -38,19 +50,38 @@ struct cmd_struct { int (*func)(int argc, const char **argv); }; -extern int cmd_list(int argc, const char **argv); -extern int cmd_create(int argc, const char **argv); -extern int cmd_destroy(int argc, const char **argv); -extern int cmd_start(int argc, const char **argv); -extern int cmd_stop(int argc, const char **argv); -extern int cmd_enable_events(int argc, const char **argv); -extern int cmd_disable_events(int argc, const char **argv); -extern int cmd_enable_channels(int argc, const char **argv); -extern int cmd_disable_channels(int argc, const char **argv); -extern int cmd_add_context(int argc, const char **argv); -extern int cmd_set_session(int argc, const char **argv); -extern int cmd_version(int argc, const char **argv); -extern int cmd_calibrate(int argc, const char **argv); -extern int cmd_view(int argc, const char **argv); +DECL_COMMAND(list); +DECL_COMMAND(status); +DECL_COMMAND(create); +DECL_COMMAND(destroy); +DECL_COMMAND(start); +DECL_COMMAND(stop); +DECL_COMMAND(enable_events); +DECL_COMMAND(disable_events); +DECL_COMMAND(enable_channels); +DECL_COMMAND(disable_channels); +DECL_COMMAND(add_context); +DECL_COMMAND(set_session); +DECL_COMMAND(version); +DECL_COMMAND(view); +DECL_COMMAND(enable_consumer); +DECL_COMMAND(disable_consumer); +DECL_COMMAND(snapshot); +DECL_COMMAND(save); +DECL_COMMAND(load); +DECL_COMMAND(track); +DECL_COMMAND(untrack); +DECL_COMMAND(metadata); +DECL_COMMAND(regenerate); +DECL_COMMAND(rotate); +DECL_COMMAND(enable_rotation); +DECL_COMMAND(disable_rotation); +DECL_COMMAND(clear); +DECL_COMMAND(add_trigger); +DECL_COMMAND(list_triggers); +DECL_COMMAND(remove_trigger); + +extern int cmd_help(int argc, const char **argv, + const struct cmd_struct commands[]); #endif /* _LTTNG_CMD_H */