param-parse: allow duplicate map keys
[babeltrace.git] / src / param-parse / param-parse.c
index e2385ad81ada129606bf1300cf75eb225f8b5c98..dd40b4f01bd4ec9952eae0b8b4ffedc2e9ad9de1 100644 (file)
@@ -20,6 +20,8 @@
  * SOFTWARE.
  */
 
+#include "param-parse.h"
+
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
@@ -94,10 +96,10 @@ void ini_append_error_expecting(struct ini_parsing_state *state,
        }
 
        for (i = 0; i < pos; ++i) {
-               g_string_append_printf(state->ini_error, " ");
+               g_string_append_c(state->ini_error, ' ');
        }
 
-       g_string_append_printf(state->ini_error, "^\n\n");
+       g_string_append_c(state->ini_error, '^');
 }
 
 static
@@ -498,14 +500,6 @@ int ini_handle_state(struct ini_parsing_state *state)
                g_string_assign(state->last_map_key,
                        state->scanner->value.v_identifier);
 
-               if (bt_value_map_has_entry(state->params,
-                                          state->last_map_key->str)) {
-                       g_string_append_printf(state->ini_error,
-                               "Duplicate parameter key: `%s`\n",
-                               state->last_map_key->str);
-                       goto error;
-               }
-
                state->expecting = INI_EXPECT_EQUAL;
                goto success;
        case INI_EXPECT_EQUAL:
@@ -549,7 +543,7 @@ int ini_handle_state(struct ini_parsing_state *state)
                state->expecting = INI_EXPECT_MAP_KEY;
                goto success;
        default:
-               abort();
+               bt_common_abort();
        }
 
 error:
@@ -581,14 +575,14 @@ bt_value *bt_param_parse(const char *arg, GString *ini_error)
        /* Lexical scanner configuration */
        GScannerConfig scanner_config = {
                /* Skip whitespaces */
-               .cset_skip_characters = " \t\n",
+               .cset_skip_characters = (gchar *) " \t\n",
 
                /* Identifier syntax is: [a-zA-Z_][a-zA-Z0-9_.:-]* */
-               .cset_identifier_first =
+               .cset_identifier_first = (gchar *)
                        G_CSET_a_2_z
                        "_"
                        G_CSET_A_2_Z,
-               .cset_identifier_nth =
+               .cset_identifier_nth = (gchar *)
                        G_CSET_a_2_z
                        "_0123456789-.:"
                        G_CSET_A_2_Z,
This page took 0.024867 seconds and 4 git commands to generate.