From 63fe6ca5a08c371bac75d5a40ad008b61d99c6b5 Mon Sep 17 00:00:00 2001 From: usa Date: Fri, 18 Nov 2005 09:09:25 +0000 Subject: * file.c (rb_file_s_dirname): should use skipprefix for UNC path. pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 ++++++- file.c | 2 +- test/ruby/test_path.rb | 20 ++++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 787834ce9e..9d8c1c5108 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Nov 18 17:57:08 2005 NAKAMURA Usaku + + * file.c (rb_file_s_dirname): should use skipprefix for UNC path. + pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076] + Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI * ext/tk/lib/multi-tk.rb: add restriction to access the entried @@ -16,7 +21,7 @@ Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI Fri Nov 18 17:26:06 2005 NAKAMURA Usaku - * file.c (file_s_dirname): added checks for some patterns with drive + * file.c (rb_file_s_dirname): added checks for some patterns with drive letter. fixed: [ruby-dev:27738] * test/ruby/test_path.rb (test_dirname): added tests for above diff --git a/file.c b/file.c index 36c5ed876e..e2136f2d64 100644 --- a/file.c +++ b/file.c @@ -2689,7 +2689,7 @@ rb_file_s_dirname(klass, fname) root = skiproot(name); #ifdef DOSISH_UNC if (root > name + 1 && isdirsep(*name)) - name = root - 2; + root = skipprefix(name = root - 2); #else if (root > name + 1) name = root - 1; diff --git a/test/ruby/test_path.rb b/test/ruby/test_path.rb index 4b9365508a..09ab4ac677 100644 --- a/test/ruby/test_path.rb +++ b/test/ruby/test_path.rb @@ -95,23 +95,31 @@ class TestPath < Test::Unit::TestCase if /(bcc|ms|cyg)win|mingw|djgpp|human|emx/ =~ RUBY_PLATFORM # DOSISH_UNC assert_equal('//', File.dirname('//')) - assert_equal('//', File.dirname('//a')) - assert_equal('//', File.dirname('//a/')) - assert_equal('//a', File.dirname('//a/b')) + assert_equal('//a', File.dirname('//a')) + assert_equal('//a/', File.dirname('//a/')) + assert_equal('//a/b', File.dirname('//a/b')) + assert_equal('//a/b', File.dirname('//a/b/')) + assert_equal('//a/b', File.dirname('//a/b/c')) assert_equal('//', File.dirname('///')) - assert_equal('//', File.dirname('///a')) - assert_equal('//', File.dirname('///a/')) - assert_equal('//a', File.dirname('///a/b')) + assert_equal('//a', File.dirname('///a')) + assert_equal('//a/', File.dirname('///a/')) + assert_equal('//a/b', File.dirname('///a/b')) + assert_equal('//a/b', File.dirname('///a/b/')) + assert_equal('//a/b', File.dirname('///a/b/c')) else # others assert_equal('/', File.dirname('//')) assert_equal('/', File.dirname('//a')) assert_equal('/', File.dirname('//a/')) assert_equal('/a', File.dirname('//a/b')) + assert_equal('/a', File.dirname('//a/b/')) + assert_equal('/a/b', File.dirname('//a/b/c')) assert_equal('/', File.dirname('///')) assert_equal('/', File.dirname('///a')) assert_equal('/', File.dirname('///a/')) assert_equal('/a', File.dirname('///a/b')) + assert_equal('/a', File.dirname('///a/b/')) + assert_equal('/a/b', File.dirname('///a/b/c')) end end end -- cgit v1.2.3