From: "h.shirosaki (Hiroshi Shirosaki)" Date: 2012-08-10T20:56:56+09:00 Subject: [ruby-core:47109] [ruby-trunk - Bug #6851] Result of File.stat("c:/...") is different from 1.9.3 Issue #6851 has been updated by h.shirosaki (Hiroshi Shirosaki). The behavior is same (not raises exception) as before r36668. C:\>ruby -ve "p File.stat('C:/...')" ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100] # C:\>ruby -ve "p File.stat('C:/....')" ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100] # That seems due to r34205 and r34216. Revert will solve this issue, but #5819 is not solved on the following corner case. I think revert might be better. What do you think? x:\ is empty drive. (ramdisk) # this case is ok C:\>miniruby -I. -e "p File.stat('x:/')" # # but this case fails C:\>miniruby -I. -e "p File.stat('x:/.../..')" -e:1:in `stat': No such file or directory - x:/.../.. (Errno::ENOENT) from -e:1:in `
' diff --git a/win32/win32.c b/win32/win32.c index de655df..11f20ba 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -4562,15 +4562,6 @@ check_valid_dir(const WCHAR *path) if (wcsstr(path, L"...") == NULL) return 0; - /* if the specified path is the root of a drive and the drive is empty, */ - /* FindFirstFile() returns INVALID_HANDLE_VALUE. */ - if (!GetFullPathNameW(path, sizeof(full) / sizeof(WCHAR), full, &dmy)) { - errno = map_errno(GetLastError()); - return -1; - } - if (full[1] == L':' && !full[3] && GetDriveTypeW(full) != DRIVE_NO_ROOT_DIR) - return 0; - fh = open_dir_handle(path, &fd); if (fh == INVALID_HANDLE_VALUE) return -1; ---------------------------------------- Bug #6851: Result of File.stat("c:/...") is different from 1.9.3 https://bugs.ruby-lang.org/issues/6851#change-28759 Author: phasis68 (Heesob Park) Status: Assigned Priority: Normal Assignee: h.shirosaki (Hiroshi Shirosaki) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] What is the correct result of File.stat("c:/...") on Windows? File#stat for path like "c:/..." succeeds on trunk 36676. C:\>ruby -ve 'p File.stat("c:/...")' ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] # C:\>ruby -ve 'p File.stat("c:/....")' ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] # C:\>ruby -ve 'p File.stat("c:/..../..")' ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100] # But, File#stat raises exception on Ruby 1.9.3. C:\Ruby193\bin>ruby -ve 'p File.stat("c:/...") ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] -e:1:in `stat': Invalid argument - c:/... (Errno::EINVAL) from -e:1:in `
' C:\Ruby193\bin>ruby -ve 'p File.stat("c:/....") ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] -e:1:in `stat': No such file or directory - c:/.... (Errno::ENOENT) from -e:1:in `
' -- http://bugs.ruby-lang.org/