X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=alsa_write.c;h=0824640b9560d72a1eb886a355c3f07e5271681f;hb=aa4a8d9c0f08687618dfcf96bc0c553ef17fbc1d;hp=0563ba73ab5af59658a5a327ba762f0c8c26af63;hpb=2f07d34b5d4c37606be5849b6ee51e0443707898;p=paraslash.git diff --git a/alsa_write.c b/alsa_write.c index 0563ba73..0824640b 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -164,17 +164,18 @@ static int alsa_init(struct private_alsa_write_data *pad, goto fail; ret = snd_output_buffer_open(&output_log); if (ret == 0) { - char *buf; + char *buf, *p; + size_t sz; PARA_INFO_LOG("dumping alsa configuration\n"); snd_pcm_dump(pad->handle, output_log); - snd_output_buffer_string(output_log, &buf); - for (;;) { - char *p = strchr(buf, '\n'); - if (!p) /* omit last output line, it's empty */ + sz = snd_output_buffer_string(output_log, &buf); + for (p = buf; p < buf + sz;) { + char *q = memchr(p, '\n', buf + sz - p); + if (!q) break; - *p = '\0'; - PARA_INFO_LOG("%s\n", buf); - buf = p + 1; + *q = '\0'; + PARA_INFO_LOG("%s\n", p); + p = q + 1; } snd_output_close(output_log); } @@ -210,7 +211,6 @@ static void alsa_write_pre_select(struct sched *s, struct task *t) if (ret < 0) { PARA_ERROR_LOG("could not get alsa poll fd: %s\n", snd_strerror(-ret)); - t->error = -E_ALSA; return; } pad->poll_fd = pfd.fd; @@ -360,9 +360,6 @@ void alsa_write_init(struct writer *w) w->post_select = alsa_write_post_select; w->parse_config_or_die = alsa_parse_config_or_die; w->free_config = alsa_free_config; - w->help = (struct ggo_help) { - .short_help = alsa_write_args_info_help, - .detailed_help = alsa_write_args_info_detailed_help - }; + w->help = (struct ggo_help)DEFINE_GGO_HELP(alsa_write); alsa_write_cmdline_parser_free(&dummy); }