- 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();
- }