X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write.c;h=c64ecb636220c275a244162990c1756949387b1f;hp=f79daf237e286dfc6821d06ad93dfdaa49bab84a;hb=5003c209ca8f863d6608268fedbad2c18fe06179;hpb=aa234b7afe223879a7bd7274ce05a3a315a2ec49 diff --git a/write.c b/write.c index f79daf23..c64ecb63 100644 --- a/write.c +++ b/write.c @@ -282,8 +282,9 @@ static int main_btr(struct sched *s) { int i, ret; struct check_wav_task_btr _cwt, *cwt = &_cwt; - struct writer_node **wns; + struct writer_node *wns; + loglevel = get_loglevel_by_name(conf.loglevel_arg); sit.btrn = btr_new_node("stdin", NULL /* stdin has no parent */, NULL, NULL); stdin_set_defaults(&sit); register_task(&sit.task); @@ -296,23 +297,20 @@ static int main_btr(struct sched *s) cwt->task.error = 0; register_task(&cwt->task); - PARA_CRIT_LOG("writers:\n"); - ret = -E_WRITE_SYNTAX; if (!conf.writer_given) { i = 0; - wns = para_malloc(sizeof(*wns)); - wns[0] = setup_writer_node(NULL, cwt->btrn); - if (!wns[0]) + wns = para_calloc(sizeof(*wns)); + ret = setup_writer_node(NULL, cwt->btrn, wns); + if (ret < 0) goto out; i = 1; } else { - wns = para_malloc(conf.writer_given * sizeof(*wns)); + wns = para_calloc(conf.writer_given * sizeof(*wns)); for (i = 0; i < conf.writer_given; i++) { - PARA_CRIT_LOG("i: %d\n", i); - wns[i] = setup_writer_node(conf.writer_arg[i], - cwt->btrn); - if (!wns[i]) + ret = setup_writer_node(conf.writer_arg[i], + cwt->btrn, wns + i); + if (ret < 0) goto out; } } @@ -322,7 +320,7 @@ static int main_btr(struct sched *s) ret = schedule(s); out: for (i--; i >= 0; i--) { - struct writer_node *wn = wns[i]; + struct writer_node *wn = wns + i; struct writer *w = writers + wn->writer_num; w->close(wn); @@ -331,6 +329,7 @@ out: free(wn); } free(wns); + btr_free_node(cwt->btrn); return ret; }