Wolfgang Jeltsch wrote:
Both GHC and Hugs provide openFileEx, which allows files to be read in binary mode (without EOL/EOF translations).
So we have portable binary I/O, don't we?
By the way, does one still read characters rather than bytes even if using openFileEx?
openFileEx returns a Handle just like openFile, and functions such as hGetChar return a Char regardless of where the Handle came from. OTOH, those "Char"s are still just octets stored in an oversized container.
Is it guaranteed that one character corresponds to one byte when using openFileEx?
The report says almost nothing about the semantics of I/O. AFAICT, an implementation could write the data in EBCDIC without violating the letter of the report. OTOH, existing implementations (at least GHC and Hugs) currently read and write "8-bit binary", i.e. characters 0-255 get read and written "as-is" and anything else breaks, and changing that would probably break a fair amount of existing code. -- Glynn Clements <glynn.clements@virgin.net>