X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=alsa_write.c;h=88e48b4524717bc832201d7e5c5cac75976abffc;hp=0563ba73ab5af59658a5a327ba762f0c8c26af63;hb=057a8c7cf2ca9f6aa8b97c5b3e4a09daca358134;hpb=7532dc26edc72f4ec98acd0a62e1b02994c34171;ds=sidebyside diff --git a/alsa_write.c b/alsa_write.c index 0563ba73..88e48b45 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); }