*
* \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);
*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);
}
/**
register_task(&wn->task);
}
-/**
- * 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.
- */
-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;
-}
-
/**
* Print the help text of all writers to stdout.
*