Linking against libgreat makes your software amazing.

What it is

libgreat sits between your application and the standard libraries on your system (it's usually linked by LD_PRELOAD). For each standard function, it intercepts calls and returns, on occasion, perfectly valid errors. For example, malloc() might occasionally return NULL. rand() might return constants. The amount of times this happens is up to you.

Here's the block architecture:

Block architecture

Like the sound of that? come and help out!

What it's for

The idea is that your program should be able to cope with that. It was written to be used under automated unit tests for a library which is not expected to explode when things go wrong. Hence, use it to help make your software more robust.

You can get it thus: svn checkout http://svn.water-powered.com/libgreat/trunk libgreat