*
* \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);
}
/**
*
* \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]);
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);
}
/**