Skip to content

Commit

Permalink
* file.c (rb_file_s_dirname): should use skipprefix for UNC path.
Browse files Browse the repository at this point in the history
  pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
unak committed Nov 18, 2005
1 parent ed9a1f3 commit a8abed1
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 9 deletions.
7 changes: 6 additions & 1 deletion ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
Fri Nov 18 18:07:05 2005 NAKAMURA Usaku <[email protected]>

* 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 <[email protected]>

* ext/tk/lib/multi-tk.rb: add restriction to access the entried
Expand All @@ -16,7 +21,7 @@ Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI <[email protected]>

Fri Nov 18 16:47:33 2005 NAKAMURA Usaku <[email protected]>

* 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
Expand Down
4 changes: 2 additions & 2 deletions file.c
Original file line number Diff line number Diff line change
Expand Up @@ -2626,8 +2626,8 @@ rb_file_s_dirname(VALUE klass, VALUE fname)
name = StringValueCStr(fname);
root = skiproot(name);
#ifdef DOSISH_UNC
if (root > name + 2 && isdirsep(*name))
name = root - 2;
if (root > name + 1 && isdirsep(*name))
root = skipprefix(name = root - 2);
#else
if (root > name + 1)
name = root - 1;
Expand Down
20 changes: 14 additions & 6 deletions test/ruby/test_path.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,23 +95,31 @@ def test_dirname # [ruby-dev:27738]
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

0 comments on commit a8abed1

Please sign in to comment.