Project

General

Profile

Actions

Bug #21691

open

On Windows some of binary read functions of IO are not functional

Bug #21691: On Windows some of binary read functions of IO are not functional

Added by YO4 (Yoshinao Muramatsu) about 2 hours ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:123829]

Description

When using the binary read method of IO on a file containing “\r\n”, it should read “\r”, but some methods do not function correctly on Windows.

File.binwrite("crlf.txt", "\r\n")

methods = {
  readn: proc { |f| f.read(1) },
  getbyte: proc { |f| f.getbyte.chr },
  readbyte: proc { |f| f.readbyte.chr },
  readpartial: proc { |f| f.readpartial(1) },
  read_nonblock: proc { |f| f.read_nonblock(1) },
  sysread: proc { |f| f.sysread(1) },
  pread: proc { |f| f.pread(1, 0) },
}

def test(mode, name, method)
  open("crlf.txt", "r") do |f|
    p [mode, name, method.call(f)]
  end
end

methods.each { |k, v| test("r", k, v) }
methods.each { |k, v| test("rt", k, v) }

results:

["r", :readn, "\r"]
["r", :getbyte, "\n"] # => shold be "\r"
["r", :readbyte, "\n"] # => shold be "\r"
["r", :readpartial, "\n"] # => shold be "\r"
["r", :read_nonblock, "\n"] # => shold be "\r"
["r", :sysread, "\n"] # => shold be "\r"
["r", :pread, "\r"]
["rt", :readn, "\r"]
["rt", :getbyte, "\n"] # => shold be "\r"
["rt", :readbyte, "\n"] # => shold be "\r"
["rt", :readpartial, "\n"] # => shold be "\r"
["rt", :read_nonblock, "\n"] # => shold be "\r"
["rt", :sysread, "\n"] # => shold be "\r"
["rt", :pread, "\r"]

On Ubuntu in WSL, all returns are “\r”.

No data to display

Actions

Also available in: PDF Atom