#include <stdio.h>
#include <string.h>
#include <errno.h>
#define ERRNO_EQ(ERR) \
do { \
if (0 == strcmp(err, #ERR)) { \
return ERR; \
} \
} while (0)
int
assert_errno_eq(const char* err) {
ERRNO_EQ(EPERM);
ERRNO_EQ(ENOENT);
ERRNO_EQ(ESRCH);
ERRNO_EQ(EINTR);
ERRNO_EQ(EIO);
ERRNO_EQ(ENXIO);
ERRNO_EQ(E2BIG);
ERRNO_EQ(ENOEXEC);
ERRNO_EQ(EBADF);
ERRNO_EQ(ECHILD);
ERRNO_EQ(EAGAIN);
ERRNO_EQ(ENOMEM);
ERRNO_EQ(EACCES);
ERRNO_EQ(EFAULT);
ERRNO_EQ(ENOTBLK);
ERRNO_EQ(EBUSY);
ERRNO_EQ(EEXIST);
ERRNO_EQ(EXDEV);
ERRNO_EQ(ENODEV);
ERRNO_EQ(ENOTDIR);
ERRNO_EQ(EISDIR);
ERRNO_EQ(EINVAL);
ERRNO_EQ(ENFILE);
ERRNO_EQ(EMFILE);
ERRNO_EQ(ENOTTY);
ERRNO_EQ(ETXTBSY);
ERRNO_EQ(EFBIG);
ERRNO_EQ(ENOSPC);
ERRNO_EQ(ESPIPE);
ERRNO_EQ(EROFS);
ERRNO_EQ(EMLINK);
ERRNO_EQ(EPIPE);
ERRNO_EQ(EDOM);
ERRNO_EQ(ERANGE);
ERRNO_EQ(EDEADLK);
ERRNO_EQ(ENAMETOOLONG);
ERRNO_EQ(ENOLCK);
ERRNO_EQ(ENOSYS);
ERRNO_EQ(ENOTEMPTY);
ERRNO_EQ(ELOOP);
ERRNO_EQ(ENOMSG);
ERRNO_EQ(EIDRM);
ERRNO_EQ(EINPROGRESS);
ERRNO_EQ(EALREADY);
ERRNO_EQ(ENOTSOCK);
ERRNO_EQ(EDESTADDRREQ);
ERRNO_EQ(EMSGSIZE);
ERRNO_EQ(EPROTOTYPE);
ERRNO_EQ(ENOPROTOOPT);
ERRNO_EQ(EPROTONOSUPPORT);
ERRNO_EQ(ESOCKTNOSUPPORT);
ERRNO_EQ(EPFNOSUPPORT);
ERRNO_EQ(EAFNOSUPPORT);
ERRNO_EQ(EADDRINUSE);
ERRNO_EQ(EADDRNOTAVAIL);
ERRNO_EQ(ENETDOWN);
ERRNO_EQ(ENETUNREACH);
ERRNO_EQ(ENETRESET);
ERRNO_EQ(ECONNABORTED);
ERRNO_EQ(ECONNRESET);
ERRNO_EQ(ENOBUFS);
ERRNO_EQ(EISCONN);
ERRNO_EQ(ENOTCONN);
ERRNO_EQ(ESHUTDOWN);
ERRNO_EQ(ETOOMANYREFS);
ERRNO_EQ(ETIMEDOUT);
ERRNO_EQ(ECONNREFUSED);
ERRNO_EQ(EHOSTDOWN);
ERRNO_EQ(EHOSTUNREACH);
#ifdef LINUX
ERRNO_EQ(ECHRNG);
ERRNO_EQ(EL2NSYNC);
ERRNO_EQ(EL3HLT);
ERRNO_EQ(EL3RST);
ERRNO_EQ(ELNRNG);
ERRNO_EQ(EUNATCH);
ERRNO_EQ(ENOCSI);
ERRNO_EQ(EL2HLT);
ERRNO_EQ(EBADE);
ERRNO_EQ(EBADR);
ERRNO_EQ(EXFULL);
ERRNO_EQ(ENOANO);
ERRNO_EQ(EBADRQC);
ERRNO_EQ(EBADSLT);
ERRNO_EQ(EBFONT);
ERRNO_EQ(ENOSTR);
ERRNO_EQ(ENODATA);
ERRNO_EQ(ETIME);
ERRNO_EQ(ENOSR);
ERRNO_EQ(ENONET);
ERRNO_EQ(ENOPKG);
ERRNO_EQ(EREMOTE);
ERRNO_EQ(ENOLINK);
ERRNO_EQ(EADV);
ERRNO_EQ(ESRMNT);
ERRNO_EQ(ECOMM);
ERRNO_EQ(EPROTO);
ERRNO_EQ(EMULTIHOP);
ERRNO_EQ(EDOTDOT);
ERRNO_EQ(EBADMSG);
ERRNO_EQ(EOVERFLOW);
ERRNO_EQ(ENOTUNIQ);
ERRNO_EQ(EBADFD);
ERRNO_EQ(EREMCHG);
ERRNO_EQ(ELIBACC);
ERRNO_EQ(ELIBBAD);
ERRNO_EQ(ELIBSCN);
ERRNO_EQ(ELIBMAX);
ERRNO_EQ(ELIBEXEC);
ERRNO_EQ(EILSEQ);
ERRNO_EQ(ERESTART);
ERRNO_EQ(ESTRPIPE);
ERRNO_EQ(EUSERS);
ERRNO_EQ(EOPNOTSUPP);
ERRNO_EQ(ESTALE);
ERRNO_EQ(EUCLEAN);
ERRNO_EQ(ENOTNAM);
ERRNO_EQ(ENAVAIL);
ERRNO_EQ(EISNAM);
ERRNO_EQ(EREMOTEIO);
ERRNO_EQ(EDQUOT);
ERRNO_EQ(ENOMEDIUM);
ERRNO_EQ(EMEDIUMTYPE);
ERRNO_EQ(ECANCELED);
ERRNO_EQ(ENOKEY);
ERRNO_EQ(EKEYEXPIRED);
ERRNO_EQ(EKEYREVOKED);
ERRNO_EQ(EKEYREJECTED);
ERRNO_EQ(EOWNERDEAD);
ERRNO_EQ(ENOTRECOVERABLE);
ERRNO_EQ(ERFKILL);
ERRNO_EQ(EHWPOISON);
#endif
#ifdef DARWIN
ERRNO_EQ(ENOTSUP);
ERRNO_EQ(EPROCLIM);
ERRNO_EQ(EUSERS);
ERRNO_EQ(EDQUOT);
ERRNO_EQ(ESTALE);
ERRNO_EQ(EREMOTE);
ERRNO_EQ(EBADRPC);
ERRNO_EQ(ERPCMISMATCH);
ERRNO_EQ(EPROGUNAVAIL);
ERRNO_EQ(EPROGMISMATCH);
ERRNO_EQ(EPROCUNAVAIL);
ERRNO_EQ(EFTYPE);
ERRNO_EQ(EAUTH);
ERRNO_EQ(ENEEDAUTH);
ERRNO_EQ(EPWROFF);
ERRNO_EQ(EDEVERR);
ERRNO_EQ(EOVERFLOW);
ERRNO_EQ(EBADEXEC);
ERRNO_EQ(EBADARCH);
ERRNO_EQ(ESHLIBVERS);
ERRNO_EQ(EBADMACHO);
ERRNO_EQ(ECANCELED);
ERRNO_EQ(EILSEQ);
ERRNO_EQ(ENOATTR);
ERRNO_EQ(EBADMSG);
ERRNO_EQ(EMULTIHOP);
ERRNO_EQ(ENODATA);
ERRNO_EQ(ENOLINK);
ERRNO_EQ(ENOSR);
ERRNO_EQ(ENOSTR);
ERRNO_EQ(EPROTO);
ERRNO_EQ(ETIME);
ERRNO_EQ(EOPNOTSUPP);
ERRNO_EQ(ENOPOLICY);
ERRNO_EQ(ENOTRECOVERABLE);
ERRNO_EQ(EOWNERDEAD);
ERRNO_EQ(EQFULL);
#endif
return 0;
}