X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fadd_context.c;h=4aeeff24e86d805fff5a40c679b80fa798da56f6;hb=9f778c9a8f1d65f5bfdde7cfd7294492d6fdd34c;hp=ce65024f5f6b912cbf2406d8be8e82018c2b9e90;hpb=5eb00805632a8721bd15247847caa053e9858719;p=lttng-tools.git diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c index ce65024f5..4aeeff24e 100644 --- a/src/bin/lttng/commands/add_context.c +++ b/src/bin/lttng/commands/add_context.c @@ -309,6 +309,7 @@ static void usage(FILE *ofp) fprintf(ofp, "will be added to all events and all channels.\n"); fprintf(ofp, "Otherwise the context will be added only to the channel (-c)\n"); fprintf(ofp, "and/or event (-e) indicated.\n"); + fprintf(ofp, "Exactly one domain (-k/--kernel or -u/--userspace) must be specified.\n"); fprintf(ofp, "\n"); fprintf(ofp, "Options:\n"); fprintf(ofp, " -h, --help Show this help\n"); @@ -369,6 +370,9 @@ static int add_context(char *session_name) struct ctx_type *type; char *ptr; + memset(&context, 0, sizeof(context)); + memset(&dom, 0, sizeof(dom)); + if (opt_kernel) { dom.type = LTTNG_DOMAIN_KERNEL; } else if (opt_userspace) { @@ -466,7 +470,6 @@ int cmd_add_context(int argc, const char **argv) switch (opt) { case OPT_HELP: usage(stdout); - ret = CMD_SUCCESS; goto end; case OPT_TYPE: /* @@ -505,7 +508,6 @@ int cmd_add_context(int argc, const char **argv) break; case OPT_LIST_OPTIONS: list_cmd_options(stdout, long_options); - ret = CMD_SUCCESS; goto end; default: usage(stderr); @@ -514,6 +516,13 @@ int cmd_add_context(int argc, const char **argv) } } + if (!opt_type) { + ERR("Missing mandatory -t TYPE"); + usage(stderr); + ret = CMD_ERROR; + goto end; + } + if (!opt_session_name) { session_name = get_session_name(); if (session_name == NULL) { @@ -526,11 +535,16 @@ int cmd_add_context(int argc, const char **argv) ret = add_context(session_name); + if (!opt_session_name) { + free(session_name); + } + end: /* Cleanup allocated memory */ cds_list_for_each_entry_safe(type, tmptype, &ctx_type_list.head, list) { free(type); } + poptFreeContext(pc); return ret; }