* Return value is owned by the caller.
*/
static
-struct bt_config_component *bt_config_component_create(const char *plugin_name,
- const char *component_name)
+struct bt_config_component *bt_config_component_create(
+ enum bt_component_class_type type,
+ const char *plugin_name, const char *component_name)
{
struct bt_config_component *cfg_component = NULL;
}
bt_object_init(cfg_component, bt_config_component_destroy);
+ cfg_component->type = type;
cfg_component->plugin_name = g_string_new(plugin_name);
if (!cfg_component->plugin_name) {
print_err_oom();
* Creates a component configuration from a command-line source/sink
* option's argument.
*/
-struct bt_config_component *bt_config_component_from_arg(const char *arg)
+struct bt_config_component *bt_config_component_from_arg(
+ enum bt_component_class_type type, const char *arg)
{
struct bt_config_component *bt_config_component = NULL;
char *plugin_name;
goto error;
}
- bt_config_component = bt_config_component_create(plugin_name,
+ bt_config_component = bt_config_component_create(type, plugin_name,
component_name);
if (!bt_config_component) {
goto error;
break;
case BT_CONFIG_COMMAND_HELP:
BT_PUT(cfg->cmd_data.help.plugin_paths);
-
- if (cfg->cmd_data.help.plugin_name) {
- g_string_free(cfg->cmd_data.help.plugin_name, TRUE);
- }
-
- if (cfg->cmd_data.help.component_name) {
- g_string_free(cfg->cmd_data.help.component_name, TRUE);
- }
+ BT_PUT(cfg->cmd_data.help.cfg_component);
break;
default:
assert(false);
component_name = "metadata-text";
break;
case LEGACY_OUTPUT_FORMAT_DUMMY:
- plugin_name = "dummy";
+ plugin_name = "utils";
component_name = "dummy";
break;
default:
}
/* Create a component configuration */
- bt_config_component = bt_config_component_create(plugin_name,
- component_name);
+ bt_config_component = bt_config_component_create(
+ BT_COMPONENT_CLASS_TYPE_SINK, plugin_name, component_name);
if (!bt_config_component) {
goto error;
}
}
/* Create a component configuration */
- bt_config_component = bt_config_component_create("ctf",
- component_name);
+ bt_config_component = bt_config_component_create(
+ BT_COMPONENT_CLASS_TYPE_SOURCE, "ctf", component_name);
if (!bt_config_component) {
goto error;
}
enum legacy_output_format legacy_output_format,
struct text_legacy_opts *text_legacy_opts)
{
- const char *input_format;
+ const char *output_format;
GString *str = NULL;
str = g_string_new(" ");
switch (legacy_output_format) {
case LEGACY_OUTPUT_FORMAT_TEXT:
- input_format = "text";
+ output_format = "text";
break;
case LEGACY_OUTPUT_FORMAT_CTF_METADATA:
- input_format = "ctf-metadata";
+ output_format = "ctf-metadata";
break;
case LEGACY_OUTPUT_FORMAT_DUMMY:
- input_format = "dummy";
+ output_format = "dummy";
break;
default:
assert(false);
}
printf_err("Both `%s` legacy output format and non-legacy sink component\ninstances(s) specified.\n\n",
- input_format);
+ output_format);
printf_err("Specify the following non-legacy sink component instance instead of the\nlegacy `%s` output format options:\n\n",
- input_format);
+ output_format);
g_string_append(str, "-o ");
switch (legacy_output_format) {
g_string_append(str, "ctf.metadata-text");
break;
case LEGACY_OUTPUT_FORMAT_DUMMY:
- g_string_append(str, "dummy.dummy");
+ g_string_append(str, "utils.dummy");
break;
default:
assert(false);
}
}
- cfg->cmd_data.help.plugin_name = g_string_new(NULL);
- if (!cfg->cmd_data.help.plugin_name) {
- print_err_oom();
- goto error;
- }
-
- cfg->cmd_data.help.component_name = g_string_new(NULL);
- if (!cfg->cmd_data.help.component_name) {
+ cfg->cmd_data.help.cfg_component =
+ bt_config_component_create(BT_COMPONENT_CLASS_TYPE_UNKNOWN,
+ NULL, NULL);
+ if (!cfg->cmd_data.help.cfg_component) {
print_err_oom();
goto error;
}
goto error;
}
- cfg->cmd_data.help.comp_cls_type = BT_COMPONENT_CLASS_TYPE_UNKNOWN;
cfg->cmd_data.help.omit_system_plugin_path = omit_system_plugin_path;
cfg->cmd_data.help.omit_home_plugin_path = omit_home_plugin_path;
ret = append_env_var_plugin_paths(cfg->cmd_data.help.plugin_paths);
case OPT_SOURCE:
case OPT_FILTER:
case OPT_SINK:
- if (cfg->cmd_data.help.comp_cls_type !=
+ if (cfg->cmd_data.help.cfg_component->type !=
BT_COMPONENT_CLASS_TYPE_UNKNOWN) {
printf_err("Cannot specify more than one plugin and component class:\n %s\n",
arg);
switch (opt) {
case OPT_SOURCE:
- cfg->cmd_data.help.comp_cls_type =
+ cfg->cmd_data.help.cfg_component->type =
BT_COMPONENT_CLASS_TYPE_SOURCE;
break;
case OPT_FILTER:
- cfg->cmd_data.help.comp_cls_type =
+ cfg->cmd_data.help.cfg_component->type =
BT_COMPONENT_CLASS_TYPE_FILTER;
break;
case OPT_SINK:
- cfg->cmd_data.help.comp_cls_type =
+ cfg->cmd_data.help.cfg_component->type =
BT_COMPONENT_CLASS_TYPE_SINK;
break;
default:
leftover = poptGetArg(pc);
if (leftover) {
- if (cfg->cmd_data.help.comp_cls_type !=
+ if (cfg->cmd_data.help.cfg_component->type !=
BT_COMPONENT_CLASS_TYPE_UNKNOWN) {
printf_err("Cannot specify plugin name and --source/--filter/--sink component class:\n %s\n",
leftover);
goto error;
}
- g_string_assign(cfg->cmd_data.help.plugin_name, leftover);
+ g_string_assign(cfg->cmd_data.help.cfg_component->plugin_name,
+ leftover);
} else {
- if (cfg->cmd_data.help.comp_cls_type ==
+ if (cfg->cmd_data.help.cfg_component->type ==
BT_COMPONENT_CLASS_TYPE_UNKNOWN) {
print_help_usage(stdout);
*retcode = -1;
plugin_component_names_from_arg(plugin_comp_cls_names,
&plugin_name, &component_name);
if (plugin_name && component_name) {
- g_string_assign(cfg->cmd_data.help.plugin_name, plugin_name);
- g_string_assign(cfg->cmd_data.help.component_name,
+ g_string_assign(cfg->cmd_data.help.cfg_component->plugin_name,
+ plugin_name);
+ g_string_assign(cfg->cmd_data.help.cfg_component->component_name,
component_name);
} else {
printf_err("Invalid --source/--filter/--sink option's argument:\n %s\n",
}
/* Note: implicit source never gets positional base params. */
- implicit_source_comp = bt_config_component_from_arg(DEFAULT_SOURCE_COMPONENT_NAME);
+ implicit_source_comp = bt_config_component_from_arg(
+ BT_COMPONENT_CLASS_TYPE_SOURCE, DEFAULT_SOURCE_COMPONENT_NAME);
if (!implicit_source_comp) {
print_err_oom();
goto error;
cur_cfg_comp_dest);
}
- cur_cfg_comp = bt_config_component_from_arg(arg);
+ cur_cfg_comp = bt_config_component_from_arg(
+ BT_COMPONENT_CLASS_TYPE_SOURCE, arg);
if (!cur_cfg_comp) {
printf_err("Invalid format for --source option's argument:\n %s\n",
arg);
cur_cfg_comp_dest);
}
- cur_cfg_comp = bt_config_component_from_arg(arg);
+ cur_cfg_comp = bt_config_component_from_arg(
+ BT_COMPONENT_CLASS_TYPE_SINK, arg);
if (!cur_cfg_comp) {
printf_err("Invalid format for --sink option's argument:\n %s\n",
arg);
if (cfg->cmd_data.convert.sinks->len == 0) {
/* Use implicit sink as default. */
- cur_cfg_comp = bt_config_component_from_arg(DEFAULT_SINK_COMPONENT_NAME);
+ cur_cfg_comp = bt_config_component_from_arg(
+ BT_COMPONENT_CLASS_TYPE_SINK,
+ DEFAULT_SINK_COMPONENT_NAME);
if (!cur_cfg_comp) {
printf_error("Cannot find implicit sink plugin `%s`\n",
DEFAULT_SINK_COMPONENT_NAME);