#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
+#include <assert.h>
#include <urcu/list.h>
} else if (opt_userspace) {
dom.type = LTTNG_DOMAIN_UST;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ assert(0);
}
handle = lttng_create_handle(session_name, &dom);
}
}
+ ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace);
+
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
if (!opt_type) {
ERR("Missing mandatory -t TYPE");
usage(stderr);
#include "../command.h"
static int opt_event_type;
-static char *opt_kernel;
+static int opt_kernel;
static int opt_userspace;
enum {
OPT_FUNCTION_ENTRY,
OPT_SYSCALL,
OPT_USERSPACE,
+ OPT_KERNEL,
OPT_LIST_OPTIONS,
};
static struct poptOption long_options[] = {
/* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
{"help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0},
- {"kernel", 'k', POPT_ARG_VAL, &opt_kernel, 1, 0, 0},
+ {"kernel", 'k', POPT_ARG_NONE, 0, OPT_KERNEL, 0, 0},
{"userspace", 'u', POPT_ARG_NONE, 0, OPT_USERSPACE, 0, 0},
{"function", 0, POPT_ARG_NONE, 0, OPT_FUNCTION, 0, 0},
{"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL},
} else if (opt_userspace) {
dom.type = LTTNG_DOMAIN_UST;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ /* Checked by the caller. */
+ assert(0);
}
handle = lttng_create_handle(NULL, &dom);
case OPT_USERSPACE:
opt_userspace = 1;
break;
+ case OPT_KERNEL:
+ opt_kernel = 1;
+ break;
case OPT_LIST_OPTIONS:
list_cmd_options(stdout, long_options);
goto end;
}
}
+ ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace);
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
/* Mi check */
if (lttng_opt_mi) {
writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
} else if (opt_userspace) {
dom.type = LTTNG_DOMAIN_UST;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ /* Checked by the caller. */
+ assert(0);
}
handle = lttng_create_handle(session_name, &dom);
}
}
+ ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace);
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
opt_channels = (char*) poptGetArg(pc);
if (opt_channels == NULL) {
ERR("Missing channel name(s).\n");
} else if (opt_python) {
dom.type = LTTNG_DOMAIN_PYTHON;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ /* Checked by the caller. */
+ assert(0);
}
channel_name = opt_channel_name;
}
}
+ ret = print_missing_or_multiple_domains(
+ opt_kernel + opt_userspace + opt_jul + opt_log4j + opt_python);
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
opt_event_list = (char*) poptGetArg(pc);
if (opt_event_list == NULL && opt_disable_all == 0) {
ERR("Missing event name(s).\n");
dom.buf_type = LTTNG_BUFFER_PER_UID;
}
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ /* Checked by the caller. */
+ assert(0);
}
set_default_attr(&dom);
}
}
+ ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace);
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
/* Mi check */
if (lttng_opt_mi) {
writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
/* Default. */
dom.buf_type = LTTNG_BUFFER_PER_UID;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ /* Checked by the caller. */
+ assert(0);
}
if (opt_exclude) {
strncpy(ev.name, event_name, LTTNG_SYMBOL_NAME_LEN);
ev.name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0';
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto error;
+ assert(0);
}
if (!opt_filter) {
}
}
+ ret = print_missing_or_multiple_domains(
+ opt_kernel + opt_userspace + opt_jul + opt_log4j + opt_python);
+ if (ret) {
+ ret = CMD_ERROR;
+ goto end;
+ }
+
/* Mi check */
if (lttng_opt_mi) {
writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
+#include <assert.h>
#include <urcu/list.h>
} else if (opt_userspace) {
dom.type = LTTNG_DOMAIN_UST;
} else {
- print_missing_domain();
- ret = CMD_ERROR;
- goto end;
+ /* Checked by the caller. */
+ assert(0);
}
ret = parse_pid_string(pid_string, all, &pid_list, &nr_pids);
}
}
- if (!(opt_userspace ^ opt_kernel)) {
- ERR("Exactly one of -u or -k needs to be specified.");
- usage(stderr, cmd_str);
- command_ret = CMD_ERROR;
+ ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace);
+ if (ret) {
+ ret = CMD_ERROR;
goto end;
}
error_socket:
return ret;
}
+
+int print_missing_or_multiple_domains(unsigned int sum)
+{
+ int ret = 0;
+
+ if (sum == 0) {
+ ERR("Please specify a domain (-k/-u/-j).");
+ ret = -1;
+ } else if (sum > 1) {
+ ERR("Multiple domains specified.");
+ ret = -1;
+ }
+
+ return ret;
+}
const char *get_domain_str(enum lttng_domain_type domain);
-static inline
-void print_missing_domain(void)
-{
- ERR("Please specify a domain (-k/-u/-j).");
-}
+int print_missing_or_multiple_domains(unsigned int sum);
int spawn_relayd(const char *pathname, int port);
int check_relayd(void);