+ case OPT_FILTER:
+ {
+ if (cur_cfg_comp && !cur_is_implicit_source) {
+ add_cfg_comp(cfg, cur_cfg_comp,
+ cur_cfg_comp_dest);
+ }
+
+ cur_cfg_comp = bt_config_component_from_arg(
+ BT_COMPONENT_CLASS_TYPE_FILTER, arg);
+ if (!cur_cfg_comp) {
+ printf_err("Invalid format for --filter option's argument:\n %s\n",
+ arg);
+ goto error;
+ }
+ cur_is_implicit_source = false;
+
+ assert(cur_base_params);
+ bt_put(cur_cfg_comp->params);
+ cur_cfg_comp->params = bt_value_copy(cur_base_params);
+ if (!cur_cfg_comp->params) {
+ print_err_oom();
+ goto error;
+ }
+
+ cur_cfg_comp_dest = BT_CONFIG_COMPONENT_DEST_FILTER;
+ break;
+ }