diff --git a/config-mingw.mk b/config-mingw.mk
index 054e1ce2..7cd59d0f 100644
--- a/config-mingw.mk
+++ b/config-mingw.mk
@@ -32,11 +32,14 @@ RUNNER_LINKFLAGS=$(LINKFLAGS)
RUNNER_LIBS=-lws2_32
RUNNER_SRC=test/runner-win.c
-uv.a: uv-win.o
- $(AR) rcs uv.a uv-win.o
+uv.a: uv-win.o uv-common.o
+ $(AR) rcs uv.a uv-win.o uv-common.o
uv-win.o: uv-win.c uv.h uv-win.h
$(CC) $(CFLAGS) -c uv-win.c -o uv-win.o
+uv-common.o: uv-common.c uv.h uv-win.h
+ $(CC) $(CFLAGS) -c uv-common.c -o uv-common.o
+
distclean-platform:
clean-platform:
diff --git a/config-unix.mk b/config-unix.mk
index 500b1890..af8c7d81 100644
--- a/config-unix.mk
+++ b/config-unix.mk
@@ -35,12 +35,15 @@ RUNNER_LINKFLAGS=$(LINKFLAGS) -pthread
RUNNER_LIBS=
RUNNER_SRC=test/runner-unix.c
-uv.a: uv-unix.o ev/ev.o
- $(AR) rcs uv.a uv-unix.o ev/ev.o
+uv.a: uv-unix.o uv-common.o ev/ev.o
+ $(AR) rcs uv.a uv-unix.o uv-common.o ev/ev.o
uv-unix.o: uv-unix.c uv.h uv-unix.h
$(CC) $(CFLAGS) -c uv-unix.c -o uv-unix.o
+uv-common.o: uv-common.c uv.h uv-unix.h
+ $(CC) $(CFLAGS) -c uv-common.c -o uv-common.o
+
ev/ev.o: ev/config.h ev/ev.c
$(MAKE) -C ev
diff --git a/msvs/libuv.vcxproj b/msvs/libuv.vcxproj
index 3c7f2e1a..7b11f49e 100644
--- a/msvs/libuv.vcxproj
+++ b/msvs/libuv.vcxproj
@@ -119,9 +119,12 @@
true
+
+
+
diff --git a/uv-common.c b/uv-common.c
new file mode 100644
index 00000000..1b454f33
--- /dev/null
+++ b/uv-common.c
@@ -0,0 +1,68 @@
+/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "uv.h"
+
+#include
+
+
+const char* uv_err_name(uv_err_t err) {
+ switch (err.code) {
+ case UV_UNKNOWN: return "UNKNOWN";
+ case UV_OK: return "OK";
+ case UV_EOF: return "EOF";
+ case UV_EACCESS: return "EACCESS";
+ case UV_EAGAIN: return "EAGAIN";
+ case UV_EADDRINUSE: return "EADDRINUSE";
+ case UV_EADDRNOTAVAIL: return "EADDRNOTAVAIL";
+ case UV_EAFNOSUPPORT: return "EAFNOSUPPORT";
+ case UV_EALREADY: return "EALREADY";
+ case UV_EBADF: return "EBADF";
+ case UV_EBUSY: return "EBUSY";
+ case UV_ECONNABORTED: return "ECONNABORTED";
+ case UV_ECONNREFUSED: return "ECONNREFUSED";
+ case UV_ECONNRESET: return "ECONNRESET";
+ case UV_EDESTADDRREQ: return "EDESTADDRREQ";
+ case UV_EFAULT: return "EFAULT";
+ case UV_EHOSTUNREACH: return "EHOSTUNREACH";
+ case UV_EINTR: return "EINTR";
+ case UV_EINVAL: return "EINVAL";
+ case UV_EISCONN: return "EISCONN";
+ case UV_EMFILE: return "EMFILE";
+ case UV_ENETDOWN: return "ENETDOWN";
+ case UV_ENETUNREACH: return "ENETUNREACH";
+ case UV_ENFILE: return "ENFILE";
+ case UV_ENOBUFS: return "ENOBUFS";
+ case UV_ENOMEM: return "ENOMEM";
+ case UV_ENONET: return "ENONET";
+ case UV_ENOPROTOOPT: return "ENOPROTOOPT";
+ case UV_ENOTCONN: return "ENOTCONN";
+ case UV_ENOTSOCK: return "ENOTSOCK";
+ case UV_ENOTSUP: return "ENOTSUP";
+ case UV_EPROTO: return "EPROTO";
+ case UV_EPROTONOSUPPORT: return "EPROTONOSUPPORT";
+ case UV_EPROTOTYPE: return "EPROTOTYPE";
+ case UV_ETIMEDOUT: return "ETIMEDOUT";
+ default:
+ assert(0);
+ return NULL;
+ }
+}
diff --git a/uv-unix.c b/uv-unix.c
index d3c3be20..0e978277 100644
--- a/uv-unix.c
+++ b/uv-unix.c
@@ -44,50 +44,6 @@ int uv_tcp_open(uv_handle_t*, int fd);
static void uv__finish_close(uv_handle_t* handle);
-const char* uv_err_tostr(uv_err_code code) {
- switch (code) {
- case UV_UNKNOWN: return "UNKNOWN";
- case UV_OK: return "OK";
- case UV_EOF: return "EOF";
- case UV_EACCESS: return "EACCESS";
- case UV_EAGAIN: return "EAGAIN";
- case UV_EADDRINUSE: return "EADDRINUSE";
- case UV_EADDRNOTAVAIL: return "EADDRNOTAVAIL";
- case UV_EAFNOSUPPORT: return "EAFNOSUPPORT";
- case UV_EALREADY: return "EALREADY";
- case UV_EBADF: return "EBADF";
- case UV_EBUSY: return "EBUSY";
- case UV_ECONNABORTED: return "ECONNABORTED";
- case UV_ECONNREFUSED: return "ECONNREFUSED";
- case UV_ECONNRESET: return "ECONNRESET";
- case UV_EDESTADDRREQ: return "EDESTADDRREQ";
- case UV_EFAULT: return "EFAULT";
- case UV_EHOSTUNREACH: return "EHOSTUNREACH";
- case UV_EINTR: return "EINTR";
- case UV_EINVAL: return "EINVAL";
- case UV_EISCONN: return "EISCONN";
- case UV_EMFILE: return "EMFILE";
- case UV_ENETDOWN: return "ENETDOWN";
- case UV_ENETUNREACH: return "ENETUNREACH";
- case UV_ENFILE: return "ENFILE";
- case UV_ENOBUFS: return "ENOBUFS";
- case UV_ENOMEM: return "ENOMEM";
- case UV_ENONET: return "ENONET";
- case UV_ENOPROTOOPT: return "ENOPROTOOPT";
- case UV_ENOTCONN: return "ENOTCONN";
- case UV_ENOTSOCK: return "ENOTSOCK";
- case UV_ENOTSUP: return "ENOTSUP";
- case UV_EPROTO: return "EPROTO";
- case UV_EPROTONOSUPPORT: return "EPROTONOSUPPORT";
- case UV_EPROTOTYPE: return "EPROTOTYPE";
- case UV_ETIMEDOUT: return "ETIMEDOUT";
- default:
- assert(0);
- return NULL;
- }
-}
-
-
/* flags */
enum {
UV_CLOSING = 0x00000001, /* uv_close() called but not finished. */
diff --git a/uv.h b/uv.h
index cf425b4b..0b4984bf 100644
--- a/uv.h
+++ b/uv.h
@@ -165,7 +165,7 @@ struct uv_handle_s {
*/
uv_err_t uv_last_error();
char* uv_strerror(uv_err_t err);
-const char* uv_err_tostr(uv_err_code code);
+const char* uv_err_name(uv_err_t err);
void uv_init(uv_alloc_cb alloc);
int uv_run();