Bug #12261


Windows: File.dirname with 2+ / or 2+ \\ will return // or \\\\

Added by enebo (Thomas Enebo) over 5 years ago. Updated 5 months ago.

Target version:


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.

Updated by jeremyevans0 (Jeremy Evans) 5 months ago

  • Assignee set to usa (Usaku NAKAMURA)
  • Status changed from Open to Assigned

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 '/////', '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?

Updated by nobu (Nobuyoshi Nakada) 5 months ago

  • Status changed from Assigned to Closed

It is a different thing from single '/' on Windows, like drive letters.


Also available in: Atom PDF