audioc: Improve documentation of main().
[paraslash.git] / write_common.c
index 2c149dfd6c295eab522c0cabdbf28d4376cabc08..e6a5eeb77339694439b11d93123591b935f86dac 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2012 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -7,7 +7,6 @@
 /** \file write_common.c common functions of para_audiod and para_write */
 
 #include <regex.h>
-#include <stdbool.h>
 
 #include "para.h"
 #include "string.h"
@@ -47,14 +46,13 @@ void writer_init(void)
  *
  * \return On success, a pointer to the gengetopt args info struct is returned
  * and \a writer_num contains the number of the writer. Otherwise this function
- * returns \p NULL.
+ * prints an error message and calls exit().
  */
-void *check_writer_arg(const char *wa, int *writer_num)
+void *check_writer_arg_or_die(const char *wa, int *writer_num)
 {
        int i;
 
-       *writer_num = -E_WRITE_COMMON_SYNTAX;
-       PARA_INFO_LOG("checking  %s\n", wa);
+       PARA_INFO_LOG("checking %s\n", wa);
        FOR_EACH_WRITER(i) {
                const char *name = writer_names[i];
                size_t len = strlen(name);
@@ -69,8 +67,8 @@ void *check_writer_arg(const char *wa, int *writer_num)
                *writer_num = i;
                return writers[i].parse_config_or_die(c? wa + len + 1 : "");
        }
-       PARA_ERROR_LOG("writer not found\n");
-       return NULL;
+       PARA_EMERG_LOG("invalid writer %s\n", wa);
+       exit(EXIT_FAILURE);
 }
 
 /**
@@ -78,11 +76,13 @@ void *check_writer_arg(const char *wa, int *writer_num)
  *
  * \param wn The writer node to open.
  * \param parent The parent btr node (the source for the writer node).
+ * \param s The scheduler instance to register the task to.
  *
  * The configuration of the writer node stored in \p wn->conf must be
  * initialized before this function may be called.
  */
-void register_writer_node(struct writer_node *wn, struct btr_node *parent)
+void register_writer_node(struct writer_node *wn, struct btr_node *parent,
+               struct sched *s)
 {
        struct writer *w = writers + wn->writer_num;
        char *name = make_message("%s writer", writer_names[wn->writer_num]);
@@ -94,7 +94,7 @@ void register_writer_node(struct writer_node *wn, struct btr_node *parent)
        free(name);
        wn->task.post_select = w->post_select;
        wn->task.pre_select = w->pre_select;
-       register_task(&wn->task);
+       register_task(s, &wn->task);
 }
 
 /**