[前][次][番号順一覧][スレッド一覧]

ruby-changes:15496

From: nobu <ko1@a...>
Date: Mon, 19 Apr 2010 19:13:31 +0900 (JST)
Subject: [ruby-changes:15496] Ruby:r27398 (ruby_1_8): * eval.c (search_required): expand home relative path first.

nobu	2010-04-19 19:13:14 +0900 (Mon, 19 Apr 2010)

  New Revision: 27398

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27398

  Log:
    * eval.c (search_required): expand home relative path first.
      [ruby-core:29610]

  Added files:
    branches/ruby_1_8/test/ruby/test_require.rb
  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/eval.c

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 27397)
+++ ruby_1_8/ChangeLog	(revision 27398)
@@ -1,3 +1,8 @@
+Mon Apr 19 19:13:12 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* eval.c (search_required): expand home relative path first.
+	  [ruby-core:29610]
+
 Mon Apr 19 12:46:15 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* lib/timeout.rb (Timeout#timeout): propagate errors to the
Index: ruby_1_8/test/ruby/test_require.rb
===================================================================
--- ruby_1_8/test/ruby/test_require.rb	(revision 0)
+++ ruby_1_8/test/ruby/test_require.rb	(revision 27398)
@@ -0,0 +1,27 @@
+require 'test/unit'
+
+require 'tempfile'
+require File.expand_path('../envutil', __FILE__)
+require 'tmpdir'
+
+class TestRequire < Test::Unit::TestCase
+  def test_home_path
+    home = ENV["HOME"]
+    bug3171 = '[ruby-core:29610]'
+    Dir.mktmpdir do |tmp|
+      ENV["HOME"] = tmp
+      name = "loadtest#{$$}-1"
+      path = File.join(tmp, name) << ".rb"
+      open(path, "w") {}
+      require "~/#{name}"
+      assert_equal(path, $"[-1], bug3171)
+      name.succ!
+      path = File.join(tmp, name << ".rb")
+      open(path, "w") {}
+      require "~/#{name}"
+      assert_equal(path, $"[-1], bug3171)
+    end
+  ensure
+    ENV["HOME"] = home
+  end
+end

Property changes on: ruby_1_8/test/ruby/test_require.rb
___________________________________________________________________
Name: svn:eol-style
   + LF

Index: ruby_1_8/eval.c
===================================================================
--- ruby_1_8/eval.c	(revision 27397)
+++ ruby_1_8/eval.c	(revision 27398)
@@ -7411,9 +7411,13 @@
     const char *ext, *ftptr;
     int type;
 
+    if (*(ftptr = RSTRING_PTR(fname)) == '~') {
+	fname = rb_file_expand_path(fname, Qnil);
+	ftptr = RSTRING_PTR(fname);
+    }
     *featurep = fname;
     *path = 0;
-    ext = strrchr(ftptr = RSTRING_PTR(fname), '.');
+    ext = strrchr(ftptr, '.');
     if (ext && !strchr(ext, '/')) {
 	if (strcmp(".rb", ext) == 0) {
 	    if (rb_feature_p(ftptr, ext, Qtrue)) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]