Hi,
I am having trouble reading values from an existing (or maybe not yet
exisiting) binary file:
My target is to open a binary file for reading and writing (if it does not
exisit it should be created).
If the file was not yes existing I'd like to fill it with binary data to a
certain predefined size.
Later on I'd like to position my file position, and read and write whatever
I like.
The following piece does not work as intended:
  require 'pp'
  UNDER_UNIX = CONFIG['target_os'].to_s.index('linux')!=nil
  filename='foo.bin'
  size=1024
  dont_write=FileTest.exists?(filename) && File.stat(filename).size==size
  begin
       fd=File.open(filename,"ab+")
       fd.binmode unless UNDER_UNIX          # assuming !UNIX=WINDOWS
  rescue => e
       pp e
       fd=File.open(filename,"wb+")
       puts "opened #{filename} with 'wib+'"
  end
  fd.sync=true
  fd.seek(0)
  unless dont_write
      bin_data = [0].pack('c')*(size)
      fd.write(bin_data)
      # OK now I really have a file of size 1024 with a binay 0 contents
  end
   ###.... then sometime later using the same file descriptor (fd) :
    requestes_stream_position = 900
    fd.pos=(requestes_stream_position)
    p "tell=#{fd.tell}"
    # Now please read 30 binary 0s into a binary string
    bin_value=fd.read(30)
    #### I ASSUMED THAT bin_value now is a "binary string of size 30", but
unfortunately it is nil !!!
Thanks in adcance,
C.
 to find out what is going wrong under the hood.
 to find out what is going wrong under the hood.