Bug in String#unpack on windows or?

I am trying to save attachment(s) from mail read with net/imap.
Attachment is a tif file.

att = imap.fetch(msgID, “BODY[2]”)[0].attr[“BODY[2]”].unpack(‘m’)
File.new(‘att.tif’,‘w+’).write(att)

I tried it on linux and it works withouth glitch, but on windows every
LF (x0A) character is replaced with CRLF sequence. Needless to say file
is unreadable.

Is this a bug or am I missing something?

Thank you

TheR

Damjan R. wrote:

Is this a bug or am I missing something?
Try File.new(‘att.tif’,‘wb+’).write(att). From memory, the ‘b’ in ‘wb+’
turns off newline conversion.

Le 13 juin à 15:20, Alex Y. a écrit :

Damjan R. wrote:

Is this a bug or am I missing something?

Try File.new(‘att.tif’,‘wb+’).write(att). From memory, the ‘b’ in ‘wb+’
turns off newline conversion.

Yep. From the PickAxe :

Mode Meaning
r Read-only, starts at beginning of file (default mode).
r+ Read/write, starts at beginning of file.
w Write-only, truncates an existing file to zero length or creates
a new file for writing.
w+ Read/write, truncates existing file to zero length or creates a
new file for reading and writing.
a Write-only, starts at end of file if file exists ; otherwise
creates a new file for writing.
a+ Read/write, starts at end of file if file exists ; otherwise
creates a new file for reading and writing.
b (DOS/Windows only) Binary file mode (may appear with any of the
key letters listed above).

I’d add that b has no effect whatsoever on other OSes. (In other words,
you may leave “wb+” and stay platform independent.)

Fred

On 13.06.2007 15:28, F. Senault wrote:

Mode Meaning
b (DOS/Windows only) Binary file mode (may appear with any of the
key letters listed above).

I’d add that b has no effect whatsoever on other OSes. (In other words,
you may leave “wb+” and stay platform independent.)

That’s what I would do for binary files. It also helps documenting.

Kind regards

robert

Yep. Thats it. Thank you guys.

by
TheR