X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fadd_context.c;h=38708fce15dd784a2e0ae97700d7041793fd885d;hb=6775595e33fcf411716849374390e5f8179c8735;hp=a1d776d6cbb46da28b4128fd8d2d5fcacb27bf92;hpb=ca1c3607d2f5654163875cda874f43971df0f696;p=lttng-tools.git diff --git a/src/bin/lttng/commands/add_context.c b/src/bin/lttng/commands/add_context.c index a1d776d6c..38708fce1 100644 --- a/src/bin/lttng/commands/add_context.c +++ b/src/bin/lttng/commands/add_context.c @@ -1,19 +1,18 @@ /* * 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 the Free Software Foundation; only version 2 - * of the License. + * This program is free software; you can redistribute it and/or modify + * 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 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -309,6 +308,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 +369,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) { @@ -387,7 +390,7 @@ static int add_context(char *session_name) /* Iterate over all the context types given */ cds_list_for_each_entry(type, &ctx_type_list.head, list) { - context.ctx = type->opt->ctx_type; + context.ctx = (enum lttng_event_context_type) type->opt->ctx_type; if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) { context.u.perf_counter.type = type->opt->u.perf.type; context.u.perf_counter.config = type->opt->u.perf.config; @@ -512,6 +515,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) { @@ -524,6 +534,10 @@ 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) {