]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - write.c
Move setup_writer_node() from write_common.c to write.c.
[paraslash.git] / write.c
diff --git a/write.c b/write.c
index 6b574414b6b13c227c98b008addd28f4b2302b33..9762c40cd8e2b85dab8e0281eed1adc4c5acae86 100644 (file)
--- a/write.c
+++ b/write.c
@@ -165,6 +165,41 @@ __noreturn static void print_help_and_die(void)
        exit(0);
 }
 
+/*
+ * Parse config and register a task for a writer node.
+ *
+ * \param arg Command line arguments.
+ * \param parent The new node will be a child of \a parent.
+ * \param wn The writer node.
+ *
+ * If arg is \p NULL, the OS-dependent default writer is used with no
+ * arguments.  The default writers are alsa for Linux, osx for OS X, oss for
+ * *BSD, and the file writer if the default writer is not supported.
+ *
+ * Once the writer configuration has been retrieved from the ->parse_config
+ * callback a writer node is created, its buffer tree node is added to the
+ * buffer tree as a child of the given parent.
+ *
+ * Finally, the new writer node's task structure is initialized and registered
+ * to the paraslash scheduler.
+ *
+ * \return Standard.
+ */
+static int setup_writer_node(const char *arg, struct btr_node *parent,
+               struct writer_node *wn)
+{
+       if (arg)
+               wn->conf = check_writer_arg(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;
+}
+
 static int main_btr(struct sched *s)
 {
        int i, ret;