<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/stdout.h, branch master</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=master</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=master'/>
<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>Revamp the stdin/stdout API.</title>
<updated>2025-08-27T17:16:54Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-07-09T15:20:42Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=c30b3cf7b9eb76f6b0a6259a4f630017de804608'/>
<id>urn:sha1:c30b3cf7b9eb76f6b0a6259a4f630017de804608</id>
<content type='text'>
With the current API it is impossible to free the memory that was allocated
by stdin_task_register() after schedule() returns. This commit replaces the
APIs defined in stdin.h and stdout.h to remove the memory leaks which are
inevitable with the old API. We also make struct stdin_task and stdout_task
opaque because the API users (client.c, filter.c, recv.c and write.c) should
not be able to manipulate the fields of these structures directly.

The new stdout API differs from the new stdin API only in that stdout_new()
needs an additional argument to let the caller pass in a pointer to the
parent buffer tree node. Other than that, the APIs are symmetric.

Use the opportunity to do the non-blocking dance in std{in,out}_new()
and std{in,out}_free() rather than in the post-monitor functions. This
way we may get rid of the silly -&gt;must_set_nonblock_flag boolean of struct
std{in,out}_task.
</content>
</entry>
<entry>
<title>Shorten copyright notice.</title>
<updated>2017-09-22T14:35:22Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2017-09-10T12:15:50Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=d31995b3074bb19aa4da66ce5c4774ca9ed101a1'/>
<id>urn:sha1:d31995b3074bb19aa4da66ce5c4774ca9ed101a1</id>
<content type='text'>
The GPLv2 line does not add any additional information, so drop
it. This leaves a single line of legalese text for most files, which
is about the amount of screen real estate it deserves.

This patch was created with the following script (plus some manual
fixups):

	awk '{
		if (NR &lt;= 5) {
			gs = gensub(/.*Copyright.* ([0-9]+).*Andre Noll.*/, "\\1", "g")
			if (gs != $0)
				year = gs
			next
		}
		if (NR == 6 &amp;&amp; year != "")
			printf("/* Copyright (C) %s Andre Noll &lt;maan@tuebingen.mpg.de&gt;, see file COPYING. */\n", year)
		print
	}'
</content>
</entry>
<entry>
<title>Update year in copyright headers.</title>
<updated>2015-01-12T22:35:45Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2015-01-02T02:14:03Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=9b406cbe5d20ba969713ca3d7a8033e697476d75'/>
<id>urn:sha1:9b406cbe5d20ba969713ca3d7a8033e697476d75</id>
<content type='text'>
Done with

	files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2014\)* Andre Noll')
	sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2014 Andre Noll/Copyright (C) \1 Andre Noll/1' $files

In previous years we ran a similar script to set the second year in
the range to the current year. This is kind of silly, so let's get
rid of this useless information.

This commit replaces "Copyright (C) A-B" by "Copyright (C) A" in
all file headers, i.e. only the first year (A) is left in. Accurate
information including time stamps for each change can be obtained
from the git history.
</content>
</entry>
<entry>
<title>doc: Change email address to maan@tuebingen.mpg.de</title>
<updated>2014-08-18T20:38:53Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2014-08-09T10:49:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=36ec2a43a7d9c085f16544e282a439cdbaec1e00'/>
<id>urn:sha1:36ec2a43a7d9c085f16544e282a439cdbaec1e00</id>
<content type='text'>
The mail server on systemlinux.org was down for more than a week
lately, so let's use an alternative official address.  This commit
changes all maan@systemlinux.org addresses to maan@tuebingen.mpg.de.

Most .c and .h files contain the email address in the copyright header,
so they must all be patched. Three other files contain the address
for a different reason:

	* README lists email and git, gitweb and home page URLs
	* configure.ac needs it for configure -h
	* version.c contains it for the -V option of all commands
</content>
</entry>
<entry>
<title>sched: Introduce alternative task API.</title>
<updated>2014-05-25T13:36:37Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2013-12-30T19:27:04Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=a96be5bc4fda8c0df5370d646defb5ff632ba391'/>
<id>urn:sha1:a96be5bc4fda8c0df5370d646defb5ff632ba391</id>
<content type='text'>
In the current implementation struct task is public so users of this
structure can mess with internal scheduler details as they please. This
has led to many bugs and questionable code in the past. This commit
is the first step to overcome this design mistake. At the end of this
patch series struct task can be made private to sched.c.

This commit introduces the following new public functions:

	* task_register,
	* task_context,
	* sched_shutdown.

It also adds the new public task_info structure which carries the
information passed to the scheduler when a new task is registered. This
structure will stay public while struct task will become private once
all users have been converted.

task_register() is supposed to eventually replace register_task(). The
main difference of the two is that the new function returns a _pointer_
to a task structure which is allocated dynamically. Users are not
supposed to look at the fields of this pointer directly.

task_context() is a temporary helper which can be removed again at the
end of the series. Its sole purpose is to return the context pointer
which was passed at task register time as part of struct task_info.

The final new function, sched_shutdown(), deallocates the task
structures allocated during task_register() to cleanly shut down the
scheduler after all tasks have terminated.

All users need to be converted to the new API. This patch only converts
the stdout task though. The other tasks will be converted in subsequent
patches. The scheduler can tell if a task was registered using the
new API by means of the new -&gt;owned_by_sched bit of struct task.
This boolean variable can also be removed after all tasks have been
converted.

Some users will need to query the exit status of a terminated
task. Hence we keep all tasks on the task list  after -&gt;post_select()
returned negative but call neither -&gt;pre_select() nor -&gt;post_select()
any more for such tasks. This leads to the concept of zombie tasks.
</content>
</entry>
<entry>
<title>Change copyright year to 2014.</title>
<updated>2014-02-22T15:49:30Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2014-01-01T00:00:34Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=027f2c1237051d2d569d6be7f381c886f659bac3'/>
<id>urn:sha1:027f2c1237051d2d569d6be7f381c886f659bac3</id>
<content type='text'>
This year, we're really on time. The changes in this patch were
created by the following silly script:

    files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2013\)* Andre Noll')
    sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2013 Andre Noll/Copyright (C) \1-2014 Andre Noll/1' $files
    sed --in-place= -e 's/Copyright (C) 2013 Andre Noll/Copyright (C) 2013-2014 Andre Noll/1' $files
</content>
</entry>
<entry>
<title>stdin/stdout: Restore fd flags on shutdown.</title>
<updated>2013-05-04T22:48:04Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2013-03-18T22:51:46Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=b99b4ac94a4391f5a6bbeb9b8ba5eb466eca6249'/>
<id>urn:sha1:b99b4ac94a4391f5a6bbeb9b8ba5eb466eca6249</id>
<content type='text'>
The stdin/stdout code should restore the flags to the old value to
avoid surprises, for example in shell scripts.

This changes stdin.c and stdout.c to save the old value. It is
restored in -&gt;post_select when the buffer tree node is removed and
no more I/O takes place.
</content>
</entry>
<entry>
<title>Change copyright year to 2013.</title>
<updated>2013-03-25T20:42:29Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2013-03-24T18:00:05Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=f652ce6afe7f6fd0e42814505234cbf4321a736e'/>
<id>urn:sha1:f652ce6afe7f6fd0e42814505234cbf4321a736e</id>
<content type='text'>
Better late than never.
</content>
</entry>
<entry>
<title>Change year in copyright message to 2012.</title>
<updated>2012-01-07T15:37:00Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@systemlinux.org</email>
</author>
<published>2012-01-07T01:34:18Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=9de1287d67c9562e9140c6dc7deb0c01c4e10cc0'/>
<id>urn:sha1:9de1287d67c9562e9140c6dc7deb0c01c4e10cc0</id>
<content type='text'>
</content>
</entry>
</feed>
