cli: fix bt_plugin leak when using `-i ctf`
[babeltrace.git] / src / cli / babeltrace2-cfg-cli-args.c
index 5df6ce3a4a3ce813d30ca6fe0f1f682bc9750357..e6fce2f7a2f92901632d5586db1839804a4b4f31 100644 (file)
 #include "autodisc/autodisc.h"
 #include "common/version.h"
 
-/* Offset option with "is set" boolean */
-struct offset_opt {
-       int64_t value;
-       bool is_set;
-};
-
-/* Legacy "ctf"/"lttng-live" format options */
-struct ctf_legacy_opts {
-       struct offset_opt offset_s;
-       struct offset_opt offset_ns;
-       bool stream_intersection;
-};
-
-/* Legacy "text" format options */
-struct text_legacy_opts {
-       /*
-        * output, dbg_info_dir, dbg_info_target_prefix, names,
-        * and fields are owned by this.
-        */
-       GString *output;
-       GString *dbg_info_dir;
-       GString *dbg_info_target_prefix;
-       const bt_value *names;
-       const bt_value *fields;
-
-       /* Flags */
-       bool no_delta;
-       bool clock_cycles;
-       bool clock_seconds;
-       bool clock_date;
-       bool clock_gmt;
-       bool dbg_info_full_path;
-       bool verbose;
-};
-
-/* Legacy input format format */
-enum legacy_input_format {
-       LEGACY_INPUT_FORMAT_NONE = 0,
-       LEGACY_INPUT_FORMAT_CTF,
-       LEGACY_INPUT_FORMAT_LTTNG_LIVE,
-};
-
-/* Legacy output format format */
-enum legacy_output_format {
-       LEGACY_OUTPUT_FORMAT_NONE = 0,
-       LEGACY_OUTPUT_FORMAT_TEXT,
-       LEGACY_OUTPUT_FORMAT_DUMMY,
-};
-
 #define BT_CLI_LOGE_APPEND_CAUSE_OOM() BT_CLI_LOGE_APPEND_CAUSE("Out of memory.")
 
 /*
@@ -452,7 +403,7 @@ void bt_config_destroy(bt_object *obj)
                }
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        g_free(cfg);
@@ -488,9 +439,9 @@ GScanner *create_csv_identifiers_scanner(void)
 {
        GScanner *scanner;
        GScannerConfig scanner_config = {
-               .cset_skip_characters = " \t\n",
-               .cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z "_",
-               .cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z ":_-",
+               .cset_skip_characters = (gchar *) " \t\n",
+               .cset_identifier_first = (gchar *) G_CSET_a_2_z G_CSET_A_2_Z "_",
+               .cset_identifier_nth = (gchar *) G_CSET_a_2_z G_CSET_A_2_Z ":_-",
                .case_sensitive = TRUE,
                .cpair_comment_single = NULL,
                .skip_comment_multi = TRUE,
@@ -735,7 +686,7 @@ int insert_flat_params_from_array(GString *params_arg,
                const bt_value *names_array, const char *prefix)
 {
        int ret = 0;
-       int i;
+       uint64_t i;
        GString *tmpstr = NULL, *default_value = NULL;
        bool default_set = false, non_default_set = false;
 
@@ -764,16 +715,10 @@ int insert_flat_params_from_array(GString *params_arg,
        for (i = 0; i < bt_value_array_get_length(names_array); i++) {
                const bt_value *str_obj =
                        bt_value_array_borrow_element_by_index_const(names_array,
-                                                                    i);
+                               i);
                const char *suffix;
                bool is_default = false;
 
-               if (!str_obj) {
-                       BT_CLI_LOGE_APPEND_CAUSE("Unexpected error.");
-                       ret = -1;
-                       goto end;
-               }
-
                suffix = bt_value_string_get(str_obj);
 
                g_string_assign(tmpstr, prefix);
@@ -892,7 +837,7 @@ void add_run_cfg_comp(struct bt_config *cfg,
                g_ptr_array_add(cfg->cmd_data.run.sinks, cfg_comp);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 }
 
@@ -1282,21 +1227,21 @@ void print_expected_params_format(FILE *fp)
 
 static
 bool help_option_is_specified(
-               const struct bt_argpar_parse_ret *argpar_parse_ret)
+               const struct argpar_parse_ret *argpar_parse_ret)
 {
        int i;
        bool specified = false;
 
-       for (i = 0; i < argpar_parse_ret->items->len; i++) {
-               struct bt_argpar_item *argpar_item =
-                       g_ptr_array_index(argpar_parse_ret->items, i);
-               struct bt_argpar_item_opt *argpar_item_opt;
+       for (i = 0; i < argpar_parse_ret->items->n_items; i++) {
+               struct argpar_item *argpar_item =
+                       argpar_parse_ret->items->items[i];
+               struct argpar_item_opt *argpar_item_opt;
 
-               if (argpar_item->type != BT_ARGPAR_ITEM_TYPE_OPT) {
+               if (argpar_item->type != ARGPAR_ITEM_TYPE_OPT) {
                        continue;
                }
 
-               argpar_item_opt = (struct bt_argpar_item_opt *) argpar_item;
+               argpar_item_opt = (struct argpar_item_opt *) argpar_item;
                if (argpar_item_opt->descr->id == OPT_HELP) {
                        specified = true;
                        break;
@@ -1325,10 +1270,10 @@ void print_help_usage(FILE *fp)
 }
 
 static
-const struct bt_argpar_opt_descr help_options[] = {
+const struct argpar_opt_descr help_options[] = {
        /* id, short_name, long_name, with_arg */
        { OPT_HELP, 'h', "help", false },
-       BT_ARGPAR_OPT_DESCR_SENTINEL
+       ARGPAR_OPT_DESCR_SENTINEL
 };
 
 /*
@@ -1344,8 +1289,8 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[],
 {
        struct bt_config *cfg = NULL;
        char *plugin_name = NULL, *comp_cls_name = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
-       struct bt_argpar_item_non_opt *non_opt;
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_item_non_opt *non_opt;
        GString *substring = NULL;
        size_t end_pos;
 
@@ -1356,11 +1301,11 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[],
        }
 
        /* Parse options */
-       argpar_parse_ret = bt_argpar_parse(argc, argv, help_options, true);
+       argpar_parse_ret = argpar_parse(argc, argv, help_options, true);
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing `help` command's command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
@@ -1371,24 +1316,24 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[],
                goto end;
        }
 
-       if (argpar_parse_ret.items->len == 0) {
+       if (argpar_parse_ret.items->n_items == 0) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "Missing plugin name or component class descriptor.");
                goto error;
-       } else if (argpar_parse_ret.items->len > 1) {
+       } else if (argpar_parse_ret.items->n_items > 1) {
                /*
                 * At this point we know there are least two non-option
                 * arguments because we don't reach here with `--help`,
                 * the only option.
                 */
-               non_opt = argpar_parse_ret.items->pdata[1];
+               non_opt = (struct argpar_item_non_opt *) argpar_parse_ret.items->items[1];
                BT_CLI_LOGE_APPEND_CAUSE(
                        "Extraneous command-line argument specified to `help` command: `%s`.",
                        non_opt->arg);
                goto error;
        }
 
-       non_opt = argpar_parse_ret.items->pdata[0];
+       non_opt = (struct argpar_item_non_opt *) argpar_parse_ret.items->items[0];
 
        /* Look for unescaped dots in the argument. */
        substring = bt_common_string_until(non_opt->arg, ".\\", ".", &end_pos);
@@ -1435,7 +1380,7 @@ end:
                g_string_free(substring, TRUE);
        }
 
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
 
        return cfg;
 }
@@ -1458,11 +1403,11 @@ void print_query_usage(FILE *fp)
 }
 
 static
-const struct bt_argpar_opt_descr query_options[] = {
+const struct argpar_opt_descr query_options[] = {
        /* id, short_name, long_name, with_arg */
        { OPT_HELP, 'h', "help", false },
        { OPT_PARAMS, 'p', "params", true },
-       BT_ARGPAR_OPT_DESCR_SENTINEL
+       ARGPAR_OPT_DESCR_SENTINEL
 };
 
 /*
@@ -1480,12 +1425,14 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[],
        struct bt_config *cfg = NULL;
        const char *component_class_spec = NULL;
        const char *query_object = NULL;
-       bt_value *params;
        GString *error_str = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
 
-       params = bt_value_null;
-       bt_value_get_ref(bt_value_null);
+       bt_value *params = bt_value_map_create();
+       if (!params) {
+               BT_CLI_LOGE_APPEND_CAUSE_OOM();
+               goto error;
+       }
 
        *retcode = 0;
        cfg = bt_config_query_create(plugin_paths);
@@ -1500,11 +1447,11 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[],
        }
 
        /* Parse options */
-       argpar_parse_ret = bt_argpar_parse(argc, argv, query_options, true);
+       argpar_parse_ret = argpar_parse(argc, argv, query_options, true);
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing `query` command's command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
@@ -1515,25 +1462,33 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[],
                goto end;
        }
 
-       for (i = 0; i < argpar_parse_ret.items->len; i++) {
-               struct bt_argpar_item *argpar_item =
-                       g_ptr_array_index(argpar_parse_ret.items, i);
+       for (i = 0; i < argpar_parse_ret.items->n_items; i++) {
+               struct argpar_item *argpar_item =
+                       argpar_parse_ret.items->items[i];
 
-               if (argpar_item->type == BT_ARGPAR_ITEM_TYPE_OPT) {
-                       struct bt_argpar_item_opt *argpar_item_opt =
-                               (struct bt_argpar_item_opt *) argpar_item;
+               if (argpar_item->type == ARGPAR_ITEM_TYPE_OPT) {
+                       struct argpar_item_opt *argpar_item_opt =
+                               (struct argpar_item_opt *) argpar_item;
                        const char *arg = argpar_item_opt->arg;
 
                        switch (argpar_item_opt->descr->id) {
                        case OPT_PARAMS:
                        {
-                               bt_value_put_ref(params);
-                               params = bt_param_parse(arg, error_str);
-                               if (!params) {
+                               bt_value *parsed_params = bt_param_parse(arg, error_str);
+                               bt_value_map_extend_status extend_status;
+                               if (!parsed_params) {
                                        BT_CLI_LOGE_APPEND_CAUSE("Invalid format for --params option's argument:\n    %s",
                                                error_str->str);
                                        goto error;
                                }
+
+                               extend_status = bt_value_map_extend(params, parsed_params);
+                               BT_VALUE_PUT_REF_AND_RESET(parsed_params);
+                               if (extend_status) {
+                                       BT_CLI_LOGE_APPEND_CAUSE("Cannot extend current parameters with --params option's argument:\n    %s",
+                                               arg);
+                                       goto error;
+                               }
                                break;
                        }
                        default:
@@ -1542,8 +1497,8 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[],
                                goto error;
                        }
                } else {
-                       struct bt_argpar_item_non_opt *argpar_item_non_opt
-                               = (struct bt_argpar_item_non_opt *) argpar_item;
+                       struct argpar_item_non_opt *argpar_item_non_opt
+                               = (struct argpar_item_non_opt *) argpar_item;
 
                        /*
                         * We need exactly two non-option arguments
@@ -1594,7 +1549,7 @@ error:
        BT_OBJECT_PUT_REF_AND_RESET(cfg);
 
 end:
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
 
        if (error_str) {
                g_string_free(error_str, TRUE);
@@ -1622,10 +1577,10 @@ void print_list_plugins_usage(FILE *fp)
 }
 
 static
-const struct bt_argpar_opt_descr list_plugins_options[] = {
+const struct argpar_opt_descr list_plugins_options[] = {
        /* id, short_name, long_name, with_arg */
        { OPT_HELP, 'h', "help", false },
-       BT_ARGPAR_OPT_DESCR_SENTINEL
+       ARGPAR_OPT_DESCR_SENTINEL
 };
 
 /*
@@ -1639,7 +1594,7 @@ struct bt_config *bt_config_list_plugins_from_args(int argc, const char *argv[],
                int *retcode, const bt_value *plugin_paths)
 {
        struct bt_config *cfg = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
 
        *retcode = 0;
        cfg = bt_config_list_plugins_create(plugin_paths);
@@ -1648,11 +1603,11 @@ struct bt_config *bt_config_list_plugins_from_args(int argc, const char *argv[],
        }
 
        /* Parse options */
-       argpar_parse_ret = bt_argpar_parse(argc, argv, list_plugins_options, true);
+       argpar_parse_ret = argpar_parse(argc, argv, list_plugins_options, true);
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing `list-plugins` command's command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
@@ -1663,14 +1618,14 @@ struct bt_config *bt_config_list_plugins_from_args(int argc, const char *argv[],
                goto end;
        }
 
-       if (argpar_parse_ret.items->len > 0) {
+       if (argpar_parse_ret.items->n_items > 0) {
                /*
                 * At this point we know there's at least one non-option
                 * argument because we don't reach here with `--help`,
                 * the only option.
                 */
-               struct bt_argpar_item_non_opt *non_opt =
-                       argpar_parse_ret.items->pdata[0];
+               struct argpar_item_non_opt *non_opt =
+                       (struct argpar_item_non_opt *) argpar_parse_ret.items->items[0];
 
                BT_CLI_LOGE_APPEND_CAUSE(
                        "Extraneous command-line argument specified to `list-plugins` command: `%s`.",
@@ -1685,7 +1640,7 @@ error:
        BT_OBJECT_PUT_REF_AND_RESET(cfg);
 
 end:
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
 
        return cfg;
 }
@@ -1783,10 +1738,10 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
        long retry_duration = -1;
        bt_value_map_extend_status extend_status;
        GString *error_str = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
        int i;
 
-       static const struct bt_argpar_opt_descr run_options[] = {
+       static const struct argpar_opt_descr run_options[] = {
                { OPT_BASE_PARAMS, 'b', "base-params", true },
                { OPT_COMPONENT, 'c', "component", true },
                { OPT_CONNECT, 'x', "connect", true },
@@ -1795,7 +1750,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                { OPT_PARAMS, 'p', "params", true },
                { OPT_RESET_BASE_PARAMS, 'r', "reset-base-params", false },
                { OPT_RETRY_DURATION, '\0', "retry-duration", true },
-               BT_ARGPAR_OPT_DESCR_SENTINEL
+               ARGPAR_OPT_DESCR_SENTINEL
        };
 
        *retcode = 0;
@@ -1837,11 +1792,11 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
        }
 
        /* Parse options */
-       argpar_parse_ret = bt_argpar_parse(argc, argv, run_options, true);
+       argpar_parse_ret = argpar_parse(argc, argv, run_options, true);
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing `run` command's command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
@@ -1852,23 +1807,23 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                goto end;
        }
 
-       for (i = 0; i < argpar_parse_ret.items->len; i++) {
-               struct bt_argpar_item *argpar_item =
-                       g_ptr_array_index(argpar_parse_ret.items, i);
-               struct bt_argpar_item_opt *argpar_item_opt;
+       for (i = 0; i < argpar_parse_ret.items->n_items; i++) {
+               struct argpar_item *argpar_item =
+                       argpar_parse_ret.items->items[i];
+               struct argpar_item_opt *argpar_item_opt;
                const char *arg;
 
                /* This command does not accept non-option arguments.*/
-               if (argpar_item->type == BT_ARGPAR_ITEM_TYPE_NON_OPT) {
-                       struct bt_argpar_item_non_opt *argpar_nonopt_item =
-                               (struct bt_argpar_item_non_opt *) argpar_item;
+               if (argpar_item->type == ARGPAR_ITEM_TYPE_NON_OPT) {
+                       struct argpar_item_non_opt *argpar_nonopt_item =
+                               (struct argpar_item_non_opt *) argpar_item;
 
                        BT_CLI_LOGE_APPEND_CAUSE("Unexpected argument: `%s`",
                                argpar_nonopt_item->arg);
                        goto error;
                }
 
-               argpar_item_opt = (struct bt_argpar_item_opt *) argpar_item;
+               argpar_item_opt = (struct argpar_item_opt *) argpar_item;
                arg = argpar_item_opt->arg;
 
                switch (argpar_item_opt->descr->id) {
@@ -1896,7 +1851,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                                dest = BT_CONFIG_COMPONENT_DEST_SINK;
                                break;
                        default:
-                               abort();
+                               bt_common_abort();
                        }
 
                        BT_ASSERT(cur_base_params);
@@ -1919,7 +1874,6 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                case OPT_PARAMS:
                {
                        bt_value *params;
-                       bt_value *params_to_set;
 
                        if (!cur_cfg_comp) {
                                BT_CLI_LOGE_APPEND_CAUSE("Cannot add parameters to unavailable component:\n    %s",
@@ -1934,8 +1888,8 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                                goto error;
                        }
 
-                       extend_status = bt_value_map_extend(
-                               cur_cfg_comp->params, params, &params_to_set);
+                       extend_status = bt_value_map_extend(cur_cfg_comp->params,
+                               params);
                        BT_VALUE_PUT_REF_AND_RESET(params);
                        if (extend_status != BT_VALUE_MAP_EXTEND_STATUS_OK) {
                                BT_CLI_LOGE_APPEND_CAUSE("Cannot extend current component parameters with --params option's argument:\n    %s",
@@ -1943,7 +1897,6 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[],
                                goto error;
                        }
 
-                       BT_OBJECT_MOVE_REF(cur_cfg_comp->params, params_to_set);
                        break;
                }
                case OPT_LOG_LEVEL:
@@ -2050,7 +2003,7 @@ end:
                g_string_free(error_str, TRUE);
        }
 
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
        BT_OBJECT_PUT_REF_AND_RESET(cur_cfg_comp);
        BT_VALUE_PUT_REF_AND_RESET(cur_base_params);
        BT_VALUE_PUT_REF_AND_RESET(instance_names);
@@ -2065,33 +2018,27 @@ struct bt_config *bt_config_run_from_args_array(const bt_value *run_args,
 {
        struct bt_config *cfg = NULL;
        const char **argv;
-       int64_t i, len;
-       const size_t argc = bt_value_array_get_length(run_args);
+       uint64_t i, len = bt_value_array_get_length(run_args);
 
-       argv = calloc(argc, sizeof(*argv));
+       BT_ASSERT(len <= SIZE_MAX);
+       argv = calloc((size_t) len, sizeof(*argv));
        if (!argv) {
                BT_CLI_LOGE_APPEND_CAUSE_OOM();
                goto end;
        }
 
-       len = bt_value_array_get_length(run_args);
-       if (len < 0) {
-               BT_CLI_LOGE_APPEND_CAUSE("Invalid executable arguments.");
-               goto end;
-       }
        for (i = 0; i < len; i++) {
                const bt_value *arg_value =
                        bt_value_array_borrow_element_by_index_const(run_args,
-                                                                    i);
+                               i);
                const char *arg;
 
-               BT_ASSERT(arg_value);
                arg = bt_value_string_get(arg_value);
                BT_ASSERT(arg);
                argv[i] = arg;
        }
 
-       cfg = bt_config_run_from_args(argc, argv, retcode,
+       cfg = bt_config_run_from_args((int) len, argv, retcode,
                plugin_paths, default_log_level);
 
 end:
@@ -2223,7 +2170,7 @@ void print_convert_usage(FILE *fp)
 }
 
 static
-const struct bt_argpar_opt_descr convert_options[] = {
+const struct argpar_opt_descr convert_options[] = {
        /* id, short_name, long_name, with_arg */
        { OPT_BEGIN, 'b', "begin", true },
        { OPT_CLOCK_CYCLES, '\0', "clock-cycles", false },
@@ -2259,7 +2206,7 @@ const struct bt_argpar_opt_descr convert_options[] = {
        { OPT_STREAM_INTERSECTION, '\0', "stream-intersection", false },
        { OPT_TIMERANGE, '\0', "timerange", true },
        { OPT_VERBOSE, 'v', "verbose", false },
-       BT_ARGPAR_OPT_DESCR_SENTINEL
+       ARGPAR_OPT_DESCR_SENTINEL
 };
 
 static
@@ -2349,7 +2296,7 @@ int append_run_args_for_implicit_component(
                bt_value *run_args)
 {
        int ret = 0;
-       size_t i;
+       uint64_t i;
        GString *component_arg_for_run = NULL;
 
        if (!impl_args->exists) {
@@ -2392,16 +2339,12 @@ int append_run_args_for_implicit_component(
                }
        }
 
-       for (i = 0; i < bt_value_array_get_length(impl_args->extra_params);
-                       i++) {
+       for (i = 0; i < bt_value_array_get_length(impl_args->extra_params); i++) {
                const bt_value *elem;
                const char *arg;
 
-               elem = bt_value_array_borrow_element_by_index(impl_args->extra_params,
-                                                             i);
-               if (!elem) {
-                       goto error;
-               }
+               elem = bt_value_array_borrow_element_by_index(
+                       impl_args->extra_params, i);
 
                BT_ASSERT(bt_value_is_string(elem));
                arg = bt_value_string_get(elem);
@@ -2603,7 +2546,6 @@ int bt_value_to_cli_param_value_append(const bt_value *value, GString *buf)
                uint64_t sz = bt_value_array_get_length(value);
                for (uint64_t i = 0; i < sz; i++) {
                        const bt_value *item;
-                       int ret;
 
                        if (i > 0) {
                                g_string_append(buf, ", ");
@@ -2621,7 +2563,7 @@ int bt_value_to_cli_param_value_append(const bt_value *value, GString *buf)
                break;
        }
        default:
-               abort();
+               bt_common_abort();
        }
 
        ret = 0;
@@ -3196,7 +3138,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
        char *output = NULL;
        struct auto_source_discovery auto_disc = { NULL };
        GString *auto_disc_comp_name = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
        GString *name_gstr = NULL;
        GString *component_arg_for_run = NULL;
        bt_value *live_inputs_array_val = NULL;
@@ -3319,11 +3261,11 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
         * arguments if needed to automatically name unnamed component
         * instances.
         */
-       argpar_parse_ret = bt_argpar_parse(argc, argv, convert_options, true);
+       argpar_parse_ret = argpar_parse(argc, argv, convert_options, true);
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing `convert` command's command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
@@ -3334,17 +3276,17 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                goto end;
        }
 
-       for (i = 0; i < argpar_parse_ret.items->len; i++) {
-               struct bt_argpar_item *argpar_item =
-                       g_ptr_array_index(argpar_parse_ret.items, i);
-               struct bt_argpar_item_opt *argpar_item_opt;
+       for (i = 0; i < argpar_parse_ret.items->n_items; i++) {
+               struct argpar_item *argpar_item =
+                       argpar_parse_ret.items->items[i];
+               struct argpar_item_opt *argpar_item_opt;
                char *name = NULL;
                char *plugin_name = NULL;
                char *comp_cls_name = NULL;
                const char *arg;
 
-               if (argpar_item->type == BT_ARGPAR_ITEM_TYPE_OPT) {
-                       argpar_item_opt = (struct bt_argpar_item_opt *) argpar_item;
+               if (argpar_item->type == ARGPAR_ITEM_TYPE_OPT) {
+                       argpar_item_opt = (struct argpar_item_opt *) argpar_item;
                        arg = argpar_item_opt->arg;
 
                        switch (argpar_item_opt->descr->id) {
@@ -3433,7 +3375,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                        sink_names = g_list_append(sink_names, name_gstr);
                                        break;
                                default:
-                                       abort();
+                                       bt_common_abort();
                                }
                                name_gstr = NULL;
 
@@ -3565,13 +3507,13 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                        argpar_item_opt->descr->id);
                                goto error;
                        }
-               } else if (argpar_item->type == BT_ARGPAR_ITEM_TYPE_NON_OPT) {
-                       struct bt_argpar_item_non_opt *argpar_item_non_opt;
+               } else if (argpar_item->type == ARGPAR_ITEM_TYPE_NON_OPT) {
+                       struct argpar_item_non_opt *argpar_item_non_opt;
                        bt_value_array_append_element_status append_status;
 
                        current_item_type = CONVERT_CURRENT_ITEM_TYPE_NON_OPT;
 
-                       argpar_item_non_opt = (struct bt_argpar_item_non_opt *) argpar_item;
+                       argpar_item_non_opt = (struct argpar_item_non_opt *) argpar_item;
 
                        append_status = bt_value_array_append_string_element(non_opts,
                                argpar_item_non_opt->arg);
@@ -3593,7 +3535,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                goto error;
                        }
                } else {
-                       abort();
+                       bt_common_abort();
                }
        }
 
@@ -3602,17 +3544,17 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
         * arguments into implicit component instances for the run
         * command.
         */
-       for (i = 0; i < argpar_parse_ret.items->len; i++) {
-               struct bt_argpar_item *argpar_item =
-                       g_ptr_array_index(argpar_parse_ret.items, i);
-               struct bt_argpar_item_opt *argpar_item_opt;
+       for (i = 0; i < argpar_parse_ret.items->n_items; i++) {
+               struct argpar_item *argpar_item =
+                       argpar_parse_ret.items->items[i];
+               struct argpar_item_opt *argpar_item_opt;
                const char *arg;
 
-               if (argpar_item->type != BT_ARGPAR_ITEM_TYPE_OPT) {
+               if (argpar_item->type != ARGPAR_ITEM_TYPE_OPT) {
                        continue;
                }
 
-               argpar_item_opt = (struct bt_argpar_item_opt *) argpar_item;
+               argpar_item_opt = (struct argpar_item_opt *) argpar_item;
                arg = argpar_item_opt->arg;
 
                switch (argpar_item_opt->descr->id) {
@@ -4068,7 +4010,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
 
                        if (auto_source_discovery_restrict_plugin_name) {
                                plugin_count = 1;
-                               plugin = find_loaded_plugin(auto_source_discovery_restrict_plugin_name);
+                               plugin = borrow_loaded_plugin_by_name(auto_source_discovery_restrict_plugin_name);
                                plugins = &plugin;
                        } else {
                                plugin_count = get_loaded_plugins_count();
@@ -4331,20 +4273,21 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
         * here.
         */
        if (print_run_args || print_run_args_0) {
+               uint64_t args_idx, args_len;
                if (stream_intersection_mode) {
                        BT_CLI_LOGE_APPEND_CAUSE("Cannot specify --stream-intersection with --run-args or --run-args-0.");
                        goto error;
                }
 
-               for (i = 0; i < bt_value_array_get_length(run_args); i++) {
+               args_len = bt_value_array_get_length(run_args);
+               for (args_idx = 0; args_idx < args_len; args_idx++) {
                        const bt_value *arg_value =
                                bt_value_array_borrow_element_by_index(run_args,
-                                                                      i);
+                                       args_idx);
                        const char *arg;
                        GString *quoted = NULL;
                        const char *arg_to_print;
 
-                       BT_ASSERT(arg_value);
                        arg = bt_value_string_get(arg_value);
 
                        if (print_run_args) {
@@ -4364,7 +4307,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                g_string_free(quoted, TRUE);
                        }
 
-                       if (i < bt_value_array_get_length(run_args) - 1) {
+                       if (args_idx < args_len - 1) {
                                if (print_run_args) {
                                        putchar(' ');
                                } else {
@@ -4392,7 +4335,7 @@ error:
        BT_OBJECT_PUT_REF_AND_RESET(cfg);
 
 end:
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
 
        free(output);
 
@@ -4484,11 +4427,11 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
        const char **command_argv = NULL;
        const char *command_name = NULL;
        int default_log_level = -1;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
        bt_value *plugin_paths = NULL;
 
        /* Top-level option descriptions. */
-       static const struct bt_argpar_opt_descr descrs[] = {
+       static const struct argpar_opt_descr descrs[] = {
                { OPT_DEBUG, 'd', "debug", false },
                { OPT_HELP, 'h', "help", false },
                { OPT_LOG_LEVEL, 'l', "log-level", true },
@@ -4497,7 +4440,7 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
                { OPT_OMIT_HOME_PLUGIN_PATH, '\0', "omit-home-plugin-path", false },
                { OPT_OMIT_SYSTEM_PLUGIN_PATH, '\0', "omit-system-plugin-path", false },
                { OPT_PLUGIN_PATH, '\0', "plugin-path", true },
-               BT_ARGPAR_OPT_DESCR_SENTINEL
+               ARGPAR_OPT_DESCR_SENTINEL
        };
 
        enum command_type {
@@ -4545,24 +4488,24 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
        /* Skip first argument, the name of the program. */
        top_level_argc = argc - 1;
        top_level_argv = argv + 1;
-       argpar_parse_ret = bt_argpar_parse(top_level_argc, top_level_argv,
+       argpar_parse_ret = argpar_parse(top_level_argc, top_level_argv,
                descrs, false);
 
        if (argpar_parse_ret.error) {
                BT_CLI_LOGE_APPEND_CAUSE(
                        "While parsing command-line arguments: %s",
-                       argpar_parse_ret.error->str);
+                       argpar_parse_ret.error);
                goto error;
        }
 
-       for (i = 0; i < argpar_parse_ret.items->len; i++) {
-               struct bt_argpar_item *item;
+       for (i = 0; i < argpar_parse_ret.items->n_items; i++) {
+               struct argpar_item *item;
 
-               item = g_ptr_array_index(argpar_parse_ret.items, i);
+               item = argpar_parse_ret.items->items[i];
 
-               if (item->type == BT_ARGPAR_ITEM_TYPE_OPT) {
-                       struct bt_argpar_item_opt *item_opt =
-                               (struct bt_argpar_item_opt *) item;
+               if (item->type == ARGPAR_ITEM_TYPE_OPT) {
+                       struct argpar_item_opt *item_opt =
+                               (struct argpar_item_opt *) item;
 
                        switch (item_opt->descr->id) {
                                case OPT_DEBUG:
@@ -4607,9 +4550,9 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
                                        print_gen_usage(stdout);
                                        goto end;
                        }
-               } else if (item->type == BT_ARGPAR_ITEM_TYPE_NON_OPT) {
-                       struct bt_argpar_item_non_opt *item_non_opt =
-                               (struct bt_argpar_item_non_opt *) item;
+               } else if (item->type == ARGPAR_ITEM_TYPE_NON_OPT) {
+                       struct argpar_item_non_opt *item_non_opt =
+                               (struct argpar_item_non_opt *) item;
                        /*
                         * First unknown argument: is it a known command
                         * name?
@@ -4621,14 +4564,19 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
 
                        if (strcmp(item_non_opt->arg, "convert") == 0) {
                                command_type = COMMAND_TYPE_CONVERT;
+                               command_name = "convert";
                        } else if (strcmp(item_non_opt->arg, "list-plugins") == 0) {
                                command_type = COMMAND_TYPE_LIST_PLUGINS;
+                               command_name = "list-plugins";
                        } else if (strcmp(item_non_opt->arg, "help") == 0) {
                                command_type = COMMAND_TYPE_HELP;
+                               command_name = "help";
                        } else if (strcmp(item_non_opt->arg, "query") == 0) {
                                command_type = COMMAND_TYPE_QUERY;
+                               command_name = "query";
                        } else if (strcmp(item_non_opt->arg, "run") == 0) {
                                command_type = COMMAND_TYPE_RUN;
+                               command_name = "run";
                        } else {
                                /*
                                 * Non-option argument, but not a known
@@ -4721,7 +4669,7 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[],
                        default_log_level);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        if (config) {
@@ -4736,7 +4684,7 @@ error:
        *retcode = 1;
 
 end:
-       bt_argpar_parse_ret_fini(&argpar_parse_ret);
+       argpar_parse_ret_fini(&argpar_parse_ret);
        bt_value_put_ref(plugin_paths);
        return config;
 }
This page took 0.038029 seconds and 4 git commands to generate.