Browse Source

uv: Upgrade to v0.10.23

v0.10.25-release
Timothy J Fontaine 11 years ago
parent
commit
8b7ec73331
  1. 1
      deps/uv/AUTHORS
  2. 13
      deps/uv/ChangeLog
  3. 5
      deps/uv/src/unix/linux-core.c
  4. 2
      deps/uv/src/unix/openbsd.c
  5. 43
      deps/uv/src/unix/process.c
  6. 2
      deps/uv/src/version.c
  7. 2
      deps/uv/test/test-list.h
  8. 102
      deps/uv/test/test-spawn.c

1
deps/uv/AUTHORS

@ -90,3 +90,4 @@ Geert Jansen <geertj@gmail.com>
Alex Gaynor <alex.gaynor@gmail.com> Alex Gaynor <alex.gaynor@gmail.com>
huxingyi <huxingyi@msn.com> huxingyi <huxingyi@msn.com>
Alex Crichton <alex@alexcrichton.com> Alex Crichton <alex@alexcrichton.com>
Luca Bruno <lucab@debian.org>

13
deps/uv/ChangeLog

@ -1,4 +1,15 @@
2014.01.08, Version 0.10.22 (Stable) 2014.01.23, Version 0.10.23 (Stable)
Changes since version 0.10.22:
* linux: relax assumption on /proc/stat parsing (Luca Bruno)
* openbsd: fix obvious bug in uv_cpu_info (Fedor Indutny)
* process: close stdio after dup2'ing it (Fedor Indutny)
2014.01.08, Version 0.10.22 (Stable), f526c90eeff271d9323a9107b9a64a4671fd3103
Changes since version 0.10.21: Changes since version 0.10.21:

5
deps/uv/src/unix/linux-core.c

@ -601,9 +601,9 @@ static int read_times(unsigned int numcpus, uv_cpu_info_t* ci) {
/* skip "cpu<num> " marker */ /* skip "cpu<num> " marker */
{ {
unsigned int n = num; unsigned int n;
assert(sscanf(buf, "cpu%u ", &n) == 1);
for (len = sizeof("cpu0"); n /= 10; len++); for (len = sizeof("cpu0"); n /= 10; len++);
assert(sscanf(buf, "cpu%u ", &n) == 1 && n == num);
} }
/* Line contains user, nice, system, idle, iowait, irq, softirq, steal, /* Line contains user, nice, system, idle, iowait, irq, softirq, steal,
@ -630,6 +630,7 @@ static int read_times(unsigned int numcpus, uv_cpu_info_t* ci) {
ci[num++].cpu_times = ts; ci[num++].cpu_times = ts;
} }
fclose(fp); fclose(fp);
assert(num == numcpus);
return 0; return 0;
} }

2
deps/uv/src/unix/openbsd.c

@ -223,7 +223,7 @@ uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
uint64_t info[CPUSTATES]; uint64_t info[CPUSTATES];
char model[512]; char model[512];
int numcpus = 1; int numcpus = 1;
static int which[] = {CTL_HW,HW_MODEL,0}; int which[] = {CTL_HW,HW_MODEL,0};
size_t size; size_t size;
int i; int i;
uv_cpu_info_t* cpu_info; uv_cpu_info_t* cpu_info;

43
deps/uv/src/unix/process.c

@ -290,32 +290,41 @@ static void uv__process_child_init(uv_process_options_t options,
close_fd = pipes[fd][0]; close_fd = pipes[fd][0];
use_fd = pipes[fd][1]; use_fd = pipes[fd][1];
if (use_fd >= 0) if (use_fd < 0) {
close(close_fd); if (fd >= 3)
else if (fd >= 3) continue;
continue; else {
else { /* redirect stdin, stdout and stderr to /dev/null even if UV_IGNORE is
/* redirect stdin, stdout and stderr to /dev/null even if UV_IGNORE is * set
* set */
*/ use_fd = open("/dev/null", fd == 0 ? O_RDONLY : O_RDWR);
use_fd = open("/dev/null", fd == 0 ? O_RDONLY : O_RDWR); close_fd = use_fd;
if (use_fd == -1) { if (use_fd == -1) {
uv__write_int(error_fd, errno); uv__write_int(error_fd, errno);
perror("failed to open stdio"); perror("failed to open stdio");
_exit(127); _exit(127);
}
} }
} }
if (fd == use_fd) if (fd == use_fd)
uv__cloexec(use_fd, 0); uv__cloexec(use_fd, 0);
else { else
dup2(use_fd, fd); dup2(use_fd, fd);
close(use_fd);
}
if (fd <= 2) if (fd <= 2)
uv__nonblock(fd, 0); uv__nonblock(fd, 0);
if (close_fd != -1)
close(close_fd);
}
for (fd = 0; fd < stdio_count; fd++) {
use_fd = pipes[fd][1];
if (use_fd >= 0 && fd != use_fd)
close(use_fd);
} }
if (options.cwd && chdir(options.cwd)) { if (options.cwd && chdir(options.cwd)) {

2
deps/uv/src/version.c

@ -34,7 +34,7 @@
#define UV_VERSION_MAJOR 0 #define UV_VERSION_MAJOR 0
#define UV_VERSION_MINOR 10 #define UV_VERSION_MINOR 10
#define UV_VERSION_PATCH 22 #define UV_VERSION_PATCH 23
#define UV_VERSION_IS_RELEASE 1 #define UV_VERSION_IS_RELEASE 1

2
deps/uv/test/test-list.h

@ -160,6 +160,7 @@ TEST_DECLARE (spawn_preserve_env)
TEST_DECLARE (spawn_setuid_fails) TEST_DECLARE (spawn_setuid_fails)
TEST_DECLARE (spawn_setgid_fails) TEST_DECLARE (spawn_setgid_fails)
TEST_DECLARE (spawn_stdout_to_file) TEST_DECLARE (spawn_stdout_to_file)
TEST_DECLARE (spawn_stdout_and_stderr_to_file)
TEST_DECLARE (spawn_auto_unref) TEST_DECLARE (spawn_auto_unref)
TEST_DECLARE (fs_poll) TEST_DECLARE (fs_poll)
TEST_DECLARE (kill) TEST_DECLARE (kill)
@ -435,6 +436,7 @@ TASK_LIST_START
TEST_ENTRY (spawn_setuid_fails) TEST_ENTRY (spawn_setuid_fails)
TEST_ENTRY (spawn_setgid_fails) TEST_ENTRY (spawn_setgid_fails)
TEST_ENTRY (spawn_stdout_to_file) TEST_ENTRY (spawn_stdout_to_file)
TEST_ENTRY (spawn_stdout_and_stderr_to_file)
TEST_ENTRY (spawn_auto_unref) TEST_ENTRY (spawn_auto_unref)
TEST_ENTRY (fs_poll) TEST_ENTRY (fs_poll)
TEST_ENTRY (kill) TEST_ENTRY (kill)

102
deps/uv/test/test-spawn.c

@ -263,6 +263,61 @@ TEST_IMPL(spawn_stdout_to_file) {
} }
TEST_IMPL(spawn_stdout_and_stderr_to_file) {
int r;
uv_file file;
uv_fs_t fs_req;
uv_stdio_container_t stdio[3];
/* Setup. */
unlink("stdout_file");
init_process_options("spawn_helper6", exit_cb);
r = uv_fs_open(uv_default_loop(), &fs_req, "stdout_file", O_CREAT | O_RDWR,
S_IREAD | S_IWRITE, NULL);
ASSERT(r != -1);
uv_fs_req_cleanup(&fs_req);
file = r;
options.stdio = stdio;
options.stdio[0].flags = UV_IGNORE;
options.stdio[1].flags = UV_INHERIT_FD;
options.stdio[1].data.fd = file;
options.stdio[2].flags = UV_INHERIT_FD;
options.stdio[2].data.fd = file;
options.stdio_count = 3;
r = uv_spawn(uv_default_loop(), &process, options);
ASSERT(r == 0);
r = uv_run(uv_default_loop(), UV_RUN_DEFAULT);
ASSERT(r == 0);
ASSERT(exit_cb_called == 1);
ASSERT(close_cb_called == 1);
r = uv_fs_read(uv_default_loop(), &fs_req, file, output, sizeof(output),
0, NULL);
ASSERT(r == 27);
uv_fs_req_cleanup(&fs_req);
r = uv_fs_close(uv_default_loop(), &fs_req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
printf("output is: %s", output);
ASSERT(strcmp("hello world\nhello errworld\n", output) == 0);
/* Cleanup. */
unlink("stdout_file");
MAKE_VALGRIND_HAPPY();
return 0;
}
TEST_IMPL(spawn_stdin) { TEST_IMPL(spawn_stdin) {
int r; int r;
uv_pipe_t out; uv_pipe_t out;
@ -562,6 +617,53 @@ TEST_IMPL(spawn_and_ping) {
} }
TEST_IMPL(spawn_same_stdout_stderr) {
uv_write_t write_req;
uv_pipe_t in, out;
uv_buf_t buf;
uv_stdio_container_t stdio[3];
int r;
init_process_options("spawn_helper3", exit_cb);
buf = uv_buf_init("TEST", 4);
uv_pipe_init(uv_default_loop(), &out, 0);
uv_pipe_init(uv_default_loop(), &in, 0);
options.stdio = stdio;
options.stdio[0].flags = UV_CREATE_PIPE | UV_READABLE_PIPE;
options.stdio[0].data.stream = (uv_stream_t*)&in;
options.stdio[1].flags = UV_CREATE_PIPE | UV_WRITABLE_PIPE;
options.stdio[1].data.stream = (uv_stream_t*)&out;
options.stdio_count = 2;
r = uv_spawn(uv_default_loop(), &process, options);
ASSERT(r == 0);
/* Sending signum == 0 should check if the
* child process is still alive, not kill it.
*/
r = uv_process_kill(&process, 0);
ASSERT(r == 0);
r = uv_write(&write_req, (uv_stream_t*)&in, &buf, 1, write_cb);
ASSERT(r == 0);
r = uv_read_start((uv_stream_t*)&out, on_alloc, on_read);
ASSERT(r == 0);
ASSERT(exit_cb_called == 0);
r = uv_run(uv_default_loop(), UV_RUN_DEFAULT);
ASSERT(r == 0);
ASSERT(exit_cb_called == 1);
ASSERT(strcmp(output, "TEST") == 0);
MAKE_VALGRIND_HAPPY();
return 0;
}
TEST_IMPL(kill) { TEST_IMPL(kill) {
int r; int r;
uv_err_t err; uv_err_t err;

Loading…
Cancel
Save