* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <popt.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "../command.h"
-#include <config.h>
static char *opt_session_name;
static char *opt_viewer;
return &(viewers[VIEWER_BABELTRACE]);
}
-#if 0
- if (strstr(opt_viewer, viewers[VIEWER_LTTV_GUI].exec_name) == 0) {
- return &(viewers[VIEWER_LTTV_GUI]);
- }
-#endif
-
/*
* This means that if -e, --viewers is used, we just override everything
* with it. For supported viewers like lttv, we could simply detect if "-t"
} while (*token != '\0');
/* Add two here for the NULL terminating element and trace path */
- argv = malloc(sizeof(char *) * (num_opts + 2));
+ argv = zmalloc(sizeof(char *) * (num_opts + 2));
if (argv == NULL) {
goto error;
}
token = strtok(opts, " ");
while (token != NULL) {
argv[i] = strdup(token);
+ if (argv[i] == NULL) {
+ goto error;
+ }
token = strtok(NULL, " ");
i++;
}
return argv;
error:
+ if (argv) {
+ for (i = 0; i < num_opts + 2; i++) {
+ free(argv[i]);
+ }
+ free(argv);
+ }
+
return NULL;
}
size = sizeof(char *) * mem_len;
/* Add two here for the trace_path and the NULL terminating element. */
- argv = malloc(size);
+ argv = zmalloc(size);
if (argv == NULL) {
goto error;
}
argv = alloc_argv_from_local_opts(babeltrace_opts,
ARRAY_SIZE(babeltrace_opts), trace_path);
break;
-#if 0
- case VIEWER_LTTV_GUI:
- if (stat(lttv_gui_bin, &status) == 0) {
- viewer_bin = lttv_gui_bin;
- } else {
- viewer_bin = viewer->exec_name;
- }
- argv = alloc_argv_from_local_opts(lttv_gui_opts,
- ARRAY_SIZE(lttv_gui_opts), trace_path);
- break;
-#endif
case VIEWER_USER_DEFINED:
argv = alloc_argv_from_user_opts(opt_viewer, trace_path);
if (argv) {
break;
}
- if (argv == NULL) {
+ if (argv == NULL || !viewer_bin) {
ret = CMD_FATAL;
goto error;
}
ret = gethostname(hostname, sizeof(hostname));
if (ret < 0) {
- perror("gethostname");
+ PERROR("gethostname");
goto error;
}
ret = asprintf(&path, "net://localhost/host/%s/%s", hostname,
session_name);
if (ret < 0) {
- perror("asprintf live path");
+ PERROR("asprintf live path");
goto error;
}
pc = poptGetContext(NULL, argc, argv, long_options, 0);
poptReadDefaultConfig(pc, 0);
+ if (lttng_opt_mi) {
+ WARN("mi does not apply to view command");
+ }
+
while ((opt = poptGetNextOpt(pc)) != -1) {
switch (opt) {
case OPT_HELP: