ruby-changes:4946
From: ko1@a...
Date: Sat, 17 May 2008 11:29:34 +0900 (JST)
Subject: [ruby-changes:4946] nobu - Ruby:r16439 (trunk, ruby_1_8): * file.c (rb_file_s_extname): first dot is not an extension name.
nobu 2008-05-17 11:29:13 +0900 (Sat, 17 May 2008) New Revision: 16439 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/file.c trunk/ChangeLog trunk/file.c trunk/test/ruby/test_file_exhaustive.rb Log: * file.c (rb_file_s_extname): first dot is not an extension name. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_file_exhaustive.rb?r1=16439&r2=16438&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/file.c?r1=16439&r2=16438&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=16439&r2=16438&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16439&r2=16438&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/file.c?r1=16439&r2=16438&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16438) +++ ChangeLog (revision 16439) @@ -1,3 +1,7 @@ +Sat May 17 11:29:11 2008 Nobuyoshi Nakada <nobu@r...> + + * file.c (rb_file_s_extname): first dot is not an extension name. + Sat May 17 03:21:29 2008 Yukihiro Matsumoto <matz@r...> * array.c (rb_ary_sort_bang): stop memory leak. [ruby-dev:34726] Index: test/ruby/test_file_exhaustive.rb =================================================================== --- test/ruby/test_file_exhaustive.rb (revision 16438) +++ test/ruby/test_file_exhaustive.rb (revision 16439) @@ -411,6 +411,17 @@ def test_extname assert(".test", File.extname(@file)) assert_equal("", File.extname("foo")) + assert_equal("", File.extname("/foo")) + assert_equal("", File.extname(".foo")) + assert_equal("", File.extname("/.foo")) + assert_equal("", File.extname("bar/.foo")) + assert_equal("", File.extname("/bar/.foo")) + assert_equal(".ext", File.extname("foo.ext")) + assert_equal(".ext", File.extname("/foo.ext")) + assert_equal(".ext", File.extname(".foo.ext")) + assert_equal(".ext", File.extname("/.foo.ext")) + assert_equal(".ext", File.extname("bar/.foo.ext")) + assert_equal(".ext", File.extname("/bar/.foo.ext")) assert_equal("", File.extname("")) if /cygwin|mingw|mswin|bccwin/ =~ RUBY_PLATFORM assert_equal("", File.extname("foo ")) Index: file.c =================================================================== --- file.c (revision 16438) +++ file.c (revision 16439) @@ -3104,7 +3104,7 @@ if (!p) p = name; else - p++; + name = ++p; e = 0; while (*p) { @@ -3134,7 +3134,7 @@ break; p = CharNext(p); } - if (!e || e+1 == p) /* no dot, or the only dot is first or end? */ + if (!e || e == name || e+1 == p) /* no dot, or the only dot is first or end? */ return rb_str_new(0, 0); extname = rb_str_new(e, p - e); /* keep the dot, too! */ rb_enc_copy(extname, fname); Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 16438) +++ ruby_1_8/ChangeLog (revision 16439) @@ -1,3 +1,7 @@ +Sat May 17 11:29:11 2008 Nobuyoshi Nakada <nobu@r...> + + * file.c (rb_file_s_extname): first dot is not an extension name. + Sat May 17 10:18:44 2008 Yukihiro Matsumoto <matz@r...> * re.c (rb_reg_search): need to free allocated buffer in re_register. Index: ruby_1_8/file.c =================================================================== --- ruby_1_8/file.c (revision 16438) +++ ruby_1_8/file.c (revision 16439) @@ -3023,7 +3023,7 @@ if (!p) p = name; else - p++; + name = ++p; e = 0; while (*p) { @@ -3053,7 +3053,7 @@ break; p = CharNext(p); } - if (!e || e+1 == p) /* no dot, or the only dot is first or end? */ + if (!e || e == name || e+1 == p) /* no dot, or the only dot is first or end? */ return rb_str_new(0, 0); extname = rb_str_new(e, p - e); /* keep the dot, too! */ OBJ_INFECT(extname, fname); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/