From 418687fea023d632905463749800228c64dd5835 Mon Sep 17 00:00:00 2001 From: Manoj Ampalam Date: Thu, 28 Jan 2016 23:04:27 -0800 Subject: [PATCH] 1-28-C1 --- .../win32posix/win32posix/w32fd.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/contrib/win32/w32-posix-prototype/win32posix/win32posix/w32fd.c b/contrib/win32/w32-posix-prototype/win32posix/win32posix/w32fd.c index 5ffbff4..daa36a6 100644 --- a/contrib/win32/w32-posix-prototype/win32posix/win32posix/w32fd.c +++ b/contrib/win32/w32-posix-prototype/win32posix/win32posix/w32fd.c @@ -9,10 +9,20 @@ struct w32fd_table { }; struct w32fd_table fd_table; +struct w32_io w32_io_stdin, w32_io_stdout, w32_io_stderr; +void fd_table_set(struct w32_io* pio, int index); int fd_table_initialize() { memset(&fd_table, 0, sizeof(fd_table)); - //set stdin, stdout and stderr + memset(&w32_io_stdin, 0, sizeof(w32_io_stdin)); + w32_io_stdin.handle = STD_INPUT_HANDLE; + fd_table_set(&w32_io_stdin, stdin); + memset(&w32_io_stdout, 0, sizeof(w32_io_stdout)); + w32_io_stdout.handle = STD_OUTPUT_HANDLE; + fd_table_set(&w32_io_stdout, stdout); + memset(&w32_io_stderr, 0, sizeof(w32_io_stderr)); + w32_io_stderr.handle = STD_ERROR_HANDLE; + fd_table_set(&w32_io_stderr, stderr); return 0; } @@ -356,7 +366,7 @@ int w32_select(int fds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, co //see if any io is ready - for (int i = 0; i <= fds; i++) { + for (int i = 0; i < fds; i++) { if (readfds && FD_ISSET(i, readfds)) { if (fd_table.w32_ios[i] == NULL) { @@ -403,7 +413,7 @@ int w32_select(int fds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, co } //start async io on selected fds - for (int i = 0; i <= fds; i++) { + for (int i = 0; i < fds; i++) { if (readfds && FD_ISSET(i, readfds)) { if (w32_io_on_select(fd_table.w32_ios[i], TRUE) == -1) @@ -427,7 +437,7 @@ int w32_select(int fds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, co //check on fd status out_ready_fds = 0; - for (int i = 0; i <= fds; i++) { + for (int i = 0; i < fds; i++) { if (readfds && FD_ISSET(i, readfds)) { in_ready_fds++;