aboutsummaryrefslogtreecommitdiff
path: root/deps/uv/src
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-01-22 16:21:25 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2013-01-22 16:21:25 +0100
commit814bdf0f51fd3219063a44f919dfcdb6e51951f7 (patch)
tree90116f4843a754e6e6cffa63ddd16c015ee1fd1c /deps/uv/src
parentd5a590134655c9a59cfcab72217442ac4c795fd7 (diff)
downloadandroid-node-v8-814bdf0f51fd3219063a44f919dfcdb6e51951f7.tar.gz
android-node-v8-814bdf0f51fd3219063a44f919dfcdb6e51951f7.tar.bz2
android-node-v8-814bdf0f51fd3219063a44f919dfcdb6e51951f7.zip
deps: upgrade libuv to 7841f77
Diffstat (limited to 'deps/uv/src')
-rw-r--r--deps/uv/src/unix/fs.c45
-rw-r--r--deps/uv/src/unix/linux/syscalls.c4
-rw-r--r--deps/uv/src/unix/linux/syscalls.h22
-rw-r--r--deps/uv/src/unix/udp.c3
-rw-r--r--deps/uv/src/uv-common.c8
-rw-r--r--deps/uv/src/win/udp.c3
6 files changed, 63 insertions, 22 deletions
diff --git a/deps/uv/src/unix/fs.c b/deps/uv/src/unix/fs.c
index f01c83b4a0..6b7ac6c5a1 100644
--- a/deps/uv/src/unix/fs.c
+++ b/deps/uv/src/unix/fs.c
@@ -113,12 +113,55 @@ static ssize_t uv__fs_futime(uv_fs_t* req) {
/* utimesat() has nanosecond resolution but we stick to microseconds
* for the sake of consistency with other platforms.
*/
+ static int no_utimesat;
struct timespec ts[2];
+ struct timeval tv[2];
+ char path[sizeof("/proc/self/fd/") + 3 * sizeof(int)];
+ int r;
+
+ if (no_utimesat)
+ goto skip;
+
ts[0].tv_sec = req->atime;
ts[0].tv_nsec = (unsigned long)(req->atime * 1000000) % 1000000 * 1000;
ts[1].tv_sec = req->mtime;
ts[1].tv_nsec = (unsigned long)(req->mtime * 1000000) % 1000000 * 1000;
- return uv__utimesat(req->file, NULL, ts, 0);
+
+ r = uv__utimesat(req->file, NULL, ts, 0);
+ if (r == 0)
+ return r;
+
+ if (errno != ENOSYS)
+ return r;
+
+ no_utimesat = 1;
+
+skip:
+
+ tv[0].tv_sec = req->atime;
+ tv[0].tv_usec = (unsigned long)(req->atime * 1000000) % 1000000;
+ tv[1].tv_sec = req->mtime;
+ tv[1].tv_usec = (unsigned long)(req->mtime * 1000000) % 1000000;
+ snprintf(path, sizeof(path), "/proc/self/fd/%d", (int) req->file);
+
+ r = utimes(path, tv);
+ if (r == 0)
+ return r;
+
+ switch (errno) {
+ case ENOENT:
+ if (fcntl(req->file, F_GETFL) == -1 && errno == EBADF)
+ break;
+ /* Fall through. */
+
+ case EACCES:
+ case ENOTDIR:
+ errno = ENOSYS;
+ break;
+ }
+
+ return r;
+
#elif defined(__APPLE__) \
|| defined(__DragonFly__) \
|| defined(__FreeBSD__) \
diff --git a/deps/uv/src/unix/linux/syscalls.c b/deps/uv/src/unix/linux/syscalls.c
index 1f0174a6e7..870763be2e 100644
--- a/deps/uv/src/unix/linux/syscalls.c
+++ b/deps/uv/src/unix/linux/syscalls.c
@@ -323,7 +323,7 @@ int uv__inotify_init1(int flags) {
}
-int uv__inotify_add_watch(int fd, const char* path, __u32 mask) {
+int uv__inotify_add_watch(int fd, const char* path, uint32_t mask) {
#if defined(__NR_inotify_add_watch)
return syscall(__NR_inotify_add_watch, fd, path, mask);
#else
@@ -332,7 +332,7 @@ int uv__inotify_add_watch(int fd, const char* path, __u32 mask) {
}
-int uv__inotify_rm_watch(int fd, __s32 wd) {
+int uv__inotify_rm_watch(int fd, int32_t wd) {
#if defined(__NR_inotify_rm_watch)
return syscall(__NR_inotify_rm_watch, fd, wd);
#else
diff --git a/deps/uv/src/unix/linux/syscalls.h b/deps/uv/src/unix/linux/syscalls.h
index e65eb45891..195a981dec 100644
--- a/deps/uv/src/unix/linux/syscalls.h
+++ b/deps/uv/src/unix/linux/syscalls.h
@@ -25,10 +25,10 @@
#undef _GNU_SOURCE
#define _GNU_SOURCE
+#include <stdint.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
-#include <linux/types.h>
#define UV__O_NONBLOCK 0x800
#define UV__O_CLOEXEC 0x80000
@@ -71,21 +71,21 @@
#if defined(__x86_64__)
struct uv__epoll_event {
- __u32 events;
- __u64 data;
+ uint32_t events;
+ uint64_t data;
} __attribute__((packed));
#else
struct uv__epoll_event {
- __u32 events;
- __u64 data;
+ uint32_t events;
+ uint64_t data;
};
#endif
struct uv__inotify_event {
- __s32 wd;
- __u32 mask;
- __u32 cookie;
- __u32 len;
+ int32_t wd;
+ uint32_t mask;
+ uint32_t cookie;
+ uint32_t len;
/* char name[0]; */
};
@@ -111,8 +111,8 @@ int uv__epoll_pwait(int epfd,
int uv__eventfd2(unsigned int count, int flags);
int uv__inotify_init(void);
int uv__inotify_init1(int flags);
-int uv__inotify_add_watch(int fd, const char* path, __u32 mask);
-int uv__inotify_rm_watch(int fd, __s32 wd);
+int uv__inotify_add_watch(int fd, const char* path, uint32_t mask);
+int uv__inotify_rm_watch(int fd, int32_t wd);
int uv__pipe2(int pipefd[2], int flags);
int uv__recvmmsg(int fd,
struct uv__mmsghdr* mmsg,
diff --git a/deps/uv/src/unix/udp.c b/deps/uv/src/unix/udp.c
index f79b09cd80..8388ba6c23 100644
--- a/deps/uv/src/unix/udp.c
+++ b/deps/uv/src/unix/udp.c
@@ -542,8 +542,7 @@ int uv_udp_set_membership(uv_udp_t* handle, const char* multicast_addr,
optname = IP_DROP_MEMBERSHIP;
break;
default:
- uv__set_sys_error(handle->loop, EFAULT);
- return -1;
+ return uv__set_artificial_error(handle->loop, UV_EINVAL);
}
if (setsockopt(handle->io_watcher.fd, IPPROTO_IP, optname, (void*) &mreq, sizeof mreq) == -1) {
diff --git a/deps/uv/src/uv-common.c b/deps/uv/src/uv-common.c
index dd91dbb28d..0b05334945 100644
--- a/deps/uv/src/uv-common.c
+++ b/deps/uv/src/uv-common.c
@@ -198,7 +198,7 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size) {
int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in addr) {
if (handle->type != UV_TCP || addr.sin_family != AF_INET) {
- uv__set_artificial_error(handle->loop, UV_EFAULT);
+ uv__set_artificial_error(handle->loop, UV_EINVAL);
return -1;
}
@@ -208,7 +208,7 @@ int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in addr) {
int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6 addr) {
if (handle->type != UV_TCP || addr.sin6_family != AF_INET6) {
- uv__set_artificial_error(handle->loop, UV_EFAULT);
+ uv__set_artificial_error(handle->loop, UV_EINVAL);
return -1;
}
@@ -219,7 +219,7 @@ int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6 addr) {
int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr,
unsigned int flags) {
if (handle->type != UV_UDP || addr.sin_family != AF_INET) {
- uv__set_artificial_error(handle->loop, UV_EFAULT);
+ uv__set_artificial_error(handle->loop, UV_EINVAL);
return -1;
}
@@ -230,7 +230,7 @@ int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr,
int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr,
unsigned int flags) {
if (handle->type != UV_UDP || addr.sin6_family != AF_INET6) {
- uv__set_artificial_error(handle->loop, UV_EFAULT);
+ uv__set_artificial_error(handle->loop, UV_EINVAL);
return -1;
}
diff --git a/deps/uv/src/win/udp.c b/deps/uv/src/win/udp.c
index 56b46239a2..6d2cde30c6 100644
--- a/deps/uv/src/win/udp.c
+++ b/deps/uv/src/win/udp.c
@@ -615,8 +615,7 @@ int uv_udp_set_membership(uv_udp_t* handle, const char* multicast_addr,
optname = IP_DROP_MEMBERSHIP;
break;
default:
- uv__set_artificial_error(handle->loop, UV_EFAULT);
- return -1;
+ return uv__set_artificial_error(handle->loop, UV_EINVAL);
}
if (setsockopt(handle->socket,