diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-30 09:26:09 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-30 09:26:09 +0000 |
commit | 38af94c6abaaa20aeaa1ffafbe3f6ff962f63eaa (patch) | |
tree | ee5ca5d6f52312d1d6fd79c8e1f01ad3014ca45d | |
parent | 635bdf6f13712b7bb536a469734a5b4446e1923e (diff) |
* file.c (rb_file_dirname): split from rb_file_s_dirname.
* load.c (rb_f_require_relative): use absolute path instead of
expanded path.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | file.c | 8 | ||||
-rw-r--r-- | include/ruby/intern.h | 1 | ||||
-rw-r--r-- | load.c | 5 |
4 files changed, 17 insertions, 4 deletions
@@ -1,3 +1,10 @@ +Tue Mar 30 18:25:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * file.c (rb_file_dirname): split from rb_file_s_dirname. + + * load.c (rb_f_require_relative): use absolute path instead of + expanded path. + Tue Mar 30 13:57:08 2010 Akinori MUSHA <knu@iDaemons.org> * process.c (proc_daemon): Process.daemon should raise an error on @@ -3428,9 +3428,15 @@ rb_file_s_basename(int argc, VALUE *argv) * File.dirname("/home/gumby/work/ruby.rb") #=> "/home/gumby/work" */ -VALUE +static VALUE rb_file_s_dirname(VALUE klass, VALUE fname) { + return rb_file_dirname(fname); +} + +VALUE +rb_file_dirname(VALUE fname) +{ const char *name, *root, *p; VALUE dirname; diff --git a/include/ruby/intern.h b/include/ruby/intern.h index 1ae13ee73b..c53728eec8 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -355,6 +355,7 @@ VALUE rb_file_s_expand_path(int, VALUE *); VALUE rb_file_expand_path(VALUE, VALUE); VALUE rb_file_s_absolute_path(int, VALUE *); VALUE rb_file_absolute_path(VALUE, VALUE); +VALUE rb_file_dirname(VALUE fname); void rb_file_const(const char*, VALUE); int rb_file_load_ok(const char *); int rb_find_file_ext_safe(VALUE*, const char* const*, int); @@ -452,13 +452,12 @@ VALUE rb_f_require_relative(VALUE obj, VALUE fname) { VALUE rb_current_realfilepath(void); - VALUE rb_file_s_dirname(VALUE klass, VALUE fname); VALUE base = rb_current_realfilepath(); if (NIL_P(base)) { rb_raise(rb_eLoadError, "cannot infer basepath"); } - base = rb_file_s_dirname(rb_cFile, base); - return rb_require_safe(rb_file_expand_path(fname, base), rb_safe_level()); + base = rb_file_dirname(base); + return rb_require_safe(rb_file_absolute_path(fname, base), rb_safe_level()); } static int |