Bug #12261
closed
Windows: File.dirname with 2+ / or 2+ \\ will return // or \\\\
Added by enebo (Thomas Enebo) almost 8 years ago.
Updated over 2 years ago.
Description
I am working through some File.dirname issues on JRuby and I saw a ruby/spec covering this behavior on windows:
File.dirname('/////').should == '//'
Same result if backslashes are used. Is there a reason for this result? It does not seem useful to me but I am not much of a windows user. I would think in this case it would be '/' since I don't see how this is useful for UNC paths in Ruby? If someone could explain it then I will document this at least in JRuby source code :)
So far all versions of MRI seem to have this behavior.
- Status changed from Open to Assigned
- Assignee set to usa (Usaku NAKAMURA)
I'm not sure whether this behavior was originally expected, but I think changing it at this point isn't worth the backwards compatibility breakage. For example, consider the following:
dir = File.dirname(string) # string could be '/////'
File.read(File.join(dir, 'server', 'share'))
If you change the behavior of File.dirname
from returning //
to returning /
, you change which file is read. In general, that's probably going to result an an Errno::ENOENT exception, but in the pathological case, it results in an unintended file being read.
@usa (Usaku NAKAMURA) Can you please determine whether this is a bug?
- Status changed from Assigned to Closed
It is a different thing from single '/' on Windows, like drive letters.
Also available in: Atom
PDF
Like0
Like0Like0