Move to kernel style SPDX license identifiers
[babeltrace.git] / src / cli / babeltrace2-cfg-cli-args.c
index ae8e8eef3f2fe9d3bae984e06007b9b2e18383c7..37b29ec0ab197b44f0de24dcbdd90899bacded0b 100644 (file)
@@ -1,25 +1,9 @@
 /*
- * Babeltrace trace converter - parameter parsing
+ * SPDX-License-Identifier: MIT
  *
  * Copyright 2016 Philippe Proulx <pproulx@efficios.com>
  *
- * 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.
- *
- * 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.
+ * Babeltrace trace converter - parameter parsing
  */
 
 #define BT_LOG_TAG "CLI/CFG-CLI-ARGS"
 #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.")
 
 /*
@@ -240,16 +175,96 @@ end:
        return;
 }
 
+static
+void print_and_indent(const char *str)
+{
+       const char *ch = &str[0];
+
+       for (; *ch != '\0'; ch++) {
+               if (*ch == '\n') {
+                       if (ch[1] != '\0') {
+                               printf("\n  ");
+                       }
+               } else {
+                       printf("%c", *ch);
+               }
+       }
+
+       printf("\n");
+}
+
 /*
  * Prints the Babeltrace version.
  */
 static
 void print_version(void)
 {
-       if (GIT_VERSION[0] == '\0') {
-               puts("Babeltrace " VERSION);
-       } else {
-               puts("Babeltrace " VERSION  " - " GIT_VERSION);
+       bool has_extra_name = strlen(BT_VERSION_EXTRA_NAME) > 0;
+       bool has_extra_description = strlen(BT_VERSION_EXTRA_DESCRIPTION) > 0;
+       bool has_extra_patch_names = strlen(BT_VERSION_EXTRA_PATCHES) > 0;
+       bool has_extra = has_extra_name || has_extra_description ||
+               has_extra_patch_names;
+
+       printf("%sBabeltrace %s%s",
+               bt_common_color_bold(),
+               VERSION,
+               bt_common_color_reset());
+
+       if (strlen(BT_VERSION_NAME) > 0) {
+               printf(" \"%s%s%s%s\"",
+                       bt_common_color_fg_bright_blue(),
+                       bt_common_color_bold(),
+                       BT_VERSION_NAME,
+                       bt_common_color_reset());
+       }
+
+       if (strlen(BT_VERSION_GIT) > 0) {
+               printf(" [%s%s%s]",
+                       bt_common_color_fg_yellow(),
+                       BT_VERSION_GIT,
+                       bt_common_color_reset());
+       }
+
+       printf("\n");
+
+       if (strlen(BT_VERSION_DESCRIPTION) > 0) {
+               unsigned int columns;
+               GString *descr;
+
+               if (bt_common_get_term_size(&columns, NULL) < 0) {
+                       /* Width not found: default to 80 */
+                       columns = 80;
+               }
+
+               descr = bt_common_fold(BT_VERSION_DESCRIPTION, columns, 0);
+               BT_ASSERT(descr);
+               printf("\n%s\n", descr->str);
+               g_string_free(descr, TRUE);
+       }
+
+       if (has_extra) {
+               printf("\n");
+
+               if (has_extra_name) {
+                       printf("%sExtra name%s: %s\n",
+                               bt_common_color_fg_cyan(),
+                               bt_common_color_reset(),
+                               BT_VERSION_EXTRA_NAME);
+               }
+
+               if (has_extra_description) {
+                       printf("%sExtra description%s:\n  ",
+                               bt_common_color_fg_cyan(),
+                               bt_common_color_reset());
+                       print_and_indent(BT_VERSION_EXTRA_DESCRIPTION);
+               }
+
+               if (has_extra_patch_names) {
+                       printf("%sExtra patch names%s:\n  ",
+                               bt_common_color_fg_cyan(),
+                               bt_common_color_reset());
+                       print_and_indent(BT_VERSION_EXTRA_PATCHES);
+               }
        }
 }
 
@@ -452,7 +467,7 @@ void bt_config_destroy(bt_object *obj)
                }
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        g_free(cfg);
@@ -488,9 +503,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 +750,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 +779,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 +901,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 +1291,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 +1334,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 +1353,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 +1365,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 +1380,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 +1444,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 +1467,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
 };
 
 /*
@@ -1481,7 +1490,7 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[],
        const char *component_class_spec = NULL;
        const char *query_object = NULL;
        GString *error_str = NULL;
-       struct bt_argpar_parse_ret argpar_parse_ret = { 0 };
+       struct argpar_parse_ret argpar_parse_ret = { 0 };
 
        bt_value *params = bt_value_map_create();
        if (!params) {
@@ -1502,11 +1511,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;
        }
 
@@ -1517,13 +1526,13 @@ 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) {
@@ -1552,8 +1561,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
@@ -1604,7 +1613,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);
@@ -1632,10 +1641,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
 };
 
 /*
@@ -1649,7 +1658,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);
@@ -1658,11 +1667,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;
        }
 
@@ -1673,14 +1682,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`.",
@@ -1695,7 +1704,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;
 }
@@ -1793,10 +1802,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 },
@@ -1805,7 +1814,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;
@@ -1847,11 +1856,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;
        }
 
@@ -1862,23 +1871,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) {
@@ -1906,7 +1915,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);
@@ -2058,7 +2067,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);
@@ -2073,33 +2082,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:
@@ -2231,7 +2234,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 },
@@ -2267,7 +2270,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
@@ -2357,7 +2360,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) {
@@ -2400,16 +2403,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);
@@ -2628,7 +2627,7 @@ int bt_value_to_cli_param_value_append(const bt_value *value, GString *buf)
                break;
        }
        default:
-               abort();
+               bt_common_abort();
        }
 
        ret = 0;
@@ -3203,7 +3202,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;
@@ -3326,11 +3325,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;
        }
 
@@ -3341,17 +3340,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) {
@@ -3440,7 +3439,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;
 
@@ -3505,6 +3504,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                        }
                                } else if (current_item_type == CONVERT_CURRENT_ITEM_TYPE_NON_OPT) {
                                        uint64_t idx = bt_value_array_get_length(non_opt_loglevels) - 1;
+                                       enum bt_value_array_set_element_by_index_status set_element_status;
                                        bt_value *log_level_str_value;
 
                                        log_level_str_value = bt_value_string_create_init(arg);
@@ -3513,9 +3513,11 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                                goto error;
                                        }
 
-                                       if (bt_value_array_set_element_by_index(non_opt_loglevels, idx,
-                                                       log_level_str_value)) {
-                                               bt_value_put_ref(log_level_str_value);
+                                       set_element_status =
+                                               bt_value_array_set_element_by_index(non_opt_loglevels,
+                                                       idx, log_level_str_value);
+                                       bt_value_put_ref(log_level_str_value);
+                                       if (set_element_status != BT_VALUE_ARRAY_SET_ELEMENT_BY_INDEX_STATUS_OK) {
                                                BT_CLI_LOGE_APPEND_CAUSE_OOM();
                                                goto error;
                                        }
@@ -3572,13 +3574,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);
@@ -3600,7 +3602,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                                goto error;
                        }
                } else {
-                       abort();
+                       bt_common_abort();
                }
        }
 
@@ -3609,23 +3611,23 @@ 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) {
                case OPT_BEGIN:
                        if (trimmer_has_begin) {
-                               printf("At --begin option: --begin or --timerange option already specified\n    %s\n",
+                               BT_CLI_LOGE_APPEND_CAUSE("At --begin option: --begin or --timerange option already specified\n    %s\n",
                                        arg);
                                goto error;
                        }
@@ -3640,7 +3642,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                        break;
                case OPT_END:
                        if (trimmer_has_end) {
-                               printf("At --end option: --end or --timerange option already specified\n    %s\n",
+                               BT_CLI_LOGE_APPEND_CAUSE("At --end option: --end or --timerange option already specified\n    %s\n",
                                        arg);
                                goto error;
                        }
@@ -3659,7 +3661,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[],
                        char *end;
 
                        if (trimmer_has_begin || trimmer_has_end) {
-                               printf("At --timerange option: --begin, --end, or --timerange option already specified\n    %s\n",
+                               BT_CLI_LOGE_APPEND_CAUSE("At --timerange option: --begin, --end, or --timerange option already specified\n    %s\n",
                                        arg);
                                goto error;
                        }
@@ -4075,7 +4077,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();
@@ -4338,20 +4340,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) {
@@ -4371,7 +4374,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 {
@@ -4399,7 +4402,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);
 
@@ -4491,11 +4494,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 },
@@ -4504,7 +4507,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 {
@@ -4552,24 +4555,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:
@@ -4614,9 +4617,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?
@@ -4628,14 +4631,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
@@ -4728,7 +4736,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) {
@@ -4743,7 +4751,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.038638 seconds and 4 git commands to generate.