[#61822] Plan Developers Meeting Japan April 2014 — Zachary Scott <e@...>

I would like to request developers meeting around April 17 or 18 in this mo=

14 messages 2014/04/03
[#61825] Re: Plan Developers Meeting Japan April 2014 — Urabe Shyouhei <shyouhei@...> 2014/04/03

It's good if we have a meeting then.

[#61826] Re: Plan Developers Meeting Japan April 2014 — Zachary Scott <e@...> 2014/04/03

Regarding openssl issues, I=E2=80=99ve discussed possible meeting time with=

[#61833] Re: Plan Developers Meeting Japan April 2014 — Martin Bo煬et <martin.bosslet@...> 2014/04/03

Hi,

[ruby-core:62191] [ruby-trunk - Bug #9648] [Assigned] Dir.glob('../*') shows unexpected result in a symbolic linked directory on Windows

From: h.shirosaki@...
Date: 2014-04-28 05:31:31 UTC
List: ruby-core #62191
Issue #9648 has been updated by Hiroshi Shirosaki.

Status changed from Feedback to Assigned
Assignee set to Nobuyoshi Nakada

If current directory is C:\foo\bar (linked to V:\), `READDIR` of '.' (i.e. `FindFirstFile(".\\*", &d)`) globs linked directory (V:/), but the result doesn't have '..'.
So we cannot trace parent directory.

Skipping `READDIR` usage for this case solves the bug.


~~~patch
diff --git a/dir.c b/dir.c
index f456e8b..91a8495 100644
--- a/dir.c
+++ b/dir.c
@@ -1397,6 +1397,14 @@ glob_helper(
 
     if (exist == NO || isdir == NO) return 0;
 
+    if (!(magical || recursive) && (FNM_SYSCASE && plain)) {
+	/* READDIR will not return '..' at a directory which is symbolic linked to
+	   a root directory on Windows. We don't use READDIR to get '..'. */
+	struct glob_pattern *p = *beg;
+	if (p && strcmp(p->str, "..") == 0)
+	    goto literally;
+    }
+
     if (magical || recursive || ((FNM_SYSCASE || HAVE_HFS) && plain)) {
 	struct dirent *dp;
 	DIR *dirp;

~~~

----------------------------------------
Bug #9648: Dir.glob('../*') shows unexpected result in a symbolic linked directory on Windows
https://bugs.ruby-lang.org/issues/9648#change-46347

* Author: Hiroshi Shirosaki
* Status: Assigned
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* Category: 
* Target version: 
* ruby -v: ruby 2.2.0dev (2014-03-17 trunk 45356) [x64-mingw32]
* Backport: 2.0.0: DONTNEED, 2.1: DONTNEED
----------------------------------------
`Dir.glob('../*')` shows unexpected result if current directory is a symbolic linked directory on Windows.
This issue seems to be introduced by r44802.

The following is a test case.


~~~
C:\foo>mklink /D bar V:\
symbolic link created for bar <<===>> V:\

C:\foo>cd bar

C:\foo\bar>ruby -ve "p Dir.glob('../*')"
ruby 1.9.3p392 (2013-02-22) [i386-mingw32]
["../a", "../bar"]

C:\foo\bar>\rubyinstaller\sandbox\ruby21_build\miniruby.exe -ve "p Dir.glob('../*')"
ruby 2.2.0dev (2014-02-04 trunk 45356) [x64-mingw32]
[]


C:\foo\bar>dir ..
 Volume in drive C is OS
 Volume Serial Number is 6629-B36B

 Directory of C:\foo

2014/03/17  18:58    <DIR>          .
2014/03/17  18:58    <DIR>          ..
2014/03/17  18:45                 6 a
2014/03/17  18:58    <SYMLINKD>     bar [V:\]
               1 File(s)              6 bytes
               3 Dir(s)  81,915,052,032 bytes free
~~~



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next