summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bindings/c/zmq.h16
-rw-r--r--src/zmq.cpp13
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
}
}