Hi Shin, all,

I picked the message below from my email backlog. Was a solution found to this? My understanding is that the mode text/binary of a file is selected during opening, so there's little you can do about it.

We could detect whether the file is incapable of binary data by calling isatty() and refusing to print binary data if that is true. This is what e.g. gzip does on some Linuxen.


Andrei

On 5/27/10 14:08 PDT, Shin Fujishiro wrote:
Should File.rawWrite() write data to file in binary mode?  Or should it
just transparently call fwrite() as documented?

I saw a D user who had trouble writing binary data to stdout on Windows.
Every occurrence of 0x0A was translated to 0x0D 0x0A even he used
stdout.rawWrite() -- because stdout was opened in text mode.

Try this:
--------------------
import std.stdio;
void main()
{
     ubyte[] data = [ 0x9, 0xA, 0xB ];
     stdout.rawWrite(data);
}
--------------------
On Windows, this program writes [ 0x9, 0xD, 0xA, 0xB ].

I think File.rawWrite() should always write data in binary mode
regardless of which mode is set.

What do you think?


Shin
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to