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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs