summaryrefslogtreecommitdiff
path: root/deps/uv/test/runner-win.c
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-05-10 15:30:53 -0700
committerisaacs <i@izs.me>2013-05-10 15:30:53 -0700
commitfede68fd68924117a46420c1ecfe42fe681b4ae3 (patch)
tree6ffe361d1b2896a3fd89ec881f7622893c20f142 /deps/uv/test/runner-win.c
parentec576235f1f4d7f5873cf3c0118b28c022740ffe (diff)
downloadandroid-node-v8-fede68fd68924117a46420c1ecfe42fe681b4ae3.tar.gz
android-node-v8-fede68fd68924117a46420c1ecfe42fe681b4ae3.tar.bz2
android-node-v8-fede68fd68924117a46420c1ecfe42fe681b4ae3.zip
uv: Upgrade to 0.11.2
Diffstat (limited to 'deps/uv/test/runner-win.c')
-rw-r--r--deps/uv/test/runner-win.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/deps/uv/test/runner-win.c b/deps/uv/test/runner-win.c
index 3aae1c3e9c..5d23259437 100644
--- a/deps/uv/test/runner-win.c
+++ b/deps/uv/test/runner-win.c
@@ -248,6 +248,46 @@ int process_copy_output(process_info_t *p, int fd) {
}
+int process_read_last_line(process_info_t *p,
+ char * buffer,
+ size_t buffer_len) {
+ DWORD size;
+ DWORD read;
+ DWORD start;
+ OVERLAPPED overlapped;
+
+ ASSERT(buffer_len > 0);
+
+ size = GetFileSize(p->stdio_out, NULL);
+ if (size == INVALID_FILE_SIZE)
+ return -1;
+
+ if (size == 0) {
+ buffer[0] = '\0';
+ return 1;
+ }
+
+ memset(&overlapped, 0, sizeof overlapped);
+ if (size >= buffer_len)
+ overlapped.Offset = size - buffer_len - 1;
+
+ if (!ReadFile(p->stdio_out, buffer, buffer_len - 1, &read, &overlapped))
+ return -1;
+
+ for (start = read - 1; start >= 0; start--) {
+ if (buffer[start] == '\n' || buffer[start] == '\r')
+ break;
+ }
+
+ if (start > 0)
+ memmove(buffer, buffer + start, read - start);
+
+ buffer[read - start] = '\0';
+
+ return 0;
+}
+
+
char* process_get_name(process_info_t *p) {
return p->name;
}