From 9779197f02b9ab5f4a1afc1292ec8e95d0740855 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Fri, 13 Jul 2018 09:59:45 -0400 Subject: [PATCH] Improve the "show version" command Add "show version cmdline" to display the command line Add doxygen tags to the source code Change-Id: I0205b373062fd88f176d9c8086d89d7784a5172f Signed-off-by: Dave Barach --- src/vpp/app/version.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 5 deletions(-) diff --git a/src/vpp/app/version.c b/src/vpp/app/version.c index d99f875e12e..58ac9bad2a2 100644 --- a/src/vpp/app/version.c +++ b/src/vpp/app/version.c @@ -16,12 +16,23 @@ #include #include -/* N.B. Variable is not static to ensure it's visible in core dumps, i.e., - * it doesn't go to rodata segment */ +/** \file + Display image version information +*/ + +/*? %%clicmd:group_label Image Version Information %% ?*/ + +/* + * Version variables are static to ensure that they're visible in core + * dumps, i.e., not in the rodata segment + */ + +/** The image version string */ char *vpe_version_string = "vpp v" VPP_BUILD_VER " built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE; +/** The name of the compiler */ static char *vpe_compiler = #if defined(__INTEL_COMPILER) #define __(x) #x @@ -37,12 +48,30 @@ static char *vpe_compiler = "unknown compiler"; #endif +/** \brief Display image version info, a debug CLI command function + */ static clib_error_t * show_vpe_version_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { - if (unformat (input, "verbose")) + int i; + int verbose = 0; + int cmdline = 0; + int indent = 2; + char **argv = (char **) vm->argv; + + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (input, "verbose %=", &verbose, 1)) + ; + else if (unformat (input, "cmdline %=", &cmdline, 1)) + ; + else + break; + } + + if (verbose) { #define _(a,b,c) vlib_cli_output (vm, "%-25s " b, a ":", c); _("Version", "%s", "v" VPP_BUILD_VER); @@ -54,31 +83,79 @@ show_vpe_version_command_fn (vlib_main_t * vm, _("Current PID", "%d", getpid ()); #undef _ } - else + if (cmdline) + { + vlib_cli_output (vm, "%-25s", "Command line arguments:"); + + for (i = 0; argv[i]; i++) + { + if (strstr (argv[i], "{")) + indent += 2; + vlib_cli_output (vm, "%U%s", format_white_space, indent, argv[i]); + if (strstr (argv[i], "}")) + indent -= 2; + } + } + if ((verbose + cmdline) == 0) vlib_cli_output (vm, "%s", vpe_version_string); return 0; } +/*? + * This commmand displays image version and command line arguments + * + * @cliexpar + * How to display the image version string: + * @cliexstart{show version} + * vpp v18.07-rc0~509-gb9124828 built by vppuser on vppbuild at date + * @cliexend + * + * @cliexpar + * How to display verbose image version information: + * @cliexstart{show version verbose} + * Version: v18.07-rc0~509-gb9124828 + * Compiled by: vppuser + * Compile host: vppbuild + * Compile date: Fri Jul 13 09:05:37 EDT 2018 + * Compile location: /scratch/vpp-showversion + * Compiler: GCC 7.3.0 + * Current PID: 5334 + * @cliexend + * + * @cliexpar + * How to display the vpp command line arguments: + * @cliexstart{show version cmdline} + * vpp# show version cmdline + * Command line arguments: + * /scratch/vpp-showversion/build-root/install-vpp_debug-native/vpp/bin/vpp + * unix + * interactive + * @cliexend +?*/ + /* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_vpe_version_command, static) = { .path = "show version", - .short_help = "show version information", + .short_help = "show version [verbose] [cmdline]", .function = show_vpe_version_command_fn, }; /* *INDENT-ON* */ +/** Return the image build directory name */ char * vpe_api_get_build_directory (void) { return VPP_BUILD_TOPDIR; } +/** Return the image version string */ char * vpe_api_get_version (void) { return VPP_BUILD_VER; } +/** return the build date */ char * vpe_api_get_build_date (void) { -- 2.16.6