Add --with-lttng-ust-prefix config option.
[lttng-tools.git] / src / bin / lttng / lttng.c
index 61d31bf43199c9238e9774ed88225a35d6ddf51d..79a28ba82da1c94eb4028a874e03d1a2e654224c 100644 (file)
@@ -74,13 +74,15 @@ static struct cmd_struct commands[] =  {
        { "version", cmd_version},
        { "calibrate", cmd_calibrate},
        { "view", cmd_view},
+       { "enable-consumer", cmd_enable_consumer}, /* OBSOLETE */
+       { "disable-consumer", cmd_disable_consumer}, /* OBSOLETE */
        { NULL, NULL}   /* Array closure */
 };
 
 static void usage(FILE *ofp)
 {
-       fprintf(ofp, "LTTng Trace Control " VERSION"\n\n");
-       fprintf(ofp, "usage: lttng [OPTIONS] <COMMAND>\n");
+       fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n\n");
+       fprintf(ofp, "usage: lttng [OPTIONS] <COMMAND> [<ARGS>]\n");
        fprintf(ofp, "\n");
        fprintf(ofp, "Options:\n");
        fprintf(ofp, "  -h, --help                 Show this help\n");
@@ -93,20 +95,20 @@ static void usage(FILE *ofp)
        fprintf(ofp, "      --sessiond-path PATH   Session daemon full path\n");
        fprintf(ofp, "\n");
        fprintf(ofp, "Commands:\n");
-       fprintf(ofp, "    add-context     Add context to event and/or channel\n");
-       fprintf(ofp, "    calibrate       Quantify LTTng overhead\n");
-       fprintf(ofp, "    create          Create tracing session\n");
-       fprintf(ofp, "    destroy         Tear down tracing session\n");
-       fprintf(ofp, "    enable-channel  Enable tracing channel\n");
-       fprintf(ofp, "    enable-event    Enable tracing event\n");
-       fprintf(ofp, "    disable-channel Disable tracing channel\n");
-       fprintf(ofp, "    disable-event   Disable tracing event\n");
-       fprintf(ofp, "    list            List possible tracing options\n");
-       fprintf(ofp, "    set-session     Set current session name\n");
-       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, "    add-context       Add context to event and/or channel\n");
+       fprintf(ofp, "    calibrate         Quantify LTTng overhead\n");
+       fprintf(ofp, "    create            Create tracing session\n");
+       fprintf(ofp, "    destroy           Tear down tracing session\n");
+       fprintf(ofp, "    enable-channel    Enable tracing channel\n");
+       fprintf(ofp, "    enable-event      Enable tracing event\n");
+       fprintf(ofp, "    disable-channel   Disable tracing channel\n");
+       fprintf(ofp, "    disable-event     Disable tracing event\n");
+       fprintf(ofp, "    list              List possible tracing options\n");
+       fprintf(ofp, "    set-session       Set current session name\n");
+       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");
@@ -270,7 +272,7 @@ static int handle_command(int argc, char **argv)
        }
 
        /* Command not found */
-       ret = -1;
+       ret = CMD_UNDEFINED;
 
 end:
        return ret;
@@ -344,41 +346,44 @@ end:
 static int check_sessiond(void)
 {
        int ret;
-       char *pathname = NULL, *alloc_pathname = NULL;
+       char *pathname = NULL;
 
        ret = lttng_session_daemon_alive();
        if (ret == 0) { /* not alive */
                /* Try command line option path */
-               if (opt_sessiond_path != NULL) {
-                       ret = access(opt_sessiond_path, F_OK | X_OK);
-                       if (ret < 0) {
-                               ERR("No such file or access denied: %s", opt_sessiond_path);
-                               goto end;
-                       }
-                       pathname = opt_sessiond_path;
-               } else {
-                       /* Try LTTNG_SESSIOND_PATH env variable */
+               pathname = opt_sessiond_path;
+
+               /* Try LTTNG_SESSIOND_PATH env variable */
+               if (pathname == NULL) {
                        pathname = getenv(DEFAULT_SESSIOND_PATH_ENV);
                }
 
-               /* Let's rock and roll */
+               /* Try with configured path */
                if (pathname == NULL) {
-                       ret = asprintf(&alloc_pathname, INSTALL_BIN_PATH "/lttng-sessiond");
-                       if (ret < 0) {
-                               perror("asprintf spawn sessiond");
-                               goto end;
+                       if (CONFIG_SESSIOND_BIN[0] != '\0') {
+                               pathname = CONFIG_SESSIOND_BIN;
                        }
-                       pathname = alloc_pathname;
+               }
+
+               /* Let's rock and roll while trying the default path */
+               if (pathname == NULL) {
+                       pathname = INSTALL_BIN_PATH "/lttng-sessiond";
+               }
+
+               DBG("Session daemon at: %s", pathname);
+
+               /* Check existence and permissions */
+               ret = access(pathname, F_OK | X_OK);
+               if (ret < 0) {
+                       ERR("No such file or access denied: %s", pathname);
+                       goto end;
                }
 
                ret = spawn_sessiond(pathname);
-               free(alloc_pathname);
                if (ret < 0) {
                        ERR("Problem occurred when starting %s", pathname);
-                       goto end;
                }
        }
-
 end:
        return ret;
 }
@@ -494,6 +499,9 @@ static int parse_args(int argc, char **argv)
        case CMD_FATAL:
                ERR("Fatal error");
                break;
+       case CMD_UNSUPPORTED:
+               ERR("Unsupported command");
+               break;
        case -1:
                usage(stderr);
                ret = 1;
@@ -501,7 +509,9 @@ static int parse_args(int argc, char **argv)
        case 0:
                break;
        default:
-               ERR("%s", lttng_strerror(ret));
+               if (ret < 0) {
+                       ret = -ret;
+               }
                break;
        }
 
@@ -517,14 +527,17 @@ error:
 int main(int argc, char *argv[])
 {
        int ret;
+       char *user;
 
        progname = argv[0] ? argv[0] : "lttng";
 
        /* For Mathieu Desnoyers a.k.a. Dr. Tracing */
-       if (strncmp(progname, "drtrace", 7) == 0 ||
-                       strncmp("compudj", getenv("USER"), 7) == 0) {
+       user = getenv("USER");
+       if (user != NULL && ((strncmp(progname, "drtrace", 7) == 0 ||
+                               strncmp("compudj", user, 7) == 0))) {
                MSG("%c[%d;%dmWelcome back Dr Tracing!%c[%dm\n", 27,1,33,27,0);
        }
+       /* Thanks Mathieu */
 
        ret = set_signal_handler();
        if (ret < 0) {
This page took 0.028635 seconds and 5 git commands to generate.