configure: remove -Wno-format-nonliteral
[babeltrace.git] / src / string-format / format-error.c
index 4a2f8bf76c3b05f68718607cb2ffbed49800aabb..f6e74390737e5b16c809ac46832e7c7d0aeb802b 100644 (file)
@@ -1,23 +1,7 @@
 /*
- * Copyright EfficiOS, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
+ * SPDX-License-Identifier: MIT
  *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * Copyright EfficiOS, Inc.
  */
 
 #define BT_LOG_OUTPUT_LEVEL log_level
 #include <stdint.h>
 #include <string-format/format-plugin-comp-cls-name.h>
 
+gchar *format_bt_error_cause(
+               const bt_error_cause *error_cause,
+               unsigned int columns,
+               bt_logging_level log_level,
+               enum bt_common_color_when use_colors)
+{
+       GString *str;
+       gchar *comp_cls_str = NULL;
+       GString *folded = NULL;
+       struct bt_common_color_codes codes;
+
+       str = g_string_new(NULL);
+       BT_ASSERT(str);
+
+       bt_common_color_get_codes(&codes, use_colors);
+
+       /* Print actor name */
+       g_string_append_c(str, '[');
+       switch (bt_error_cause_get_actor_type(error_cause)) {
+       case BT_ERROR_CAUSE_ACTOR_TYPE_UNKNOWN:
+               g_string_append_printf(str, "%s%s%s",
+                       codes.bold,
+                       bt_error_cause_get_module_name(error_cause),
+                       codes.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(error_cause),
+                       bt_error_cause_component_actor_get_component_class_name(error_cause),
+                       bt_error_cause_component_actor_get_component_class_type(error_cause),
+                       use_colors);
+               BT_ASSERT(comp_cls_str);
+
+               g_string_append_printf(str, "%s%s%s: %s",
+                       codes.bold,
+                       bt_error_cause_component_actor_get_component_name(error_cause),
+                       codes.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(error_cause),
+                       bt_error_cause_component_class_actor_get_component_class_name(error_cause),
+                       bt_error_cause_component_class_actor_get_component_class_type(error_cause),
+                       use_colors);
+               BT_ASSERT(comp_cls_str);
+
+               g_string_append(str, comp_cls_str);
+               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(error_cause),
+                       bt_error_cause_message_iterator_actor_get_component_class_name(error_cause),
+                       bt_error_cause_message_iterator_actor_get_component_class_type(error_cause),
+                       use_colors);
+               BT_ASSERT(comp_cls_str);
+
+               g_string_append_printf(str, "%s%s%s (%s%s%s): %s",
+                       codes.bold,
+                       bt_error_cause_message_iterator_actor_get_component_name(error_cause),
+                       codes.reset,
+                       codes.bold,
+                       bt_error_cause_message_iterator_actor_get_component_output_port_name(error_cause),
+                       codes.reset,
+                       comp_cls_str);
+
+               break;
+       default:
+               bt_common_abort();
+       }
+
+       /* Print file name and line number */
+       g_string_append_printf(str, "] (%s%s%s%s:%s%" PRIu64 "%s)\n",
+               codes.bold,
+               codes.fg_bright_magenta,
+               bt_error_cause_get_file_name(error_cause),
+               codes.reset,
+               codes.fg_green,
+               bt_error_cause_get_line_number(error_cause),
+               codes.reset);
+
+       /* Print message */
+       folded = bt_common_fold(bt_error_cause_get_message(error_cause),
+               columns, 2);
+       if (folded) {
+               g_string_append(str, folded->str);
+               g_string_free(folded, TRUE);
+               folded = NULL;
+       } else {
+               BT_LOGE_STR("Could not fold string.");
+               g_string_append(str, bt_error_cause_get_message(error_cause));
+       }
+
+       g_free(comp_cls_str);
+
+       return g_string_free(str, FALSE);
+}
+
 gchar *format_bt_error(
                const bt_error *error,
                unsigned int columns,
@@ -37,8 +120,7 @@ gchar *format_bt_error(
 {
        GString *str;
        int64_t i;
-       GString *folded = NULL;
-       gchar *comp_cls_str = NULL;
+       gchar *error_cause_str = NULL;
        struct bt_common_color_codes codes;
 
        BT_ASSERT(error);
@@ -57,87 +139,19 @@ gchar *format_bt_error(
                        i == bt_error_get_cause_count(error) - 1 ?
                                "%s%sERROR%s:    " : "%s%sCAUSED BY%s ";
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
                /* Print prefix */
                g_string_append_printf(str, prefix_fmt,
                        codes.bold, codes.fg_bright_red, codes.reset);
+#pragma GCC diagnostic pop
 
-               /* Print actor name */
-               g_string_append_c(str, '[');
-               switch (bt_error_cause_get_actor_type(cause)) {
-               case BT_ERROR_CAUSE_ACTOR_TYPE_UNKNOWN:
-                       g_string_append_printf(str, "%s%s%s",
-                               codes.bold,
-                               bt_error_cause_get_module_name(cause),
-                               codes.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),
-                               use_colors);
-                       BT_ASSERT(comp_cls_str);
-
-                       g_string_append_printf(str, "%s%s%s: %s",
-                               codes.bold,
-                               bt_error_cause_component_actor_get_component_name(cause),
-                               codes.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),
-                               use_colors);
-                       BT_ASSERT(comp_cls_str);
-
-                       g_string_append(str, comp_cls_str);
-                       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),
-                               use_colors);
-                       BT_ASSERT(comp_cls_str);
-
-                       g_string_append_printf(str, "%s%s%s (%s%s%s): %s",
-                               codes.bold,
-                               bt_error_cause_message_iterator_actor_get_component_name(cause),
-                               codes.reset,
-                               codes.bold,
-                               bt_error_cause_message_iterator_actor_get_component_output_port_name(cause),
-                               codes.reset,
-                               comp_cls_str);
-
-                       break;
-               default:
-                       bt_common_abort();
-               }
+               g_free(error_cause_str);
+               error_cause_str = format_bt_error_cause(cause, columns,
+                       log_level, use_colors);
+               BT_ASSERT(error_cause_str);
 
-               /* Print file name and line number */
-               g_string_append_printf(str, "] (%s%s%s%s:%s%" PRIu64 "%s)\n",
-                       codes.bold,
-                       codes.fg_bright_magenta,
-                       bt_error_cause_get_file_name(cause),
-                       codes.reset,
-                       codes.fg_green,
-                       bt_error_cause_get_line_number(cause),
-                       codes.reset);
-
-               /* Print message */
-               folded = bt_common_fold(bt_error_cause_get_message(cause),
-                       columns, 2);
-               if (folded) {
-                       g_string_append(str, folded->str);
-                       g_string_free(folded, TRUE);
-                       folded = NULL;
-               } else {
-                       BT_LOGE_STR("Could not fold string.");
-                       g_string_append(str, bt_error_cause_get_message(cause));
-               }
+               g_string_append(str, error_cause_str);
 
                /*
                 * Don't append a newline at the end, since that is used to
@@ -149,7 +163,7 @@ gchar *format_bt_error(
                }
        }
 
-       g_free(comp_cls_str);
+       g_free(error_cause_str);
 
        return g_string_free(str, FALSE);
 }
This page took 0.025258 seconds and 4 git commands to generate.