Actions
Bug #17280
closedDir.glob with FNM_DOTMATCH matches ".." and "." and results in duplicated entries
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]
Description
% ruby -e 'p Dir.glob("**/*", File::FNM_DOTMATCH)'
[".", "bar", "bar/.", "bar/.baz", "bar/.baz/.", "bar/.baz/qux"]
% ruby -e 'p Dir.glob("**", File::FNM_DOTMATCH)'
[".", "..", "bar"]
% ruby -e 'p Dir.glob("*", File::FNM_DOTMATCH)'
[".", "..", "bar"]
I think ".."
was never intended by the user here, is it a bug?
Not sure about "."
.
Note it also causes duplicated entries: bar and bar/.baz
are twice in the Array!
I think ..
should always be ignored for glob purposes, it escapes the current directory.
And .
seems useless and causing duplicates.
I think the intention of users of File::FNM_DOTMATCH
is to match file/directories starting with a .
like .baz
.
Probably Dir.glob("**/{*,.*}")
is a safer way to achieve that,
but still I think FNM_DOTMATCH
should not produce such weird results.
From https://github.com/oracle/truffleruby/issues/2116
I could not figure out what was the intended semantics for FNM_DOTMATCH with regards to .
and ..
.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0