Actions
Bug #21691
openOn 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
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