From a845bf74ae065a809dbe342c19db4774ae74f57c Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Wed, 6 Jul 2011 02:50:50 +0200 Subject: [PATCH] Libuv: add cygwin support Fails a few tests --- deps/uv/config-unix.mk | 8 +++++++ deps/uv/uv-cygwin.c | 52 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 deps/uv/uv-cygwin.c diff --git a/deps/uv/config-unix.mk b/deps/uv/config-unix.mk index 5e51bb8716..0946dcee91 100644 --- a/deps/uv/config-unix.mk +++ b/deps/uv/config-unix.mk @@ -59,6 +59,14 @@ LINKFLAGS+= UV_OS_FILE=uv-freebsd.c endif +ifneq (,$(findstring CYGWIN,$(uname_S))) +EV_CONFIG=config_cygwin.h +EIO_CONFIG=config_cygwin.h +CPPFLAGS += -Ic-ares/config_cygwin +LINKFLAGS+= +UV_OS_FILE=uv-cygwin.c +endif + # Need _GNU_SOURCE for strdup? RUNNER_CFLAGS=$(CFLAGS) -D_GNU_SOURCE diff --git a/deps/uv/uv-cygwin.c b/deps/uv/uv-cygwin.c new file mode 100644 index 0000000000..d56a8e839b --- /dev/null +++ b/deps/uv/uv-cygwin.c @@ -0,0 +1,52 @@ +/* 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 +#include +#include + +#undef NANOSEC +#define NANOSEC 1000000000 + + +uint64_t uv_hrtime() { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (ts.tv_sec * NANOSEC + ts.tv_nsec); +} + + +int uv_exepath(char* buffer, size_t* size) { + uint32_t usize; + int result; + char* path; + char* fullpath; + + if (!buffer || !size) { + return -1; + } + + *size = readlink("/proc/self/exe", buffer, *size - 1); + if (*size <= 0) return -1; + buffer[*size] = '\0'; + return 0; +}