changed how to compare a map against data of other types.

fixed some problems in handling nonblocking connect and send with watt-32
This commit is contained in:
2014-10-23 16:09:05 +00:00
parent 84798f4fd0
commit 2218670769
9 changed files with 207 additions and 68 deletions

View File

@ -237,8 +237,19 @@ static qse_mux_errnum_t skerr_to_errnum (int e)
case EPIPE:
return QSE_MUX_EPIPE;
#if defined(EAGAIN) || defined(EWOULDBLOCK)
#if defined(EAGAIN) && defined(EWOULDBLOCK)
case EAGAIN:
#if (EWOULDBLOCK != EAGAIN)
case EWOULDBLOCK:
#endif
#elif defined(EAGAIN)
case EAGAIN:
#else
case EWOULDBLOCK;
#endif
return QSE_MUX_EAGAIN;
#endif
default:
return QSE_MUX_ESYSERR;

View File

@ -176,8 +176,20 @@ static qse_nwio_errnum_t skerr_to_errnum (int e)
case EPIPE:
return QSE_NWIO_EPIPE;
#if defined(EAGAIN) || defined(EWOULDBLOCK)
#if defined(EAGAIN) && defined(EWOULDBLOCK)
case EAGAIN:
#if (EWOULDBLOCK != EAGAIN)
case EWOULDBLOCK:
#endif
#elif defined(EAGAIN)
case EAGAIN:
#else
case EWOULDBLOCK;
#endif
return QSE_NWIO_EAGAIN;
#endif
#if defined(ECONNREFUSED) || defined(ENETUNREACH) || defined(EHOSTUNREACH) || defined(EHOSTDOWN)
#if defined(ECONNREFUSED)

View File

@ -90,6 +90,7 @@
} \
}
/*
#elif defined(__DOS__)
#define IMPLEMENT_SYSERR_TO_ERRNUM(obj1,obj2) \
@ -105,6 +106,7 @@
default: return __SYSERRNUM__ (obj2, ESYSERR); \
} \
}
*/
#elif defined(vms) || defined(__vms)
@ -143,7 +145,7 @@
} \
}
#else
#elif defined(EAGAIN)
#define IMPLEMENT_SYSERR_TO_ERRNUM(obj1,obj2) \
static __SYSERRTYPE__(obj1) syserr_to_errnum (int e) \
@ -164,6 +166,47 @@
} \
}
#elif defined(EWOULDBLOCK)
#define IMPLEMENT_SYSERR_TO_ERRNUM(obj1,obj2) \
static __SYSERRTYPE__(obj1) syserr_to_errnum (int e) \
{ \
switch (e) \
{ \
case ENOMEM: return __SYSERRNUM__ (obj2, ENOMEM); \
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \
case EPIPE: return __SYSERRNUM__ (obj2, EPIPE); \
case EWOULDBLOCK: return __SYSERRNUM__ (obj2, EAGAIN); \
default: return __SYSERRNUM__ (obj2, ESYSERR); \
} \
}
#else
#define IMPLEMENT_SYSERR_TO_ERRNUM(obj1,obj2) \
static __SYSERRTYPE__(obj1) syserr_to_errnum (int e) \
{ \
switch (e) \
{ \
case ENOMEM: return __SYSERRNUM__ (obj2, ENOMEM); \
case EINVAL: return __SYSERRNUM__ (obj2, EINVAL); \
case EBUSY: \
case EACCES: return __SYSERRNUM__ (obj2, EACCES); \
case ENOTDIR: \
case ENOENT: return __SYSERRNUM__ (obj2, ENOENT); \
case EEXIST: return __SYSERRNUM__ (obj2, EEXIST); \
case EINTR: return __SYSERRNUM__ (obj2, EINTR); \
case EPIPE: return __SYSERRNUM__ (obj2, EPIPE); \
default: return __SYSERRNUM__ (obj2, ESYSERR); \
} \
}
#endif
#endif