*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <common/error.h>
#include <common/macros.h>
#include <common/utils.h>
+#include <common/compat/getenv.h>
#include <lttng/lttng-error.h>
#include <libxml/parser.h>
#include <libxml/valid.h>
const char * const config_element_control_uri = "control_uri";
const char * const config_element_data_uri = "data_uri";
const char * const config_element_max_size = "max_size";
+const char * const config_element_pid = "pid";
+const char * const config_element_pids = "pids";
const char * const config_domain_type_kernel = "KERNEL";
const char * const config_domain_type_ust = "UST";
char *get_session_config_xsd_path()
{
char *xsd_path;
- const char *base_path = getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
+ const char *base_path = lttng_secure_getenv(DEFAULT_SESSION_CONFIG_XSD_PATH_ENV);
size_t base_path_len;
size_t max_path_len;
int i;
struct lttng_domain *domain;
struct lttng_domain *domains[] =
- { kernel_domain, ust_domain, jul_domain, log4j_domain};
+ { kernel_domain, ust_domain, jul_domain, log4j_domain };
/* network destination */
if (live_timer_interval && live_timer_interval != UINT64_MAX) {
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]);