From 0380865a551ba69d6e0e015883132c29aa791acd Mon Sep 17 00:00:00 2001 From: Takuya ASADA Date: Thu, 14 Nov 2013 03:08:43 -0800 Subject: [PATCH] add chdir --- src/dir.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/dir.c b/src/dir.c index 26021c275..14108f8de 100644 --- a/src/dir.c +++ b/src/dir.c @@ -148,6 +148,20 @@ mrb_dir_mkdir(mrb_state *mrb, mrb_value klass) return mrb_fixnum_value(0); } +mrb_value +mrb_dir_chdir(mrb_state *mrb, mrb_value klass) +{ + mrb_value spath; + char *path; + + mrb_get_args(mrb, "S", &spath); + path = mrb_str_to_cstr(mrb, spath); + if (chdir(path) == -1) { + mrb_sys_fail(mrb, path); + } + return mrb_fixnum_value(0); +} + mrb_value mrb_dir_read(mrb_state *mrb, mrb_value self) { @@ -223,6 +237,7 @@ mrb_mruby_dir_gem_init(mrb_state *mrb) mrb_define_class_method(mrb, d, "exist?", mrb_dir_existp, MRB_ARGS_REQ(1)); mrb_define_class_method(mrb, d, "getwd", mrb_dir_getwd, MRB_ARGS_NONE()); mrb_define_class_method(mrb, d, "mkdir", mrb_dir_mkdir, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1)); + mrb_define_class_method(mrb, d, "chdir", mrb_dir_chdir, MRB_ARGS_REQ(1)); mrb_define_method(mrb, d, "close", mrb_dir_close, MRB_ARGS_NONE()); mrb_define_method(mrb, d, "initialize", mrb_dir_init, MRB_ARGS_REQ(1));