Issues with pack/write on WinXP compared to Linux


#1

I’m sure that this has to do with CR/LF on DOS/Windows filesystems,
but I’m not sure how to fix:

File.open(‘test’, ‘w’) do |file|
file.write([10].pack(‘n’)) #=> 2 [bytes]
end

On Linux, the file comes out as having 2 bytes (as expected):

% ls -l test
-rw-rw-r-- 1 jamesm eng 2 Mar 23 11:38 test
% od -h test
0000000 0a00
0000002

On WinXP it has 3 bytes (BTW, write still returns 2 [bytes] in irb on
WinXP):

bash-2.05a$ ls -l test
-rw-r–r-- 1 Administ None 3 Mar 23 11:40 test
bash-2.05a$ od -h test
0000000 0d00 000a
0000003

This does not happen when writing out another number (say 11). Again,
it’s probably a CR/LF deal, but I don’t know how to remedy. Thanks in
advance…


#2

unknown wrote:

I’m sure that this has to do with CR/LF on DOS/Windows filesystems,
but I’m not sure how to fix:

File.open(‘test’, ‘w’) do |file|
file.write([10].pack(‘n’)) #=> 2 [bytes]
end

File.open(‘test’, ‘wb’) do |file|


#3

On Mar 23, 11:56 am, Tim H. removed_email_address@domain.invalid wrote:

File.open(‘test’, ‘wb’) do |file|

Excellent - I knew it was something simple. This was my first binary
and DOS/Windows project in Ruby… Thanks!


#4

On Sat, 24 Mar 2007 removed_email_address@domain.invalid wrote:

I’m sure that this has to do with CR/LF on DOS/Windows filesystems,
but I’m not sure how to fix:

File.open(‘test’, ‘w’) do |file|
^
^
^
wb

-a