diff options
author | isaacs <i@izs.me> | 2013-05-10 15:30:53 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2013-05-10 15:30:53 -0700 |
commit | fede68fd68924117a46420c1ecfe42fe681b4ae3 (patch) | |
tree | 6ffe361d1b2896a3fd89ec881f7622893c20f142 /deps/uv/test/runner-win.c | |
parent | ec576235f1f4d7f5873cf3c0118b28c022740ffe (diff) | |
download | android-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.c | 40 |
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; } |