The libexplain project provides a library that may be used to explain Unix and Linux system call errors. This will make your application's error messages much more informative to your users. The library is not quite a drop-in replacement for strerror, but it comes close: each system call has a dedicated libexplain function.