summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2013-09-30 11:56:15 +0900
committerTomoyuki Sahara <[email protected]>2013-09-30 11:56:15 +0900
commit8b48e2b4a42c9e1c697f94d3bb362a12484fe2e7 (patch)
tree8e901a3c9fab7e10b7019b874f9bc350b014e4d7 /src
parent97899a6922a016d4e488f929f009db78d46d7b1d (diff)
downloadmruby-8b48e2b4a42c9e1c697f94d3bb362a12484fe2e7.tar.gz
mruby-8b48e2b4a42c9e1c697f94d3bb362a12484fe2e7.zip
syswrite must write to fd2 if it is properly set.
closes #3.
Diffstat (limited to 'src')
-rw-r--r--src/io.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/io.c b/src/io.c
index e156733dd..b80ff63b8 100644
--- a/src/io.c
+++ b/src/io.c
@@ -470,7 +470,7 @@ mrb_io_syswrite(mrb_state *mrb, mrb_value io)
{
struct mrb_io *fptr;
mrb_value str, buf;
- int length;
+ int fd, length;
mrb_get_args(mrb, "S", &str);
if (mrb_type(str) != MRB_TT_STRING) {
@@ -480,7 +480,12 @@ mrb_io_syswrite(mrb_state *mrb, mrb_value io)
}
fptr = (struct mrb_io *)mrb_get_datatype(mrb, io, &mrb_io_type);
- length = write(fptr->fd, RSTRING_PTR(buf), RSTRING_LEN(buf));
+ if (fptr->fd2 == -1) {
+ fd = fptr->fd;
+ } else {
+ fd = fptr->fd2;
+ }
+ length = write(fd, RSTRING_PTR(buf), RSTRING_LEN(buf));
return mrb_fixnum_value(length);
}