diff options
-rw-r--r-- | bindings/c/zmq.h | 16 | ||||
-rw-r--r-- | src/zmq.cpp | 13 |
2 files changed, 26 insertions, 3 deletions
diff --git a/bindings/c/zmq.h b/bindings/c/zmq.h index 3931039..056d89a 100644 --- a/bindings/c/zmq.h +++ b/bindings/c/zmq.h @@ -24,6 +24,7 @@ extern "C" { #endif +#include <errno.h> #include <stddef.h> // Microsoft Visual Studio uses non-standard way to export/import symbols. @@ -43,9 +44,18 @@ extern "C" { // different OSes. The assumption is that error_t is at least 32-bit type. #define ZMQ_HAUSNUMERO 156384712 -#define EMTHREAD (ZMQ_HAUSNUMERO + 1) -#define EFSM (ZMQ_HAUSNUMERO + 2) -#define ENOCOMPATPROTO (ZMQ_HAUSNUMERO + 3) +// On Windows platform some of the standard POSIX errnos are not defined. +#ifndef ENOTSUP +#define ENOTSUP (ZMQ_HAUSNUMERO + 1) +#endif +#ifndef EPROTONOSUPPORT +#define EPROTONOSUPPORT (ZMQ_HAUSNUMERO + 2) +#endif + +// Native 0MQ error codes. +#define EMTHREAD (ZMQ_HAUSNUMERO + 50) +#define EFSM (ZMQ_HAUSNUMERO + 51) +#define ENOCOMPATPROTO (ZMQ_HAUSNUMERO + 52) // Resolves system errors and 0MQ errors to human-readable string. ZMQ_EXPORT const char *zmq_strerror (int errnum); diff --git a/src/zmq.cpp b/src/zmq.cpp index d6f7023..2dfdd48 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -39,6 +39,12 @@ const char *zmq_strerror (int errnum_) { switch (errnum_) { +#if defined ZMQ_HAVE_WINDOWS + case ENOTSUP: + return "Not supported"; + case EPROTONOSUPPORT: + return "Protocol not supported"; +#endif case EMTHREAD: return "Number of preallocated application threads exceeded"; case EFSM: @@ -46,7 +52,14 @@ const char *zmq_strerror (int errnum_) case ENOCOMPATPROTO: return "The protocol is not compatible with the socket type"; default: +#if defined _MSC_VER +#pragma warning (push) +#pragma warning (disable:4996) +#endif return strerror (errnum_); +#if defined _MSC_VER +#pragma warning (pop) +#endif } } |