X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Flttng.c;h=8d6c8e621e83eadd3d18a08e385ad0b474e98940;hp=71ef7ed05ef93846aa21054b00de4f21b821a561;hb=c6d4a597213c93a865e05f93227b108ed2a79761;hpb=99bab54fa13c66d7237f03d899650ad73e49c230 diff --git a/src/bin/lttng/lttng.c b/src/bin/lttng/lttng.c index 71ef7ed05..8d6c8e621 100644 --- a/src/bin/lttng/lttng.c +++ b/src/bin/lttng/lttng.c @@ -2,9 +2,8 @@ * 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 as published by - * as published by the Free Software Foundation; only version 2 - * of the License. + * it under the terms of the GNU General Public License, version 2 only, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -26,6 +25,7 @@ #include #include #include +#include #include #include @@ -34,9 +34,6 @@ /* Variables */ static char *progname; - -int opt_quiet; -int opt_verbose; static int opt_no_sessiond; static char *opt_sessiond_path; static pid_t sessiond_pid; @@ -76,12 +73,13 @@ static struct cmd_struct commands[] = { { "set-session", cmd_set_session}, { "version", cmd_version}, { "calibrate", cmd_calibrate}, + { "view", cmd_view}, { NULL, NULL} /* Array closure */ }; static void usage(FILE *ofp) { - fprintf(ofp, "LTTng Trace Control " VERSION"\n\n"); + fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n\n"); fprintf(ofp, "usage: lttng [OPTIONS] \n"); fprintf(ofp, "\n"); fprintf(ofp, "Options:\n"); @@ -108,6 +106,7 @@ static void usage(FILE *ofp) fprintf(ofp, " start Start tracing\n"); fprintf(ofp, " stop Stop tracing\n"); fprintf(ofp, " version Show version information\n"); + fprintf(ofp, " view Start trace viewer\n"); fprintf(ofp, "\n"); fprintf(ofp, "Each command also has its own -h, --help option.\n"); fprintf(ofp, "\n"); @@ -264,20 +263,6 @@ static int handle_command(int argc, char **argv) /* Find command */ if (strcmp(argv[0], cmd->name) == 0) { ret = cmd->func(argc, (const char**) argv); - switch (ret) { - case CMD_WARNING: - WARN("Some command(s) went wrong"); - break; - case CMD_ERROR: - ERR("Command error"); - break; - case CMD_UNDEFINED: - ERR("Undefined command"); - break; - case CMD_FATAL: - ERR("Fatal error"); - break; - } goto end; } i++; @@ -412,7 +397,9 @@ static int check_args_no_sessiond(int argc, char **argv) if ((strncmp(argv[i], "-h", sizeof("-h")) == 0) || strncmp(argv[i], "--h", sizeof("--h")) == 0 || strncmp(argv[i], "--list-options", sizeof("--list-options")) == 0 || - strncmp(argv[i], "--list-commands", sizeof("--list-commands")) == 0) { + strncmp(argv[i], "--list-commands", sizeof("--list-commands")) == 0 || + strncmp(argv[i], "version", sizeof("version")) == 0 || + strncmp(argv[i], "view", sizeof("view")) == 0) { return 1; } } @@ -438,12 +425,13 @@ static int parse_args(int argc, char **argv) switch (opt) { case 'h': usage(stdout); + ret = 0; goto end; case 'v': - opt_verbose += 1; + lttng_opt_verbose += 1; break; case 'q': - opt_quiet = 1; + lttng_opt_quiet = 1; break; case 'g': lttng_set_tracing_group(optarg); @@ -464,24 +452,27 @@ static int parse_args(int argc, char **argv) goto end; default: usage(stderr); + ret = 1; goto error; } } /* If both options are specified, quiet wins */ - if (opt_verbose && opt_quiet) { - opt_verbose = 0; + if (lttng_opt_verbose && lttng_opt_quiet) { + lttng_opt_verbose = 0; } /* Spawn session daemon if needed */ if (opt_no_sessiond == 0 && check_args_no_sessiond(argc, argv) == 0 && (check_sessiond() < 0)) { + ret = 1; goto error; } /* No leftovers, print usage and quit */ if ((argc - optind) == 0) { usage(stderr); + ret = 1; goto error; } @@ -490,20 +481,35 @@ static int parse_args(int argc, char **argv) * options. */ ret = handle_command(argc - optind, argv + optind); - if (ret < 0) { - if (ret == -1) { - usage(stderr); - } else { - ERR("%s", lttng_strerror(ret)); + switch (ret) { + case CMD_WARNING: + WARN("Some command(s) went wrong"); + break; + case CMD_ERROR: + ERR("Command error"); + break; + case CMD_UNDEFINED: + ERR("Undefined command"); + break; + case CMD_FATAL: + ERR("Fatal error"); + break; + case -1: + usage(stderr); + ret = 1; + break; + case 0: + break; + default: + if (ret < 0) { + ret = -ret; } - goto error; + break; } end: - return 0; - error: - return -1; + return ret; } @@ -528,8 +534,8 @@ int main(int argc, char *argv[]) } ret = parse_args(argc, argv); - if (ret < 0) { - clean_exit(EXIT_FAILURE); + if (ret != 0) { + clean_exit(ret); } return 0;