summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-07 15:47:59 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-07 15:47:59 +0000
commitc3ce319d7d9ea2bbde36aa65baf6fecebc9f101a (patch)
tree32ae08c08de692e1bef7fc9a846c965d0774da95 /io.c
parent6100eced2ed54b75c059e7fac4b69182798cfa75 (diff)
* io.c (pipe_open): win32 bidirectional pipe support.
* win32/win32.[ch] (rb_w32_pipe_exec): ditto. * win32/win32.[ch] (socketpair): new function. POSIX socketpair emulation. * win32/win32.c (socketpair_internal): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/io.c b/io.c
index c95b67d379..665956842a 100644
--- a/io.c
+++ b/io.c
@@ -2805,7 +2805,7 @@ pipe_open(argc, argv, mode)
struct popen_arg arg;
volatile int doexec;
#elif defined(_WIN32)
- int r, w;
+ int fd;
int openmode = rb_io_mode_modenum(mode);
char *exename = NULL;
#endif
@@ -2895,7 +2895,7 @@ pipe_open(argc, argv, mode)
else {
cmd = StringValueCStr(prog);
}
- while ((pid = rb_w32_pipe_exec(cmd, exename, openmode, &r, &w)) == -1) {
+ while ((pid = rb_w32_pipe_exec(cmd, exename, openmode, &fd)) == -1) {
/* exec failed */
switch (errno) {
case EAGAIN:
@@ -2910,14 +2910,13 @@ pipe_open(argc, argv, mode)
}
}
if ((modef & FMODE_READABLE) && (modef & FMODE_WRITABLE)) {
- close(w);
- fp = rb_fdopen(r, "r+");
+ fp = rb_fdopen(fd, "r+");
}
else if (modef & FMODE_READABLE) {
- fp = rb_fdopen(r, "r");
+ fp = rb_fdopen(fd, "r");
}
else {
- fp = rb_fdopen(w, "w");
+ fp = rb_fdopen(fd, "w");
}
#else
prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));