#include <babeltrace2/babeltrace.h>
#include "common/common.h"
+#include "string-format/format-error.h"
#include "string-format/format-plugin-comp-cls-name.h"
#include <unistd.h>
#include <stdlib.h>
BT_LOGI("Finding component class: plugin-name=\"%s\", "
"comp-cls-name=\"%s\"", plugin_name, comp_class_name);
- plugin = find_loaded_plugin(plugin_name);
+ plugin = borrow_loaded_plugin_by_name(plugin_name);
if (!plugin) {
goto end;
}
comp_class = plugin_borrow_comp_cls_func(plugin, comp_class_name);
bt_object_get_ref(comp_class);
- BT_PLUGIN_PUT_REF_AND_RESET(plugin);
end:
if (comp_class) {
const bt_plugin *plugin = NULL;
const bt_component_class *needed_comp_cls = NULL;
- plugin = find_loaded_plugin(cfg->cmd_data.help.cfg_component->plugin_name->str);
+ plugin = borrow_loaded_plugin_by_name(cfg->cmd_data.help.cfg_component->plugin_name->str);
if (!plugin) {
BT_CLI_LOGE_APPEND_CAUSE(
"Cannot find plugin: plugin-name=\"%s\"",
end:
bt_component_class_put_ref(needed_comp_cls);
- bt_plugin_put_ref(plugin);
return cmd_status;
}
}
for (i = 0; i < plugins_count; i++) {
- const bt_plugin *plugin = borrow_loaded_plugin(i);
+ const bt_plugin *plugin = borrow_loaded_plugin_by_index(i);
component_classes_count +=
bt_plugin_get_source_component_class_count(plugin) +
bt_common_color_reset());
for (i = 0; i < plugins_count; i++) {
- const bt_plugin *plugin = borrow_loaded_plugin(i);
+ const bt_plugin *plugin = borrow_loaded_plugin_by_index(i);
printf("\n");
print_plugin_info(plugin);
bt_graph_add_interrupter(ctx->graph, the_interrupter);
add_listener_status = bt_graph_add_source_component_output_port_added_listener(
- ctx->graph, graph_source_output_port_added_listener, NULL, ctx,
+ ctx->graph, graph_source_output_port_added_listener, ctx,
NULL);
if (add_listener_status != BT_GRAPH_ADD_LISTENER_STATUS_OK) {
BT_CLI_LOGE_APPEND_CAUSE(
}
add_listener_status = bt_graph_add_filter_component_output_port_added_listener(
- ctx->graph, graph_filter_output_port_added_listener, NULL, ctx,
+ ctx->graph, graph_filter_output_port_added_listener, ctx,
NULL);
if (add_listener_status != BT_GRAPH_ADD_LISTENER_STATUS_OK) {
BT_CLI_LOGE_APPEND_CAUSE(
void print_error_causes(void)
{
const bt_error *error = bt_current_thread_take_error();
- int64_t i;
- GString *folded = NULL;
unsigned int columns;
- gchar *comp_cls_str = NULL;
+ gchar *error_str = NULL;
if (!error || bt_error_get_cause_count(error) == 0) {
fprintf(stderr, "%s%sUnknown command-line error.%s\n",
* This helps visually separate the error causes from the last
* logging statement.
*/
- fprintf(stderr, "\n");
-
- /* Reverse order: deepest (root) cause printed at the end */
- for (i = bt_error_get_cause_count(error) - 1; i >= 0; i--) {
- const bt_error_cause *cause =
- bt_error_borrow_cause_by_index(error, (uint64_t) i);
- const char *prefix_fmt =
- i == bt_error_get_cause_count(error) - 1 ?
- "%s%sERROR%s: " : "%s%sCAUSED BY%s ";
-
- /* Print prefix */
- fprintf(stderr, prefix_fmt,
- bt_common_color_bold(), bt_common_color_fg_bright_red(),
- bt_common_color_reset());
-
- /* Print actor name */
- fprintf(stderr, "[");
- switch (bt_error_cause_get_actor_type(cause)) {
- case BT_ERROR_CAUSE_ACTOR_TYPE_UNKNOWN:
- fprintf(stderr, "%s%s%s",
- bt_common_color_bold(),
- bt_error_cause_get_module_name(cause),
- bt_common_color_reset());
- break;
- case BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT:
- comp_cls_str = format_plugin_comp_cls_opt(
- bt_error_cause_component_actor_get_plugin_name(cause),
- bt_error_cause_component_actor_get_component_class_name(cause),
- bt_error_cause_component_actor_get_component_class_type(cause),
- BT_COMMON_COLOR_WHEN_AUTO);
- BT_ASSERT(comp_cls_str);
-
- fprintf(stderr, "%s%s%s: %s",
- bt_common_color_bold(),
- bt_error_cause_component_actor_get_component_name(cause),
- bt_common_color_reset(),
- comp_cls_str);
- break;
- case BT_ERROR_CAUSE_ACTOR_TYPE_COMPONENT_CLASS:
- comp_cls_str = format_plugin_comp_cls_opt(
- bt_error_cause_component_class_actor_get_plugin_name(cause),
- bt_error_cause_component_class_actor_get_component_class_name(cause),
- bt_error_cause_component_class_actor_get_component_class_type(cause),
- BT_COMMON_COLOR_WHEN_AUTO);
- BT_ASSERT(comp_cls_str);
-
- fputs(comp_cls_str, stderr);
- break;
- case BT_ERROR_CAUSE_ACTOR_TYPE_MESSAGE_ITERATOR:
- comp_cls_str = format_plugin_comp_cls_opt(
- bt_error_cause_message_iterator_actor_get_plugin_name(cause),
- bt_error_cause_message_iterator_actor_get_component_class_name(cause),
- bt_error_cause_message_iterator_actor_get_component_class_type(cause)
- ,BT_COMMON_COLOR_WHEN_AUTO);
- BT_ASSERT(comp_cls_str);
-
- fprintf(stderr, "%s%s%s (%s%s%s): %s",
- bt_common_color_bold(),
- bt_error_cause_message_iterator_actor_get_component_name(cause),
- bt_common_color_reset(),
- bt_common_color_bold(),
- bt_error_cause_message_iterator_actor_get_component_output_port_name(cause),
- bt_common_color_reset(),
- comp_cls_str);
- break;
- default:
- bt_common_abort();
- }
+ fputc('\n', stderr);
- /* Print file name and line number */
- fprintf(stderr, "] (%s%s%s%s:%s%" PRIu64 "%s)\n",
- bt_common_color_bold(),
- bt_common_color_fg_bright_magenta(),
- bt_error_cause_get_file_name(cause),
- bt_common_color_reset(),
- bt_common_color_fg_green(),
- bt_error_cause_get_line_number(cause),
- bt_common_color_reset());
-
- /* Print message */
- folded = bt_common_fold(bt_error_cause_get_message(cause),
- columns, 2);
- if (!folded) {
- BT_LOGE_STR("Could not fold string.");
- fprintf(stderr, "%s\n",
- bt_error_cause_get_message(cause));
- continue;
- }
+ error_str = format_bt_error(error, columns, bt_cli_log_level,
+ BT_COMMON_COLOR_WHEN_AUTO);
+ BT_ASSERT(error_str);
- fprintf(stderr, "%s\n", folded->str);
- g_string_free(folded, TRUE);
- folded = NULL;
- }
+ fprintf(stderr, "%s\n", error_str);
end:
- BT_ASSERT(!folded);
-
if (error) {
bt_error_release(error);
}
- g_free(comp_cls_str);
+ g_free(error_str);
}
int main(int argc, const char **argv)