gui: Check return value of para_exec_cmdline_pid().
[paraslash.git] / write.c
diff --git a/write.c b/write.c
index 3d1b093..a8e2429 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"
@@ -185,19 +184,16 @@ __noreturn static void print_help_and_die(void)
  *
  * \return Standard.
  */
-static int setup_writer_node(const char *arg, struct btr_node *parent,
-               struct writer_node *wn)
+static void setup_writer_node(const char *arg, struct btr_node *parent,
+               struct writer_node *wn, struct sched *s)
 {
        if (arg)
-               wn->conf = check_writer_arg(arg, &wn->writer_num);
+               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("");
        }
-       if (!wn->conf)
-               return -E_WRITE_COMMON_SYNTAX;
-       register_writer_node(wn, parent);
-       return 1;
+       register_writer_node(wn, parent, s);
 }
 
 static int setup_and_schedule(void)
@@ -211,7 +207,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;
@@ -222,24 +218,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);
 
-       ret = -E_WRITE_SYNTAX;
        if (!conf.writer_given) {
-               i = 0;
                wns = para_calloc(sizeof(*wns));
-               ret = setup_writer_node(NULL, cwt->btrn, wns);
-               if (ret < 0)
-                       goto out;
+               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++) {
-                       ret = setup_writer_node(conf.writer_arg[i],
-                               cwt->btrn, wns + i);
-                       if (ret < 0)
-                               goto out;
-               }
+               for (i = 0; i < conf.writer_given; i++)
+                       setup_writer_node(conf.writer_arg[i], cwt->btrn,
+                               wns + i, &s);
        }
 
        s.default_timeout.tv_sec = 10;
@@ -259,7 +248,6 @@ static int setup_and_schedule(void)
                        }
                }
        }
-out:
        for (i--; i >= 0; i--) {
                struct writer_node *wn = wns + i;
                struct writer *w = writers + wn->writer_num;
@@ -287,7 +275,7 @@ out:
  */
 int main(int argc, char *argv[])
 {
-       int ret = -E_WRITE_SYNTAX;
+       int ret;
 
        writer_init();
        write_cmdline_parser(argc, argv, &conf);