<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/fd.c, branch pu</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=pu</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=pu'/>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/'/>
<updated>2026-10-27T17:20:09Z</updated>
<entry>
<title>Move recv_buffer() and recv_bin_buffer() from net.c to fd.c.</title>
<updated>2026-10-27T17:20:09Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-10-06T19:18:46Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=49492a6e6902535a5fa84400d5e674a9874a60a9'/>
<id>urn:sha1:49492a6e6902535a5fa84400d5e674a9874a60a9</id>
<content type='text'>
These functions operate on the file descriptor level, so make them available
everywhere. This works because all executables link with fd.o.

As a consequence, audioc.c and gui.c no longer need to include net.h and
the system headers that net.h depends on.
</content>
</entry>
<entry>
<title>fd: Simplify para_mmap() and mmap_full_file().</title>
<updated>2026-08-01T20:18:30Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-23T20:38:35Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=f1c667892d1a69cd150807a3d7073fcbe3740e06'/>
<id>urn:sha1:f1c667892d1a69cd150807a3d7073fcbe3740e06</id>
<content type='text'>
The latter calls the former, both check for zero length but return different
error codes in this case. Avoid the redundant check, return consistent error
codes, and fix the type of the map pointer argument.
</content>
</entry>
<entry>
<title>client/audioc: Create ~/.paraslash in interactive mode.</title>
<updated>2026-07-04T20:46:44Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-23T19:52:18Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=3123128dbf3900fb7baf6c2a4577b76340ae4404'/>
<id>urn:sha1:3123128dbf3900fb7baf6c2a4577b76340ae4404</id>
<content type='text'>
If this directory does not exist, para_play creates it at startup. However,
para_client and para_audioc do not do that, hence they fail to write the
history file on exit.

Teach para_client and para_audioc to create ~/.paraslash just as para_play
does. Replace para_mkdir() by create_dot_paraslash() as this is what all
callers need.
</content>
</entry>
<entry>
<title>Move xrename() from fd.c to afh.c and make it static.</title>
<updated>2026-07-04T20:39:38Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-23T19:20:37Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=263c1d8b1faafeea5ec927c0e2e99d89200f66da'/>
<id>urn:sha1:263c1d8b1faafeea5ec927c0e2e99d89200f66da</id>
<content type='text'>
It's only used there.
</content>
</entry>
<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>Fix com_catblob.</title>
<updated>2025-08-27T17:17:48Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-07-28T19:27:36Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=738eca2e4828a9b9c3a42d87a35159814c1dfd02'/>
<id>urn:sha1:738eca2e4828a9b9c3a42d87a35159814c1dfd02</id>
<content type='text'>
Currently the afs process creates one shared memory area per matching blob.
It writes a four byte representation of the identifier of each area to
the socket that connects the audio file selector and the catblob command
handler. With more than 1024 matching blobs, this may cause write_all(), which
is called by pass_buffer_as_shm(), to fail due to a short write. Mitigate
this problem by using maximally sized shared memory areas.

With this quick-fix one can still run into the same problem, but only if the
combined size of the matching blocks exceeds 1024 times the maximal size of
a shared memory area. With 10M areas, this is 10G.

Improve the documentation of struct callback_result while at it.
</content>
</entry>
<entry>
<title>fd: Modify xwrite() and write_all() to take void * buffer argument.</title>
<updated>2025-06-04T18:32:08Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-06-02T21:34:21Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=88f32f1aee78700647bd1f834e592cdb5e8adbf7'/>
<id>urn:sha1:88f32f1aee78700647bd1f834e592cdb5e8adbf7</id>
<content type='text'>
That's what the underlying call to writev(2) expects.
</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>fd: Simplify and move for_each_file_in_dir().</title>
<updated>2023-05-07T18:45:22Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2022-09-25T19:17:38Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=6f6d8eb1f8f88d9bc51530ae9c14089a20ad76ab'/>
<id>urn:sha1:6f6d8eb1f8f88d9bc51530ae9c14089a20ad76ab</id>
<content type='text'>
With only one user it can be static in aft.c. Modify the function
so that it no longer changes the current working directory, remove
para_opendir() because it is unused now, dedox the documentation and
streamline it a bit.
</content>
</entry>
<entry>
<title>fd.c: Improve error checking of para_mkdir().</title>
<updated>2023-05-07T18:45:22Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2022-11-01T20:55:33Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=07a2d4510f0adc6eff211400f16a0760409bc507'/>
<id>urn:sha1:07a2d4510f0adc6eff211400f16a0760409bc507</id>
<content type='text'>
The old code returned success in case the pathname existed but was
no directory, so try to improve on this a bit. However, don't be
over-zealous as any pathname based approach won't be bullet-proof
because the file identified by the pathname may change at any time.
</content>
</entry>
</feed>
