X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng%2Fcommands%2Fload.c;h=347e4ca08896b8507a9e0939c281a0046a946bec;hb=c7e35b037773dbbfe10178c946ba44feefb226e1;hp=3f926548ae637414d5c5e46fc5ecc2ef32ee8a50;hpb=8c42d8454516c418e666aa9f96eaa261bb65b748;p=lttng-tools.git diff --git a/src/bin/lttng/commands/load.c b/src/bin/lttng/commands/load.c index 3f926548a..347e4ca08 100644 --- a/src/bin/lttng/commands/load.c +++ b/src/bin/lttng/commands/load.c @@ -27,10 +27,11 @@ #include "../command.h" static char *opt_input_path; -static char *opt_session_name; static int opt_force; static int opt_load_all; +static const char *session_name; + enum { OPT_HELP = 1, OPT_ALL, @@ -41,7 +42,6 @@ static struct poptOption load_opts[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ {"help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0}, {"all", 'a', POPT_ARG_NONE, 0, OPT_ALL, 0, 0}, - {"session", 's', POPT_ARG_STRING, &opt_session_name, 0, 0, 0}, {"input-path", 'i', POPT_ARG_STRING, &opt_input_path, 0, 0, 0}, {"force", 'f', POPT_ARG_NONE, 0, OPT_FORCE, 0, 0}, {0, 0, 0, 0, 0, 0, 0} @@ -52,14 +52,17 @@ static struct poptOption load_opts[] = { */ static void usage(FILE *ofp) { - fprintf(ofp, "usage: lttng load [OPTIONS]\n"); + fprintf(ofp, "usage: lttng load [OPTIONS] [SESSION]\n"); fprintf(ofp, "\n"); fprintf(ofp, "Options:\n"); - fprintf(ofp, " -h, --help Show this help\n"); - fprintf(ofp, " -a, --all Load all sessions (default)\n"); - fprintf(ofp, " -s, --session Load a specific session\n"); - fprintf(ofp, " -i, --input-path Input path of the session configuration(s)\n"); - fprintf(ofp, " -f, --force Override existing session configuration(s)\n"); + fprintf(ofp, " -h, --help Show this help\n"); + fprintf(ofp, " -a, --all Load all sessions (default)\n"); + fprintf(ofp, " -i, --input-path PATH Input path of the session file(s).\n"); + fprintf(ofp, " If a directory, load all files in it\n"); + fprintf(ofp, " else try to load the given file.\n"); + fprintf(ofp, " -f, --force Override existing session(s).\n"); + fprintf(ofp, " This will destroy existing session(s)\n"); + fprintf(ofp, " before creating new one(s).\n"); } /* @@ -74,6 +77,13 @@ int cmd_load(int argc, const char **argv) pc = poptGetContext(NULL, argc, argv, load_opts, 0); poptReadDefaultConfig(pc, 0); + /* TODO: mi support */ + if (lttng_opt_mi) { + ret = -LTTNG_ERR_MI_NOT_IMPLEMENTED; + ERR("mi option not supported"); + goto end; + } + while ((opt = poptGetNextOpt(pc)) != -1) { switch (opt) { case OPT_HELP: @@ -92,14 +102,29 @@ int cmd_load(int argc, const char **argv) } } - if (opt_session_name && opt_load_all) { - WARN("Conflicting session options, loading session %s", - opt_session_name); + if (!opt_load_all) { + session_name = poptGetArg(pc); + if (session_name) { + DBG2("Loading session name: %s", session_name); + } } - ret = config_load_session(opt_input_path, opt_session_name, opt_force); + ret = config_load_session(opt_input_path, session_name, opt_force, 0); if (ret) { - ret = CMD_ERROR; + ERR("%s", lttng_strerror(ret)); + ret = -ret; + } else { + if (opt_load_all) { + MSG("All sessions have been loaded successfully"); + } else if (session_name) { + ret = config_init((char *)session_name); + if (ret < 0) { + ret = CMD_WARNING; + } + MSG("Session %s has been loaded successfully", session_name); + } else { + MSG("Session has been loaded successfully"); + } } end: poptFreeContext(pc);