{
struct bt_config *cfg = NULL;
const char **argv;
- size_t i;
+ int64_t i, len;
const size_t argc = bt_value_array_size(run_args) + 1;
argv = calloc(argc, sizeof(*argv));
argv[0] = "run";
- for (i = 0; i < bt_value_array_size(run_args); i++) {
+ len = bt_value_array_size(run_args);
+ if (len < 0) {
+ printf_err("Invalid executable arguments\n");
+ goto end;
+ }
+ for (i = 0; i < len; i++) {
int ret;
struct bt_value *arg_value = bt_value_array_get(run_args, i);
const char *arg;
fprintf(fp, " `text`:\n");
fprintf(fp, " Create an implicit `sink.text.pretty`\n");
fprintf(fp, " component\n");
- fprintf(fp, " `text`:\n");
+ fprintf(fp, " `ctf`:\n");
fprintf(fp, " Create an implicit `sink.ctf.fs`\n");
fprintf(fp, " component\n");
fprintf(fp, " `dummy`:\n");
bool got_output_format_opt = false;
bool trimmer_has_begin = false;
bool trimmer_has_end = false;
+ bool stream_intersection_mode = false;
GString *cur_name = NULL;
GString *cur_name_prefix = NULL;
const char *leftover = NULL;
case OPT_CLOCK_OFFSET:
base_implicit_ctf_input_args.exists = true;
append_implicit_component_param(
- &implicit_muxer_args,
+ &base_implicit_ctf_input_args,
"clock-class-offset-s", arg);
- if (ret) {
- goto error;
- }
break;
case OPT_CLOCK_OFFSET_NS:
base_implicit_ctf_input_args.exists = true;
- ret = append_implicit_component_extra_param(
- &base_implicit_ctf_input_args,
- "clock-class-offset-ns", arg);
- if (ret) {
- goto error;
- }
+ append_implicit_component_param(
+ &base_implicit_ctf_input_args,
+ "clock-class-offset-ns", arg);
break;
case OPT_CLOCK_SECONDS:
append_implicit_component_param(
print_run_args_0 = true;
break;
case OPT_STREAM_INTERSECTION:
- append_implicit_component_param(
- &base_implicit_ctf_input_args,
- "stream-intersection", "yes");
- base_implicit_ctf_input_args.exists = true;
+ /*
+ * Applies to all traces implementing the trace-info
+ * query.
+ */
+ stream_intersection_mode = true;
break;
case OPT_VERBOSE:
if (*log_level != 'V' && *log_level != 'D') {
* here.
*/
if (print_run_args || print_run_args_0) {
+ if (stream_intersection_mode) {
+ printf_err("Cannot specify --stream-intersection with --run-args or --run-args-0\n");
+ goto error;
+ }
+
for (i = 0; i < bt_value_array_size(run_args); i++) {
struct bt_value *arg_value =
bt_value_array_get(run_args, i);
goto error;
}
+ cfg->cmd_data.run.stream_intersection_mode = stream_intersection_mode;
goto end;
error: