X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fspawn-viewer.cpp;h=150fa4e94bafe948ba3d4f96cb59f1365adddb22;hp=288e3a2ae6b60beb404bf6248e509d9370d6aef1;hb=HEAD;hpb=64803277bbdbe0a943360d918298a48157d9da55 diff --git a/src/common/spawn-viewer.cpp b/src/common/spawn-viewer.cpp index 288e3a2ae..150fa4e94 100644 --- a/src/common/spawn-viewer.cpp +++ b/src/common/spawn-viewer.cpp @@ -7,50 +7,52 @@ * */ -#include -#include -#include -#include - -#include - -#include #include "error.hpp" #include "macros.hpp" #include "spawn-viewer.hpp" +#include -static const char *babeltrace_bin = CONFIG_BABELTRACE_BIN; -static const char *babeltrace2_bin = CONFIG_BABELTRACE2_BIN; +#include -/* - * This is needed for each viewer since we are using execvp(). - */ -static const char *babeltrace_opts[] = { "babeltrace" }; -static const char *babeltrace2_opts[] = { "babeltrace2" }; +#include +#include +#include +#include /* * 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[] = { { "babeltrace", VIEWER_BABELTRACE }, { "babeltrace2", VIEWER_BABELTRACE2 }, - { NULL, VIEWER_USER_DEFINED }, + { nullptr, VIEWER_USER_DEFINED }, }; +} /* namespace */ static const struct viewer *parse_viewer_option(const char *opt_viewer) { - if (opt_viewer == NULL) { + if (opt_viewer == nullptr) { /* Default is babeltrace2 */ return &(viewers[VIEWER_BABELTRACE2]); } @@ -68,7 +70,7 @@ static char **alloc_argv_from_user_opts(char *opts, const char *trace_path) { int i = 0, ignore_space = 0; unsigned int num_opts = 1; - char **argv, *token = opts, *saveptr = NULL; + char **argv, *token = opts, *saveptr = nullptr; /* Count number of arguments. */ do { @@ -86,22 +88,22 @@ static char **alloc_argv_from_user_opts(char *opts, const char *trace_path) /* Add two here for the NULL terminating element and trace path */ argv = calloc(num_opts + 2); - if (argv == NULL) { + if (argv == nullptr) { goto error; } token = strtok_r(opts, " ", &saveptr); - while (token != NULL) { + while (token != nullptr) { argv[i] = strdup(token); - if (argv[i] == NULL) { + if (argv[i] == nullptr) { goto error; } - token = strtok_r(NULL, " ", &saveptr); + token = strtok_r(nullptr, " ", &saveptr); i++; } argv[num_opts] = (char *) trace_path; - argv[num_opts + 1] = NULL; + argv[num_opts + 1] = nullptr; return argv; @@ -113,7 +115,7 @@ error: free(argv); } - return NULL; + return nullptr; } /* @@ -122,8 +124,10 @@ 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 mem_len; @@ -139,7 +143,7 @@ static char **alloc_argv_from_local_opts(const char **opts, size_t opts_len, } argv = calloc(mem_len); - if (argv == NULL) { + if (argv == nullptr) { goto error; } @@ -149,17 +153,16 @@ static char **alloc_argv_from_local_opts(const char **opts, size_t opts_len, argv[opts_len] = (char *) "-i"; argv[opts_len + 1] = (char *) "lttng-live"; argv[opts_len + 2] = (char *) trace_path; - argv[opts_len + 3] = NULL; + argv[opts_len + 3] = nullptr; } else { argv[opts_len] = (char *) trace_path; - argv[opts_len + 1] = NULL; + argv[opts_len + 1] = nullptr; } error: return argv; } - /* * Spawn viewer with the trace directory path. */ @@ -167,13 +170,13 @@ int spawn_viewer(const char *trace_path, char *opt_viewer, bool opt_live_mode) { int ret = 0; struct stat status; - const char *viewer_bin = NULL; + const char *viewer_bin = nullptr; const struct viewer *viewer; - char **argv = NULL; + char **argv = nullptr; /* Check for --viewer option. */ viewer = parse_viewer_option(opt_viewer); - if (viewer == NULL) { + if (viewer == nullptr) { ret = -1; goto error; } @@ -186,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) { @@ -196,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); @@ -210,7 +211,7 @@ retry_viewer: abort(); } - if (argv == NULL || !viewer_bin) { + if (argv == nullptr || !viewer_bin) { ret = -1; goto error; } @@ -223,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; + argv = nullptr; 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);