]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - write.c
write: Get rid of gengetopt's string parser.
[paraslash.git] / write.c
diff --git a/write.c b/write.c
index 3b5f2d193f31ddc1d8c130703637810f807f255f..df37d7ec5ce6efcae37cdf8cdb9de49c94ee5898 100644 (file)
--- a/write.c
+++ b/write.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2012 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -8,7 +8,6 @@
 
 #include <regex.h>
 #include <sys/types.h>
-#include <stdbool.h>
 
 #include "para.h"
 #include "string.h"
@@ -144,7 +143,7 @@ pushdown:
 out:
        t->error = ret;
        if (ret < 0)
-               btr_remove_node(btrn);
+               btr_remove_node(&cwt->btrn);
 }
 
 static int loglevel;
@@ -186,15 +185,10 @@ __noreturn static void print_help_and_die(void)
  * \return Standard.
  */
 static void setup_writer_node(const char *arg, struct btr_node *parent,
-               struct writer_node *wn)
+               struct writer_node *wn, struct sched *s)
 {
-       if (arg)
-               wn->conf = check_writer_arg_or_die(arg, &wn->writer_num);
-       else {
-               wn->writer_num = DEFAULT_WRITER;
-               wn->conf = writers[DEFAULT_WRITER].parse_config_or_die("");
-       }
-       register_writer_node(wn, parent);
+       wn->conf = check_writer_arg_or_die(arg, &wn->writer_num);
+       register_writer_node(wn, parent, s);
 }
 
 static int setup_and_schedule(void)
@@ -208,7 +202,7 @@ static int setup_and_schedule(void)
        sit.btrn = btr_new_node(&(struct btr_node_description)
                EMBRACE(.name = "stdin"));
        stdin_set_defaults(&sit);
-       register_task(&sit.task);
+       register_task(&s, &sit.task);
 
        cwt->state = CWS_NEED_HEADER;
        cwt->min_iqs = WAV_HEADER_LEN;
@@ -219,17 +213,17 @@ static int setup_and_schedule(void)
        cwt->task.pre_select = check_wav_pre_select;
        cwt->task.post_select = check_wav_post_select;
        cwt->task.error = 0;
-       register_task(&cwt->task);
+       register_task(&s, &cwt->task);
 
        if (!conf.writer_given) {
                wns = para_calloc(sizeof(*wns));
-               setup_writer_node(NULL, cwt->btrn, 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);
+                               wns + i, &s);
        }
 
        s.default_timeout.tv_sec = 10;
@@ -254,12 +248,12 @@ static int setup_and_schedule(void)
                struct writer *w = writers + wn->writer_num;
 
                w->close(wn);
-               btr_free_node(wn->btrn);
+               btr_remove_node(&wn->btrn);
                w->free_config(wn->conf);
                free(wn->conf);
        }
        free(wns);
-       btr_free_node(cwt->btrn);
+       btr_remove_node(&cwt->btrn);
        return ret;
 }