X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fspawn-viewer.cpp;h=e3aeb8314858badb81ab71684489025e481d6475;hb=28ab034a2c3582d07d3423d2d746731f87d3969f;hp=e7d2ca02dcfc24586f41ca68bf0527dafcfef4c2;hpb=c922647daed3dd022be11980063b5fb816d8c091;p=lttng-tools.git diff --git a/src/common/spawn-viewer.cpp b/src/common/spawn-viewer.cpp index e7d2ca02d..e3aeb8314 100644 --- a/src/common/spawn-viewer.cpp +++ b/src/common/spawn-viewer.cpp @@ -7,39 +7,40 @@ * */ +#include "error.hpp" +#include "macros.hpp" +#include "spawn-viewer.hpp" + +#include + +#include + #include #include #include #include -#include - -#include -#include "error.h" -#include "macros.h" -#include "spawn-viewer.h" - - -static const char *babeltrace_bin = CONFIG_BABELTRACE_BIN; -static const char *babeltrace2_bin = CONFIG_BABELTRACE2_BIN; - -/* - * This is needed for each viewer since we are using execvp(). - */ -static const char *babeltrace_opts[] = { "babeltrace" }; -static const char *babeltrace2_opts[] = { "babeltrace2" }; - /* * Type is also use as the index in the viewers array. So please, make sure * your enum value is in the right order in the array below. */ enum viewer_type { - VIEWER_BABELTRACE = 0, - VIEWER_BABELTRACE2 = 1, - VIEWER_USER_DEFINED = 2, + VIEWER_BABELTRACE = 0, + VIEWER_BABELTRACE2 = 1, + VIEWER_USER_DEFINED = 2, }; -static const struct viewer { +namespace { +const char *babeltrace_bin = CONFIG_BABELTRACE_BIN; +const char *babeltrace2_bin = CONFIG_BABELTRACE2_BIN; + +/* + * This is needed for each viewer since we are using execvp(). + */ +const char *babeltrace_opts[] = { "babeltrace" }; +const char *babeltrace2_opts[] = { "babeltrace2" }; + +const struct viewer { const char *exec_name; enum viewer_type type; } viewers[] = { @@ -47,6 +48,7 @@ static const struct viewer { { "babeltrace2", VIEWER_BABELTRACE2 }, { NULL, VIEWER_USER_DEFINED }, }; +} /* namespace */ static const struct viewer *parse_viewer_option(const char *opt_viewer) { @@ -85,7 +87,7 @@ static char **alloc_argv_from_user_opts(char *opts, const char *trace_path) } while (*token != '\0'); /* Add two here for the NULL terminating element and trace path */ - argv = (char **) zmalloc(sizeof(char *) * (num_opts + 2)); + argv = calloc(num_opts + 2); if (argv == NULL) { goto error; } @@ -122,11 +124,13 @@ error: * * The returning pointer is ready to be passed to execvp(). */ -static char **alloc_argv_from_local_opts(const char **opts, size_t opts_len, - const char *trace_path, bool opt_live_mode) +static char **alloc_argv_from_local_opts(const char **opts, + size_t opts_len, + const char *trace_path, + bool opt_live_mode) { char **argv; - size_t size, mem_len; + size_t mem_len; /* Add one for the NULL terminating element. */ mem_len = opts_len + 1; @@ -138,10 +142,7 @@ static char **alloc_argv_from_local_opts(const char **opts, size_t opts_len, mem_len += 1; } - size = sizeof(char *) * mem_len; - - /* Add two here for the trace_path and the NULL terminating element. */ - argv = (char **) zmalloc(size); + argv = calloc(mem_len); if (argv == NULL) { goto error; } @@ -162,7 +163,6 @@ error: return argv; } - /* * Spawn viewer with the trace directory path. */ @@ -189,9 +189,8 @@ retry_viewer: } else { viewer_bin = viewer->exec_name; } - argv = alloc_argv_from_local_opts(babeltrace2_opts, - ARRAY_SIZE(babeltrace2_opts), trace_path, - opt_live_mode); + argv = alloc_argv_from_local_opts( + babeltrace2_opts, ARRAY_SIZE(babeltrace2_opts), trace_path, opt_live_mode); break; case VIEWER_BABELTRACE: if (stat(babeltrace_bin, &status) == 0) { @@ -199,9 +198,8 @@ retry_viewer: } else { viewer_bin = viewer->exec_name; } - argv = alloc_argv_from_local_opts(babeltrace_opts, - ARRAY_SIZE(babeltrace_opts), trace_path, - opt_live_mode); + argv = alloc_argv_from_local_opts( + babeltrace_opts, ARRAY_SIZE(babeltrace_opts), trace_path, opt_live_mode); break; case VIEWER_USER_DEFINED: argv = alloc_argv_from_user_opts(opt_viewer, trace_path); @@ -226,16 +224,16 @@ retry_viewer: if (viewer->type == VIEWER_BABELTRACE2) { /* Fallback to legacy babeltrace. */ DBG("Default viewer \"%s\" not installed on the system, falling back to \"%s\"", - viewers[VIEWER_BABELTRACE2].exec_name, - viewers[VIEWER_BABELTRACE].exec_name); + viewers[VIEWER_BABELTRACE2].exec_name, + viewers[VIEWER_BABELTRACE].exec_name); viewer = &viewers[VIEWER_BABELTRACE]; free(argv); argv = NULL; goto retry_viewer; } else { ERR("Default viewer \"%s\" (and fallback \"%s\") not found on the system", - viewers[VIEWER_BABELTRACE2].exec_name, - viewers[VIEWER_BABELTRACE].exec_name); + viewers[VIEWER_BABELTRACE2].exec_name, + viewers[VIEWER_BABELTRACE].exec_name); } } else { PERROR("Failed to launch \"%s\" viewer", viewer_bin);