X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write.c;h=9ff3bc8406a252819a686d4d6e14d330951a6278;hp=15bbb4a6399dd0739b41d3ee6c7b73e4c6af5fbc;hb=3af6411b482ed8db2243f3e11bb06cf3adba6936;hpb=c5056b00502d27e602cfcd716f92e5f85f97b470 diff --git a/write.c b/write.c index 15bbb4a6..9ff3bc84 100644 --- a/write.c +++ b/write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -24,7 +24,8 @@ #include "version.h" #include "check_wav.h" -INIT_WRITE_ERRLISTS; +/** Array of error strings. */ +DEFINE_PARA_ERRLIST; static struct write_args_info conf; @@ -51,8 +52,8 @@ __noreturn static void print_help_and_die(void) * \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. + * arguments. The default writers are alsa for Linux and oss for *BSD, and the + * file writer if neither is 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 @@ -75,15 +76,15 @@ struct write_task { struct check_wav_context *cwc; }; -static void write_pre_select(struct sched *s, struct task *t) +static void write_pre_select(struct sched *s, void *context) { - struct write_task *wt = task_context(t); + struct write_task *wt = context; check_wav_pre_select(s, wt->cwc); } -static int write_post_select(__a_unused struct sched *s, struct task *t) +static int write_post_select(__a_unused struct sched *s, void *context) { - struct write_task *wt = task_context(t); + struct write_task *wt = context; return check_wav_post_select(wt->cwc); } @@ -123,16 +124,17 @@ static int setup_and_schedule(void) s.default_timeout.tv_usec = 50000; ret = schedule(&s); if (ret >= 0) { - int j; + int j, ts; for (j = 0; j < i; j++) { - struct task *t = wns[j].task; - assert(t->error < 0); - if (t->error != -E_WRITE_COMMON_EOF - && t->error != -E_BTR_EOF) { - PARA_ERROR_LOG("%s: %s\n", t->status, - para_strerror(-t->error)); + struct writer_node *wn = wns + j; + ts = task_status(wn->task); + assert(ts < 0); + if (ts != -E_WRITE_COMMON_EOF && ts != -E_BTR_EOF) { + const char *name = writer_names[wn->writer_num]; + PARA_ERROR_LOG("%s: %s\n", name, + para_strerror(-ts)); if (ret >= 0) - ret = t->error; + ret = ts; } } }