summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2014-02-25 12:19:52 +0900
committerTomoyuki Sahara <[email protected]>2014-02-25 12:19:52 +0900
commit56a8c592dd02cc603a57669b37035f4b8054c587 (patch)
tree0b990167d2f95ba8285debb7df1e17a71d78a61e /src
parent7fd585bae174751e69b3a5e3a65e18eabaf7b1bd (diff)
downloadmruby-56a8c592dd02cc603a57669b37035f4b8054c587.tar.gz
mruby-56a8c592dd02cc603a57669b37035f4b8054c587.zip
add IO.read
Diffstat (limited to 'src')
-rw-r--r--src/io.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/io.c b/src/io.c
index 78a04f8af..8c9de3667 100644
--- a/src/io.c
+++ b/src/io.c
@@ -3,7 +3,6 @@
*/
#include "mruby.h"
-
#include "mruby/hash.h"
#include "mruby/data.h"
#include "mruby/khash.h"
@@ -373,6 +372,17 @@ mrb_io_s_for_fd(mrb_state *mrb, mrb_value klass)
}
mrb_value
+mrb_io_s_sysclose(mrb_state *mrb, mrb_value klass)
+{
+ mrb_int fd;
+ mrb_get_args(mrb, "i", &fd);
+ if (close(fd) == -1) {
+ mrb_sys_fail(mrb, "close");
+ }
+ return mrb_fixnum_value(0);
+}
+
+mrb_value
mrb_io_s_sysopen(mrb_state *mrb, mrb_value klass)
{
mrb_value path = mrb_nil_value();
@@ -741,9 +751,10 @@ mrb_init_io(mrb_state *mrb)
mrb_include_module(mrb, io, mrb_module_get(mrb, "Enumerable")); /* 15.2.20.3 */
mrb_define_class_method(mrb, io, "_popen", mrb_io_s_popen, MRB_ARGS_ANY());
+ mrb_define_class_method(mrb, io, "_sysclose", mrb_io_s_sysclose, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, io, "for_fd", mrb_io_s_for_fd, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(2));
- mrb_define_class_method(mrb, io, "sysopen", mrb_io_s_sysopen, MRB_ARGS_ANY());
mrb_define_class_method(mrb, io, "select", mrb_io_s_select, MRB_ARGS_ANY());
+ mrb_define_class_method(mrb, io, "sysopen", mrb_io_s_sysopen, MRB_ARGS_ANY());
mrb_define_method(mrb, io, "initialize", mrb_io_initialize, MRB_ARGS_ANY()); /* 15.2.20.5.21 (x)*/
mrb_define_method(mrb, io, "sysread", mrb_io_sysread, MRB_ARGS_ANY());