X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write_common.c;h=5988faf77a5cd13f1b4e1930299b8c90073efc3d;hp=7131a94042dae3b989a73ee5a1b8cd4c84bf2b02;hb=a22e734cd89015a71d0dd7cf895799c440805847;hpb=071538830bc5200f90b22576945687a2e43694a0 diff --git a/write_common.c b/write_common.c index 7131a940..5988faf7 100644 --- a/write_common.c +++ b/write_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 Andre Noll + * Copyright (C) 2006-2011 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -66,27 +66,32 @@ void *check_writer_arg(const char *wa, int *writer_num) c = wa[len]; if (c && c != ' ') continue; - if (c && !writers[i].parse_config) - return NULL; *writer_num = i; - return writers[i].parse_config(c? wa + len + 1 : ""); + return writers[i].parse_config_or_die(c? wa + len + 1 : ""); } PARA_ERROR_LOG("writer not found\n"); return NULL; } +/** + * Open a writer node and register the corresponding task. + * + * \param wn The writer node to open. + * \param parent The parent btr node (the source for the writer node). + * + * 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) { struct writer *w = writers + wn->writer_num; char *name = make_message("%s writer", writer_names[wn->writer_num]); - int ret; wn->btrn = btr_new_node(&(struct btr_node_description) EMBRACE(.name = name, .parent = parent, .handler = w->execute, .context = wn)); strcpy(wn->task.status, name); free(name); - ret = w->open(wn); wn->task.post_select = w->post_select; wn->task.pre_select = w->pre_select; register_task(&wn->task); @@ -115,7 +120,7 @@ int setup_writer_node(const char *arg, struct btr_node *parent, wn->conf = check_writer_arg(arg, &wn->writer_num); else { wn->writer_num = DEFAULT_WRITER; - wn->conf = writers[DEFAULT_WRITER].parse_config(""); + wn->conf = writers[DEFAULT_WRITER].parse_config_or_die(""); } if (!wn->conf) return -E_WRITE_COMMON_SYNTAX; @@ -123,7 +128,6 @@ int setup_writer_node(const char *arg, struct btr_node *parent, return 1; } - /** * Print the help text of all writers to stdout. *