Identify soft syscall error codes
#include <error.h>
int error_temp(e);
int e;
error_temp returns 1 if syscall error code e is a soft error, 0 if it is a hard error. Normally e is errno.
A hard error is persistent: file not found, read-only file system, symbolic link loop, etc.
A soft error is usually transient: out of memory, out of disk space, I/O error, disk quota exceeded, connection refused, host unreachable, etc.