- stdin_set_defaults(&sit);
- register_task(&s, &sit.task);
-
- COPY_WAV_PARMS(&wp, &conf);
- cwt = check_wav_init(&s, sit.btrn, &wp, &cwt_btrn);
- if (!conf.writer_given) {
- wns = para_calloc(sizeof(*wns));
- setup_writer_node(NULL, cwt_btrn, wns, &s);
- i = 1;
- } else {
- wns = para_calloc(conf.writer_given * sizeof(*wns));
- for (i = 0; i < conf.writer_given; i++)
- setup_writer_node(conf.writer_arg[i], cwt_btrn,
- wns + i, &s);
+ stdin_task_register(&sit, &s);
+
+ LLS_COPY_WAV_PARMS(&wp, LSG_WRITE_PARA_WRITE, lpr);
+ wt.cwc = check_wav_init(sit.btrn, NULL, &wp, &cw_btrn);
+ wt.task = task_register(&(struct task_info) {
+ .name = "write",
+ .pre_monitor = write_pre_monitor,
+ .post_monitor = write_post_monitor,
+ .context = &wt,
+ }, &s);
+
+ n = writer_given? writer_given : 1;
+ wns = arr_zalloc(n, sizeof(*wns));
+ for (i = 0; i < n; i++) {
+ const char *arg = i < writer_given?
+ lls_string_val(i, OPT_RESULT(WRITER, lpr)) : NULL;
+ wns[i].wid = check_writer_arg_or_die(arg, &wns[i].lpr);
+ register_writer_node(wns + i, cw_btrn, &s);