<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/oss_write.c, branch next</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=next</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/'/>
<updated>2026-03-17T22:45:43Z</updated>
<entry>
<title>Switch to SPDX identifiers.</title>
<updated>2026-03-17T22:45:43Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-03-15T14:57:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=ea0cecf96e08c489fdcc94d046019f4ce46f58e2'/>
<id>urn:sha1:ea0cecf96e08c489fdcc94d046019f4ce46f58e2</id>
<content type='text'>
Generated with

	sed -i 's|Copyright.*Andre Noll.*|SPDX-License-Identifier: GPL-2.0 */|g' *.c *.h

followed by manually tweaking the result a bit. No license change intended.
</content>
</entry>
<entry>
<title>doxygen: Hide user_data variables.</title>
<updated>2025-10-08T18:58:23Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-06-16T22:26:15Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=9a8ad2ce61b0e7c1fed85c565096c46a0be5989e'/>
<id>urn:sha1:9a8ad2ce61b0e7c1fed85c565096c46a0be5989e</id>
<content type='text'>
These just clutter the generated documentation, particularly the list of
global variables.
</content>
</entry>
<entry>
<title>Include regex.h from para.h.</title>
<updated>2025-05-19T17:35:58Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-05-18T20:05:45Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=67388cd4fae0cfd1674aada937f4f4d2faeeee1f'/>
<id>urn:sha1:67388cd4fae0cfd1674aada937f4f4d2faeeee1f</id>
<content type='text'>
Every .c file includes it anyway.
</content>
</entry>
<entry>
<title>Consolidate EOF error codes.</title>
<updated>2023-03-11T18:16:46Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2022-12-30T14:08:59Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=b087c1356e3eebf656aa1c783ff7e50c9de5a229'/>
<id>urn:sha1:b087c1356e3eebf656aa1c783ff7e50c9de5a229</id>
<content type='text'>
Currently we have ~15 error codes which indicate an EOF condition. One
should suffice, so drop all codes except the generic E_EOF and use
that everywhere.
</content>
</entry>
<entry>
<title>Merge topic branch t/overflow into master</title>
<updated>2022-10-03T16:01:20Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2022-10-03T15:59:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=563b56a493d6a2bdcdebafadd907954dbe1de8a8'/>
<id>urn:sha1:563b56a493d6a2bdcdebafadd907954dbe1de8a8</id>
<content type='text'>
This series implements a new memory allocation API which checks
for overflows. The first part of the series just renames the main
allocation functions. Later patches in the series implement allocators
which take two size_t arguments (like calloc(3)) and check whether the
multiplication overflows by employing the __builtin_mul_overflow()
primitive supported by gcc and clang. This requires us to bump the
lowest supported gcc and clang version.

* refs/heads/t/overflow:
  build: Compile with -ftrapv.
  string: Introduce arr_zalloc().
  string: Introduce arr_alloc().
  string: Introduce arr_realloc() and check for integer overflow.
  string: Rename para_calloc() -&gt; zalloc().
  string: Rename para_malloc() -&gt; alloc().
  string: Overhaul para_strdup().
</content>
</entry>
<entry>
<title>Rename -&gt;{pre,post}_select methods to -&gt;{pre,post}_monitor.</title>
<updated>2022-08-25T13:37:26Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2021-10-10T16:10:09Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=e3a7e12639c34fd86d48a072beb48add8c498d09'/>
<id>urn:sha1:e3a7e12639c34fd86d48a072beb48add8c498d09</id>
<content type='text'>
The word "monitor" is neutral and continues to be correct after the
switch from select(2) to poll(2).

Pure rename, nothing to see here.
</content>
</entry>
<entry>
<title>Hide implementation of para_fd_set().</title>
<updated>2022-08-25T13:37:26Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2021-10-03T19:52:02Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=bb899fb1a0c279a2890ff30d11bf7aec50fb92ed'/>
<id>urn:sha1:bb899fb1a0c279a2890ff30d11bf7aec50fb92ed</id>
<content type='text'>
This preparatory patch for replacing select() renames para_fd_set()
to sched_fd_set(), moves it to sched.c and makes it static. All
users are modified to call either of the two new public functions
sched_monitor_{read,write}fd() which take a pointer to struct sched
rather than an fd set pointer.
</content>
</entry>
<entry>
<title>sched: Introduce sched_{read,write}_ok().</title>
<updated>2022-08-25T13:37:26Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2021-09-30T20:35:10Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=181beb316afad036ac01a778544c5dec0a8d51c7'/>
<id>urn:sha1:181beb316afad036ac01a778544c5dec0a8d51c7</id>
<content type='text'>
Two trivial wrappers for FD_ISSET() which hide the fact that we're
still using the select(2) API.
</content>
</entry>
<entry>
<title>string: Rename para_calloc() -&gt; zalloc().</title>
<updated>2022-07-29T17:22:09Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2021-11-09T17:41:17Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=26a032fffa6c6e6f092ed3d14c2b5f08e5c736d6'/>
<id>urn:sha1:26a032fffa6c6e6f092ed3d14c2b5f08e5c736d6</id>
<content type='text'>
Reword the documentation a bit since the function has never been a
wrapper for calloc(3). No code changes.
</content>
</entry>
<entry>
<title>Teach writers to abort gracefully on early EOF.</title>
<updated>2021-10-21T17:53:06Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2021-09-05T18:16:59Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=53bbd5127f8bb9132aa9e252928d748f103d7e4e'/>
<id>urn:sha1:53bbd5127f8bb9132aa9e252928d748f103d7e4e</id>
<content type='text'>
For very short streams it may happen that the receiver and decoder
unregister themselves from the buffer tree before the writer had a
chance to query the information from the decoder which it needs to
open the audio device. This leads to errors such as

	Aug 25 14:24:51 schubert (5) get_btr_value: cmd sample_rate: Operation not supported
	Aug 25 14:24:51 schubert (5) get_btr_value: cmd channels: Operation not supported
	Aug 25 14:24:51 schubert (5) get_btr_value: cmd sample_format: Operation not supported
	Aug 25 14:24:51 schubert (4) alsa_init: channels count not available: Invalid argument

This may happen with all receivers, audio formats and writers,
although it is most common with ogg streams.

This commit changes get_btr_sample_rate() and friends to return a
standard error code rather than assuming success. The alsa, ao and
oss writers are patched to check the return value and fail gracefully
if one of these functions fails.
</content>
</entry>
</feed>
