ret = lttng_enable_event_with_exclusions(handle, &event, channel_name,
filter_expression, exclusion_count, exclusions);
+ if (ret) {
+ goto end;
+ }
+
+ if (!event.enabled) {
+ /*
+ * Note that we should use lttng_disable_event_ext() (2.6+) to
+ * eliminate the risk of clashing on events of the same
+ * name (with different event types and loglevels).
+ *
+ * Unfortunately, lttng_disable_event_ext() only performs a
+ * match on the name and event type and errors out if any other
+ * event attribute is not set to its default value.
+ *
+ * This will disable all events that match this name.
+ */
+ ret = lttng_disable_event(handle, event.name, channel_name);
+ }
end:
for (i = 0; i < exclusion_count; i++) {
free(exclusions[i]);
{
int ret, started = -1, snapshot_mode = -1;
uint64_t live_timer_interval = UINT64_MAX;
- char *name = NULL;
+ xmlChar *name = NULL;
xmlNodePtr domains_node = NULL;
xmlNodePtr output_node = NULL;
xmlNodePtr node;
goto error;
}
- name = (char *) node_content;
+ name = node_content;
} else if (!domains_node && !strcmp((const char *) node->name,
config_element_domains)) {
/* domains */
goto error;
}
- if (session_name && strcmp(name, session_name)) {
+ if (session_name && strcmp((char *) name, session_name)) {
/* This is not the session we are looking for */
ret = -LTTNG_ERR_NO_SESSION;
goto error;
if (override) {
/* Destroy session if it exists */
- ret = lttng_destroy_session(name);
+ ret = lttng_destroy_session((const char *) name);
if (ret && ret != -LTTNG_ERR_SESS_NOT_FOUND) {
ERR("Failed to destroy existing session.");
goto error;
/* Create session type depending on output type */
if (snapshot_mode && snapshot_mode != -1) {
- ret = create_snapshot_session(name, output_node);
+ ret = create_snapshot_session((const char *) name, output_node);
} else if (live_timer_interval &&
live_timer_interval != UINT64_MAX) {
- ret = create_session(name, kernel_domain, ust_domain, jul_domain,
- output_node, live_timer_interval);
+ ret = create_session((const char *) name, kernel_domain,
+ ust_domain, jul_domain, output_node,
+ live_timer_interval);
} else {
/* regular session */
- ret = create_session(name, kernel_domain, ust_domain, jul_domain,
- output_node, UINT64_MAX);
+ ret = create_session((const char *) name, kernel_domain,
+ ust_domain, jul_domain, output_node,
+ UINT64_MAX);
}
if (ret) {
goto error;
for (node = xmlFirstElementChild(domains_node); node;
node = xmlNextElementSibling(node)) {
- ret = process_domain_node(node, name);
+ ret = process_domain_node(node, (const char *) name);
if (ret) {
goto end;
}
}
if (started) {
- ret = lttng_start_tracing(name);
+ ret = lttng_start_tracing((const char *) name);
if (ret) {
goto end;
}
end:
if (ret < 0) {
- ERR("Failed to load session %s: %s", name, lttng_strerror(ret));
- lttng_destroy_session(name);
+ ERR("Failed to load session %s: %s", (const char *) name,
+ lttng_strerror(ret));
+ lttng_destroy_session((const char *) name);
}
error:
free(kernel_domain);
free(ust_domain);
free(jul_domain);
- free(name);
+ xmlFree(name);
return ret;
}