I'm suprised the errno.h is needed, but here it is