<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ylib, branch master</title>
<subtitle>A collection of small, reusable C libraries</subtitle>
<id>http://g.blicky.net/ylib.git/atom</id>
<link rel='self' href='http://g.blicky.net/ylib.git/atom'/>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/'/>
<updated>2015-12-15T01:47:21Z</updated>
<entry>
<title>Add linked list convenience macros</title>
<updated>2015-12-15T01:47:21Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2015-12-15T01:47:21Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=185fa04e0418ea3831fc1d8fb1b20147a3993dd8'/>
<id>urn:sha1:185fa04e0418ea3831fc1d8fb1b20147a3993dd8</id>
<content type='text'>
Also taken from Globster, with some additions.
</content>
</entry>
<entry>
<title>vec: Rename include-once macros to something more sane</title>
<updated>2015-12-14T08:40:12Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2015-12-14T08:39:28Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=b3167d9b1d2b0fefed2853ab1ab39ee9e146e727'/>
<id>urn:sha1:b3167d9b1d2b0fefed2853ab1ab39ee9e146e727</id>
<content type='text'>
The UTIL_VEC_H came from its use in Globster.
</content>
</entry>
<entry>
<title>Added vec.h + tests</title>
<updated>2015-12-14T08:24:53Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2015-12-14T08:24:53Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=d1dbb446000376edeec923ef611ddbb0f75c5040'/>
<id>urn:sha1:d1dbb446000376edeec923ef611ddbb0f75c5040</id>
<content type='text'>
Based on Globster's util/vec.h, but with some additions.
</content>
</entry>
<entry>
<title>evtp: Don't inherit signal mask in worker threads</title>
<updated>2014-04-03T06:50:29Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2014-04-03T06:50:29Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=77ecca991f6775668f7b4213fde7a7beb01575f4'/>
<id>urn:sha1:77ecca991f6775668f7b4213fde7a7beb01575f4</id>
<content type='text'>
Thanks to Marc Lehmann for pointing out this problem and suggesting the
fix: http://lists.schmorp.de/pipermail/libev/2014q2/002368.html
</content>
</entry>
<entry>
<title>Rewrote evtp: + _maxthreads(), - _die(), no more killing idle threads</title>
<updated>2013-06-29T10:37:47Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-06-29T10:28:55Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=cdeba6e7e187d6295b319337067e8c445a662a3f'/>
<id>urn:sha1:cdeba6e7e187d6295b319337067e8c445a662a3f</id>
<content type='text'>
The previous code would behave badly with respect to killing idle
threads, so I removed that feature for now. Instead, I added
evtp_maxthreads() to dynamically control the maximum number of threads.
The main motivation for this function is to dynamically control the
parallelism when hashing files in Globster, but it's also useful for
(manually) killing idle threads and for pausing any progress for a
while.

I also simplified destruction into a single function: evtp_destroy().
This is a bit less confusing, and the old non-blocking evtp_die() wasn't
too useful anyway because you don't get a notification on when the
threads are actually dead. Similar non-blocking behaviour can be
approximated with the current functions by using evtp_maxthreads(tp, 0),
waiting for a while, and then calling evtp_destroy(). That, however,
doesn't guarantee non-blockyness.
</content>
</entry>
<entry>
<title>ylog: Add &lt;default_level&gt; pattern as alias for a wildcard match</title>
<updated>2013-06-04T14:48:23Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-06-04T14:48:23Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=5a631446b8e8bf1a1dac5574aeafe9e0f36452b7'/>
<id>urn:sha1:5a631446b8e8bf1a1dac5574aeafe9e0f36452b7</id>
<content type='text'>
This simplifies the common case where you just want to specify a single
log level for all files. Instead of writing "*:5", a simple "5" will do
with this addition.
</content>
</entry>
<entry>
<title>ylog: Add tests for some internal functions + fix config parsing bug</title>
<updated>2013-06-04T14:32:08Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-06-04T14:31:29Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=a510c7269d2223110614047e1deed55f06c1b20d'/>
<id>urn:sha1:a510c7269d2223110614047e1deed55f06c1b20d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ylog: Fix off-by-one in ylog_enabled() + add ytrace()</title>
<updated>2013-06-03T15:26:03Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-06-03T15:26:03Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=f04b0a293d2f74ec454a331737738a0678f00f40'/>
<id>urn:sha1:f04b0a293d2f74ec454a331737738a0678f00f40</id>
<content type='text'>
</content>
</entry>
<entry>
<title>yuri: Set missing fields to empty string instead of NULL</title>
<updated>2013-05-26T14:56:16Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-05-26T14:56:16Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=c9bbce9c94a67ef60ed81c14ac82a69f89220c27'/>
<id>urn:sha1:c9bbce9c94a67ef60ed81c14ac82a69f89220c27</id>
<content type='text'>
I can't see how the distinction between "empty" and "absent" is
important.

I've also updated the test suite to test that all pointers in the struct
are set to point within the given buffer. This is important even for the
empty string, because the pointed memory must be writable. Calling
yuri_unescape() on an empty string allocated somewhere in read-only
memory would cause issues.
</content>
</entry>
<entry>
<title>yuri: Rewrite query string parser to be smaller and more flexible</title>
<updated>2013-05-26T09:29:23Z</updated>
<author>
<name>Yorhel</name>
<email>git@yorhel.nl</email>
</author>
<published>2013-05-26T09:23:02Z</published>
<link rel='alternate' type='text/html' href='http://g.blicky.net/ylib.git/commit/?id=8aa2e407c7b357248c9a7cbaf124f26f5d327170'/>
<id>urn:sha1:8aa2e407c7b357248c9a7cbaf124f26f5d327170</id>
<content type='text'>
This is a much better API. You can only iterate once over a single
string, but multiple iterations with the previous API wasn't going to be
fast either way, so might as well enfore a string copy if you want that.

This new API allows more not-so-very-well-formed query strings, too.
Such as multiple ";&amp;;&amp;" sequences and empty/absent keys/values. Usually
the goal is merely to extract information out of a URI, in which case
such oddities can be safely ignored. In case the application wishes to
disallow or validate such URIs, the new API can still be used for that
but requires a bit more work.
</content>
</entry>
</feed>
