Partial tcpmux support on Windows

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee64717..f46fc56 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,6 +71,7 @@
 add_libnanomsg_test (tcp)
 add_libnanomsg_test (tcp_shutdown)
 add_libnanomsg_test (ws)
+add_libnanomsg_test (tcpmux)
 
 #  Protocol tests.
 add_libnanomsg_test (pair)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 92a56f1..ad23565 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -139,6 +139,7 @@
 
     devices/device.h
     devices/device.c
+    devices/tcpmuxd.c
 
     protocols/utils/dist.h
     protocols/utils/dist.c
@@ -255,6 +256,17 @@
     transports/tcp/tcp.h
     transports/tcp/tcp.c
 
+    transports/tcpmux/atcpmux.h
+    transports/tcpmux/atcpmux.c
+    transports/tcpmux/btcpmux.h
+    transports/tcpmux/btcpmux.c
+    transports/tcpmux/ctcpmux.h
+    transports/tcpmux/ctcpmux.c
+    transports/tcpmux/stcpmux.h
+    transports/tcpmux/stcpmux.c
+    transports/tcpmux/tcpmux.h
+    transports/tcpmux/tcpmux.c
+
     transports/ws/aws.h
     transports/ws/aws.c
     transports/ws/bws.h
diff --git a/src/devices/tcpmuxd.c b/src/devices/tcpmuxd.c
index a9ce07b..05bd8d3 100644
--- a/src/devices/tcpmuxd.c
+++ b/src/devices/tcpmuxd.c
@@ -22,6 +22,18 @@
 
 #include "../nn.h"
 
+#if defined NN_HAVE_WINDOWS
+
+#include "../utils/err.h"
+
+int nn_tcpmuxd (int port)
+{
+    errno = EPROTONOSUPPORT;
+    return -1;
+}
+
+#else
+
 #include "../utils/thread.h"
 #include "../utils/attr.h"
 #include "../utils/err.h"
@@ -292,3 +304,4 @@
     return 0;
 }
 
+#endif
diff --git a/src/transports/tcpmux/atcpmux.c b/src/transports/tcpmux/atcpmux.c
index e955dea..0d061f2 100644
--- a/src/transports/tcpmux/atcpmux.c
+++ b/src/transports/tcpmux/atcpmux.c
@@ -129,8 +129,6 @@
     NN_UNUSED void *srcptr)
 {
     struct nn_atcpmux *atcpmux;
-    int val;
-    size_t sz;
 
     atcpmux = nn_cont (self, struct nn_atcpmux, fsm);
 
diff --git a/src/transports/tcpmux/btcpmux.c b/src/transports/tcpmux/btcpmux.c
index 71f8082..f91c654 100644
--- a/src/transports/tcpmux/btcpmux.c
+++ b/src/transports/tcpmux/btcpmux.c
@@ -122,10 +122,6 @@
     const char *colon;
     const char *slash;
     const char *end;
-    struct sockaddr_storage ss;
-    size_t sslen;
-    int ipv4only;
-    size_t ipv4onlylen;
     int reconnect_ivl;
     int reconnect_ivl_max;
     size_t sz;
@@ -481,8 +477,6 @@
     struct sockaddr_storage ss;
     struct sockaddr_un *un;
     const char *addr;
-    int val;
-    size_t sz;
     const char *colon;
     const char *slash;
     int port;
diff --git a/src/transports/tcpmux/tcpmux.c b/src/transports/tcpmux/tcpmux.c
index eba42f6..da222b9 100644
--- a/src/transports/tcpmux/tcpmux.c
+++ b/src/transports/tcpmux/tcpmux.c
@@ -82,7 +82,11 @@
 
 static int nn_tcpmux_bind (void *hint, struct nn_epbase **epbase)
 {
+#if defined NN_HAVE_WINDOWS
+    return -EPROTONOSUPPORT;
+#else
     return nn_btcpmux_create (hint, epbase);
+#endif
 }
 
 static int nn_tcpmux_connect (void *hint, struct nn_epbase **epbase)
diff --git a/tests/tcpmux.c b/tests/tcpmux.c
index 46467f0..a1a33fa 100644
--- a/tests/tcpmux.c
+++ b/tests/tcpmux.c
@@ -32,6 +32,7 @@
 
 int main ()
 {
+#if !defined NN_HAVE_WINDOWS
     int rc;
     int sb;
     int sc;
@@ -56,6 +57,7 @@
     /*  Cleanup. */
     test_close (sc);
     test_close (sb);
+#endif
 
     return 0;
 }