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

ruby-changes:25505

From: usa <ko1@a...>
Date: Thu, 8 Nov 2012 17:51:06 +0900 (JST)
Subject: [ruby-changes:25505] usa:r37562 (ruby_1_9_3): * file.c (append_fspath): filesystem encoding is prior to the encoding

usa	2012-11-08 17:50:56 +0900 (Thu, 08 Nov 2012)

  New Revision: 37562

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

  Log:
    * file.c (append_fspath): filesystem encoding is prior to the encoding
      of argument.
    
    * file.c (rb_file_expand_path_internal, EXPAND_PATH_BUFFER): ignore
      the encoding of the given path name, use filesystem encoding always
      instead.  [ruby-dev:39393] [Bug #2154]
    
    * test/ruby/test_file_exhaustive.rb: removed 2.0 spec tests.

  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/file.c
    branches/ruby_1_9_3/test/ruby/test_file_exhaustive.rb
    branches/ruby_1_9_3/test/ruby/test_require.rb
    branches/ruby_1_9_3/version.h

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 37561)
+++ ruby_1_9_3/ChangeLog	(revision 37562)
@@ -1,3 +1,14 @@
+Thu Nov  8 17:37:54 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* file.c (append_fspath): filesystem encoding is prior to the encoding
+	  of argument.
+
+	* file.c (rb_file_expand_path_internal, EXPAND_PATH_BUFFER): ignore
+	  the encoding of the given path name, use filesystem encoding always
+	  instead.  [ruby-dev:39393] [Bug #2154]
+
+	* test/ruby/test_file_exhaustive.rb: removed 2.0 spec tests.
+
 Thu Nov  8 17:33:53 2012  Luis Lavena  <luislavena@g...>
 
 	* ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
Index: ruby_1_9_3/version.h
===================================================================
--- ruby_1_9_3/version.h	(revision 37561)
+++ ruby_1_9_3/version.h	(revision 37562)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 317
+#define RUBY_PATCHLEVEL 318
 
 #define RUBY_RELEASE_DATE "2012-11-08"
 #define RUBY_RELEASE_YEAR 2012
Index: ruby_1_9_3/test/ruby/test_require.rb
===================================================================
--- ruby_1_9_3/test/ruby/test_require.rb	(revision 37561)
+++ ruby_1_9_3/test/ruby/test_require.rb	(revision 37562)
@@ -350,7 +350,7 @@
       $: << tmp
       open(File.join(tmp, "foo.rb"), "w") {}
       require "foo"
-      assert_equal(tmp.encoding, $"[0].encoding, bug6377)
+      assert_not_equal(Encoding::ASCII_8BIT, $"[0].encoding, bug6377)
     }
   ensure
     $:.replace(loadpath)
Index: ruby_1_9_3/test/ruby/test_file_exhaustive.rb
===================================================================
--- ruby_1_9_3/test/ruby/test_file_exhaustive.rb	(revision 37561)
+++ ruby_1_9_3/test/ruby/test_file_exhaustive.rb	(revision 37562)
@@ -1,3 +1,4 @@
+# -*- coding: us-ascii -*-
 require "test/unit"
 require "fileutils"
 require "tmpdir"
@@ -412,46 +413,6 @@
     end
   end
 
-  def test_expand_path_encoding
-    drive = (DRIVE ? 'C:' : '')
-    if Encoding.find("filesystem") == Encoding::CP1251
-      a = "#{drive}/\u3042\u3044\u3046\u3048\u304a".encode("cp932")
-    else
-      a = "#{drive}/\u043f\u0440\u0438\u0432\u0435\u0442".encode("cp1251")
-    end
-    assert_equal(a, File.expand_path(a))
-    a = "#{drive}/\225\\\\"
-    if File::ALT_SEPARATOR == '\\'
-      [%W"cp437 #{drive}/\225", %W"cp932 #{drive}/\225\\"]
-    else
-      [["cp437", a], ["cp932", a]]
-    end.each do |cp, expected|
-      assert_equal(expected.force_encoding(cp), File.expand_path(a.dup.force_encoding(cp)), cp)
-    end
-
-    path = "\u3042\u3044\u3046\u3048\u304a".encode("EUC-JP")
-    assert_equal("#{Dir.pwd}/#{path}".encode("CP932"), File.expand_path(path).encode("CP932"))
-
-    path = "\u3042\u3044\u3046\u3048\u304a".encode("CP51932")
-    assert_equal("#{Dir.pwd}/#{path}", File.expand_path(path))
-
-    assert_incompatible_encoding {|d| File.expand_path(d)}
-  end
-
-  def test_expand_path_encoding_filesystem
-    home = ENV["HOME"]
-    ENV["HOME"] = "#{DRIVE}/UserHome"
-
-    path = "~".encode("US-ASCII")
-    dir = "C:/".encode("IBM437")
-    fs = Encoding.find("filesystem")
-
-    assert_equal fs, File.expand_path(path).encoding
-    assert_equal fs, File.expand_path(path, dir).encoding
-  ensure
-    ENV["HOME"] = home
-  end
-
   def test_expand_path_home
     assert_kind_of(String, File.expand_path("~")) if ENV["HOME"]
     assert_raise(ArgumentError) { File.expand_path("~foo_bar_baz_unknown_user_wahaha") }
Index: ruby_1_9_3/file.c
===================================================================
--- ruby_1_9_3/file.c	(revision 37561)
+++ ruby_1_9_3/file.c	(revision 37562)
@@ -2875,7 +2875,7 @@
     size_t dirlen = strlen(dir), buflen = rb_str_capacity(result);
 
     if (*enc != fsenc) {
-	rb_encoding *direnc = rb_enc_check(fname, dirname = rb_enc_str_new(dir, dirlen, fsenc));
+	rb_encoding *direnc = rb_enc_check(dirname = rb_enc_str_new(dir, dirlen, fsenc), fname);
 	if (direnc != fsenc) {
 	    dirname = rb_str_conv_enc(dirname, fsenc, direnc);
 	    RSTRING_GETMEM(dirname, cwdp, dirlen);
@@ -2980,7 +2980,7 @@
     else if (!rb_is_absolute_path(s)) {
 	if (!NIL_P(dname)) {
 	    rb_file_expand_path_internal(dname, Qnil, abs_mode, long_name, result);
-	    rb_enc_associate(result, rb_enc_check(result, fname));
+	    rb_enc_check(result, fname);
 	    BUFINIT();
 	    p = pend;
 	}
@@ -3009,7 +3009,7 @@
 	BUFCHECK(bdiff >= buflen);
 	memset(buf, '/', len);
 	rb_str_set_len(result, len);
-	rb_enc_associate(result, rb_enc_check(result, fname));
+	rb_enc_check(result, fname);
     }
     if (p > buf && p[-1] == '/')
 	--p;
@@ -3228,13 +3228,12 @@
 
     if (tainted) OBJ_TAINT(result);
     rb_str_set_len(result, p - buf);
-    rb_enc_check(fname, result);
     ENC_CODERANGE_CLEAR(result);
     return result;
 }
 #endif /* _WIN32 */
 
-#define EXPAND_PATH_BUFFER() rb_usascii_str_new(0, MAXPATHLEN + 2)
+#define EXPAND_PATH_BUFFER() rb_enc_str_new(0, MAXPATHLEN + 2, rb_filesystem_encoding())
 
 #define check_expand_path_args(fname, dname) \
     (((fname) = rb_get_path(fname)), \

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

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