/* * List agent events for a specific session using the handle. * * Return CMD_SUCCESS on success else a negative value. */ static int list_session_agent_events(void) { int ret = CMD_SUCCESS, count, i; struct lttng_event *events = NULL; count = lttng_list_events(handle, "", &events); if (count < 0) { ret = CMD_ERROR; ERR("%s", lttng_strerror(count)); goto error; } if (lttng_opt_mi) { /* Mi print */ ret = mi_list_session_agent_events(events, count); if (ret) { ret = CMD_ERROR; goto end; } } else { /* Pretty print */ MSG("Events (Logger name):\n---------------------"); if (count == 0) { MSG("%sNone\n", indent6); goto end; } for (i = 0; i < count; i++) { MSG("%s- %s%s (loglevel%s %s)", indent4, events[i].name, enabled_string(events[i].enabled), logleveltype_string(events[i].loglevel_type), mi_lttng_loglevel_string(events[i].loglevel, handle->domain.type)); } MSG(""); } end: free(events); error: return ret; }
/* * List agent events for a specific session using the handle. * * Return CMD_SUCCESS on success else a negative value. */ static int list_session_agent_events(void) { int ret = CMD_SUCCESS, count, i; struct lttng_event *events = NULL; count = lttng_list_events(handle, "", &events); if (count < 0) { ret = CMD_ERROR; ERR("%s", lttng_strerror(count)); goto error; } if (lttng_opt_mi) { /* Mi print */ ret = mi_list_session_agent_events(events, count); if (ret) { ret = CMD_ERROR; goto end; } } else { /* Pretty print */ MSG("Events (Logger name):\n---------------------"); if (count == 0) { MSG("%sNone\n", indent6); goto end; } for (i = 0; i < count; i++) { const char *filter_str; char *filter_msg = NULL; struct lttng_event *event = &events[i]; ret = lttng_event_get_filter_expression(event, &filter_str); if (ret) { filter_msg = strdup(" [failed to retrieve filter]"); } else if (filter_str) { const char * const filter_fmt = " [filter: '%s']"; filter_msg = malloc(strlen(filter_str) + strlen(filter_fmt) + 1); if (filter_msg) { sprintf(filter_msg, filter_fmt, filter_str); } } if (event->loglevel_type != LTTNG_EVENT_LOGLEVEL_ALL) { MSG("%s- %s%s (loglevel%s %s)%s", indent4, event->name, enabled_string(event->enabled), logleveltype_string( event->loglevel_type), mi_lttng_loglevel_string( event->loglevel, handle->domain.type), safe_string(filter_msg)); } else { MSG("%s- %s%s%s", indent4, event->name, enabled_string(event->enabled), safe_string(filter_msg)); } free(filter_msg); } MSG(""); } end: free(events); error: return ret; }