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/