<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Niall's Weblog &#187; C</title>
	<atom:link href="http://niallohiggins.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://niallohiggins.com</link>
	<description>The website of Niall O'Higgins: A few, immature words</description>
	<lastBuildDate>Wed, 17 Feb 2010 18:49:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Read a file line by line in C &#8211; secure fgets idiom</title>
		<link>http://niallohiggins.com/2009/10/03/read-a-file-line-by-line-in-c-secure-fgets-idiom/</link>
		<comments>http://niallohiggins.com/2009/10/03/read-a-file-line-by-line-in-c-secure-fgets-idiom/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 22:57:40 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[OpenBSD]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/?p=590</guid>
		<description><![CDATA[A pretty common thing to do in any program is read a file line-by-line.  In other interpreted or managed languages this is trivial, the standard libraries will make it super easy for you.  Just look at how simple it is to do this in Python or Perl or even Shell.
In C its a [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2009/10/03/read-a-file-line-by-line-in-c-secure-fgets-idiom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mkpath() &#8211; `mkdir -p&#8217; alike in C for UNIX</title>
		<link>http://niallohiggins.com/2009/01/08/mkpath-mkdir-p-alike-in-c-for-unix/</link>
		<comments>http://niallohiggins.com/2009/01/08/mkpath-mkdir-p-alike-in-c-for-unix/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 03:11:26 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[mkpath]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/?p=283</guid>
		<description><![CDATA[Most people are probably familiar with the UNIX utility, mkdir(1).  The mkdir utility makes directories (surprise surprise).  There is a matching mkdir(2) system call available in the POSIX standard C library.  The usage is pretty straightforward &#8211; how ever, the command-line executable, mkdir(1), supports a useful option -p to &#8220;create intermediate directories [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2009/01/08/mkpath-mkdir-p-alike-in-c-for-unix/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenBSD&#8217;s omalloc: Bug and buffer overflow detection</title>
		<link>http://niallohiggins.com/2008/12/03/openbsds-omalloc-bug-and-buffer-overflow-detection/</link>
		<comments>http://niallohiggins.com/2008/12/03/openbsds-omalloc-bug-and-buffer-overflow-detection/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 02:30:37 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/?p=238</guid>
		<description><![CDATA[For quite a long time now, OpenBSD has, among numerous exploit mitigation techniques,  had a very strict mmap()-based malloc() implementation.  Recently re-written by Otto Moerbeek, it is even harsher now.  I find that this feature makes OpenBSD one of the best platforms to develop C programs on.  If you have a [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2008/12/03/openbsds-omalloc-bug-and-buffer-overflow-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sys/queue.h sucks on Linux</title>
		<link>http://niallohiggins.com/2008/06/27/sysqueueh-sucks-on-linux/</link>
		<comments>http://niallohiggins.com/2008/06/27/sysqueueh-sucks-on-linux/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 15:50:16 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[data structures]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2008/06/27/sysqueueh-sucks-on-linux/</guid>
		<description><![CDATA[I was vaguely aware that the copy of sys/queue.h on Linux systems was old.  However, I&#8217;d forgotten it actually lacks some important features of the modern version shipped with BSD systems.  There is a very common pattern of usage with linked lists, which the Linux version of queue.h doesn&#8217;t support too easily &#8211; [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2008/06/27/sysqueueh-sucks-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unworkable 0.4 released</title>
		<link>http://niallohiggins.com/2008/01/07/unworkable-04-released/</link>
		<comments>http://niallohiggins.com/2008/01/07/unworkable-04-released/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 06:45:10 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Unworkable]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2008/01/07/unworkable-04-released/</guid>
		<description><![CDATA[I have just tagged, packaged and announced version 0.4 of my BitTorrent implementation, Unworkable.
Here are the release notes:

Implemented sending peer keep-alives.
Trace log now contains timestamps.
Make us more tolerant of intermittent tracker failures.
Added support for Arch Linux.
Fixed an off-by-four bug which could cause segfaults on some platforms.
Fix zero padding in peer id generation.
Overall code reduction and [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2008/01/07/unworkable-04-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decoupled Python GUI Construction, or BitTorrent visualisation</title>
		<link>http://niallohiggins.com/2007/12/22/decoupled-python-gui-construction-or-bittorrent-visualisation/</link>
		<comments>http://niallohiggins.com/2007/12/22/decoupled-python-gui-construction-or-bittorrent-visualisation/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 10:07:25 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Unworkable]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2007/12/22/decoupled-python-gui-construction-or-bittorrent-visualisation/</guid>
		<description><![CDATA[While in general I appreciate very simple, no-nonsense user interfaces for applications that work efficiently on the console and so can be used via SSH, there are times when increased visualisation is very useful.
Specifically with regard to my BitTorrent client, Unworkable, the default user interface is exceedingly simple.  Inspired by the ubiquitous scp program [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2007/12/22/decoupled-python-gui-construction-or-bittorrent-visualisation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unworkable 0.3 released</title>
		<link>http://niallohiggins.com/2007/12/20/unworkable-03-released/</link>
		<comments>http://niallohiggins.com/2007/12/20/unworkable-03-released/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 21:41:04 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Unworkable]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2007/12/20/unworkable-03-released/</guid>
		<description><![CDATA[I have just tagged, packaged and announced version 0.3 of my BitTorrent implementation, Unworkable.  My goal with Unworkable is to make releases frequently &#8211; hopefully twice a month or so &#8211; with incremental improvements each release.  The hope is that each release should be of a higher quality than the last.  Therefore [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2007/12/20/unworkable-03-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porting software from OpenBSD to Windows</title>
		<link>http://niallohiggins.com/2007/12/08/porting-software-from-openbsd-to-windows/</link>
		<comments>http://niallohiggins.com/2007/12/08/porting-software-from-openbsd-to-windows/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 00:20:14 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Porting]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2007/12/08/porting-software-from-openbsd-to-windows/</guid>
		<description><![CDATA[
Just committed the bits for Unworkable to build under Windows, using Cygwin.  The code changes were pretty minimal &#8211; specifically, Cygwin lacks getaddrinfo()  &#8211; however this was a relatively simple matter of bundling the KAME implementation (which is BSD licensed) in the source tree and building and linking with that if it wasn&#8217;t [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2007/12/08/porting-software-from-openbsd-to-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porting software from OpenBSD to Linux II</title>
		<link>http://niallohiggins.com/2007/11/19/porting-software-from-openbsd-to-linux-ii/</link>
		<comments>http://niallohiggins.com/2007/11/19/porting-software-from-openbsd-to-linux-ii/#comments</comments>
		<pubDate>Tue, 20 Nov 2007 04:55:49 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[Porting]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2007/11/19/porting-software-from-openbsd-to-linux-ii/</guid>
		<description><![CDATA[
I wrote the other day about porting software to Linux.  I talked about some of the differences between the platforms in terms of the implementation of some well-known C library functions, and hinted at some other incompatibilities.  Well, now I&#8217;m going to write about some of the other issues I encountered.


There are a [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2007/11/19/porting-software-from-openbsd-to-linux-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faster BitTorrent, or, SHA1 is slow</title>
		<link>http://niallohiggins.com/2007/10/28/faster-bittorrent-or-sha1-is-slow/</link>
		<comments>http://niallohiggins.com/2007/10/28/faster-bittorrent-or-sha1-is-slow/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 07:11:00 +0000</pubDate>
		<dc:creator>niallo</dc:creator>
				<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[SHA1]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://niallohiggins.com/2007/10/28/faster-bittorrent-or-sha1-is-slow/</guid>
		<description><![CDATA[
This weekend I have been concentrating on improving the performance of my BitTorrent implementation.  I somewhat believe in the mantra &#8220;premature optimisation is the root of all evil&#8221;, or at least, I&#8217;m not too worried about making everything super fast the first time around.  Asynchronous network programs are complicated enough to write that [...]]]></description>
		<wfw:commentRss>http://niallohiggins.com/2007/10/28/faster-bittorrent-or-sha1-is-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
