- printf_or_die("%s\n\n", WRITE_CMDLINE_PARSER_PACKAGE "-"
- WRITE_CMDLINE_PARSER_VERSION);
- printf_or_die("%s\n\n", write_args_info_usage);
- for (; *p; p++)
- printf_or_die("%s\n", *p);
- print_writer_helps(d);
- exit(0);
-}
-
-/*
- TODO: check wav, initial delay, multiple writers, non-default writers
- */
-static int main_btr(struct sched *s)
-{
- int i, ret;
- struct check_wav_task_btr _cwt, *cwt = &_cwt;
- struct writer_node **wns;
-
- sit.btrn = btr_new_node("stdin", NULL /* stdin has no parent */, NULL, NULL);
- stdin_set_defaults(&sit);
- register_task(&sit.task);
-
- cwt->state = CWS_NEED_HEADER;
- cwt->btrn = btr_new_node("check wav", sit.btrn, check_wav_exec, cwt);
- sprintf(cwt->task.status, "check wav");
- cwt->task.pre_select = check_wav_pre_select_btr;
- cwt->task.post_select = check_wav_post_select_btr;
- cwt->task.error = 0;
- register_task(&cwt->task);
-
- wns = para_malloc(conf.writer_given * sizeof(*wns));
-
- for (i = 0; i < conf.writer_given; i++) {
- struct writer_node *wn = para_calloc(sizeof(*wn));
- struct writer *w;
- const char *name;
-
- ret = -E_WRITE_SYNTAX;
- wn->conf = check_writer_arg(conf.writer_arg[i],
- &wn->writer_num);
- if (!wn->conf)
- goto out;
- w = writers + wn->writer_num;
- name = writer_names[wn->writer_num];
- wn->btrn = btr_new_node(name, cwt->btrn, w->execute, wn);
- sprintf(wn->task.status, "%s", name);
- w->open(wn);
- wn->task.post_select = w->post_select_btr;
- wn->task.pre_select = w->pre_select_btr;
- register_task(&wn->task);
- wns[i] = wn;
+ s.default_timeout.tv_sec = 10;
+ s.default_timeout.tv_usec = 50000;
+ ret = schedule(&s);
+ if (ret >= 0) {
+ int j;
+ for (j = 0; j < i; j++) {
+ struct task *t = wns[j].task;
+ assert(t->error < 0);
+ if (t->error != -E_WRITE_COMMON_EOF
+ && t->error != -E_BTR_EOF) {
+ PARA_ERROR_LOG("%s: %s\n", t->status,
+ para_strerror(-t->error));
+ if (ret >= 0)
+ ret = t->error;
+ }
+ }