Project

General

Profile

Actions

Bug #16737

closed

File::BINARY doesn't work

Added by sos4nt (Stefan Schüßler) over 4 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:97582]

Description

File.open takes a mode argument which can be given as a string or as an integer using File::Constants.

When using the latter, the constant File::BINARY doesn't have any effect:

# this works:
File.open('foo', 'wb') do |f|
  p f.binmode?
  p f.external_encoding
end
#=> true
#=> #<Encoding:ASCII-8BIT>


# this doesn't:
File.open('foo', File::WRONLY|File::TRUNC|File::CREAT|File::BINARY) do |f|
  p f.binmode?
  p f.external_encoding
end
#=> false
#=> nil

Further inspecting File::BINARY reveals that it has a value of zero:

File::BINARY #=> 0

So it's no surprise that OR-ing it doesn't do anything.

I've tried various Ruby versions from 1.9.3 to 2.7.0 and all showed the above behavior. (I'm on macOS if that matters)

I'm aware that I can achieve the desired result by using a string mode or by passing binary: true. But since Ruby accepts mode to be given as an integer, there should be a (working) "b" equivalent.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0