The libexplain project provides a library which 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. The coverage for system calls is being improved all the time. Coverage includes 159 system calls and 444 ioctl requests.