First guess:

File.open(fn, "rb") do |f|

cheers

Simon

Karl von Laudermann wrote:
> I'm trying to write a tiny Ruby program that will print the ascii
> values of all characters in a text file. I'm doing this to help debug a
> bash script, which runs under Cygwin on Windows, that makes changes to
> a text file, but I suspect isn't adding carriage returns before each
> line feed. My Ruby program looks like this:
> 
> --------------
> fn = ARGV[0]
> count = 0
> 
> File.open(fn, "r") do |f|
>     f.each_byte do |ch|
>         print "#{ch} "
>         count += 1
>     end
> end
> 
> puts
> puts "Count = #{count}"
> -------------
> 
> When I run it on a small text file that looks like this...
> 
> -------------
> hello
> world
> -------------
> 
> ....I get the following output:
> 
> -------------
> 104 101 108 108 111 10 119 111 114 108 100
> Count = 11
> -------------
> 
> However, since I'm creating this text file in Windows Notepad, I know
> that there should be a carriage return before the line feed, and the
> output *should* actually be:
> 
> -------------
> 104 101 108 108 111 13 10 119 111 114 108 100
> Count = 12
> -------------
> 
> Note the 13 (CR) before the 10 (LF).
> 
> If I use Windows to look at the file properties, it confirms that the
> file is actually 12 bytes in size. If I add more line breaks, the file
> size increases by two for each one, while the "Count" value in the Ruby
> script's output increases by only one byte for each, and no byte of
> value 13 is ever displayed.
> 
> How can I get Ruby to actually read carriage return characters from a
> file?
> 
> 
>