mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* win32/win32.c (isUNCRoot, winnt_stat): support long UNC.
[ruby-core:30623][Feature #3399] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8c8796333a
commit
3ed259abbc
3 changed files with 23 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
Mon Apr 9 23:10:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* win32/win32.c (isUNCRoot, winnt_stat): support long UNC.
|
||||
[ruby-core:30623][Feature #3399]
|
||||
|
||||
Mon Apr 9 15:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* parse.y (string_content, parser_yylex): count brace nesting to
|
||||
|
|
|
@ -204,4 +204,14 @@ class TestFile < Test::Unit::TestCase
|
|||
assert_equal(File.chmod(0666, file), 1, bug5671)
|
||||
end
|
||||
end
|
||||
|
||||
if /(bcc|ms|cyg)win|mingw|emx/ =~ RUBY_PLATFORM
|
||||
def test_long_unc
|
||||
feature3399 = '[ruby-core:30623]'
|
||||
path = File.expand_path(__FILE__)
|
||||
assert_nothing_raised(Errno::ENOENT, feature3399) do
|
||||
File.stat("//?/#{path}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4407,8 +4407,11 @@ static int
|
|||
isUNCRoot(const WCHAR *path)
|
||||
{
|
||||
if (path[0] == L'\\' && path[1] == L'\\') {
|
||||
const WCHAR *p;
|
||||
for (p = path + 2; *p; p++) {
|
||||
const WCHAR *p = path + 2;
|
||||
if (p[0] == L'?' && p[1] == L'\\') {
|
||||
p += 2;
|
||||
}
|
||||
for (; *p; p++) {
|
||||
if (*p == L'\\')
|
||||
break;
|
||||
}
|
||||
|
@ -4577,11 +4580,13 @@ winnt_stat(const WCHAR *path, struct stati64 *st)
|
|||
{
|
||||
HANDLE h;
|
||||
WIN32_FIND_DATAW wfd;
|
||||
const WCHAR *p = path;
|
||||
|
||||
memset(st, 0, sizeof(*st));
|
||||
st->st_nlink = 1;
|
||||
|
||||
if (wcspbrk(path, L"?*")) {
|
||||
if (wcsncmp(p, L"\\\\?\\", 4) == 0) p += 4;
|
||||
if (wcspbrk(p, L"?*")) {
|
||||
errno = ENOENT;
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue